Last active
          December 12, 2021 09:16 
        
      - 
      
 - 
        
Save ssube/b5f9a6ab1f5fa3341c1b5f49867c8654 to your computer and use it in GitHub Desktop.  
    kubernetes storage & monitoring (influx, prometheus, rook)
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 2.5: prometheus cluster | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: prometheus | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| name: prometheus | |
| rules: | |
| - apiGroups: [""] | |
| resources: | |
| - nodes | |
| - services | |
| - endpoints | |
| - pods | |
| verbs: ["get", "list", "watch"] | |
| - apiGroups: [""] | |
| resources: | |
| - configmaps | |
| verbs: ["get"] | |
| - apiGroups: [""] | |
| resources: | |
| - nodes/metrics | |
| verbs: ["get"] | |
| - nonResourceURLs: ["/metrics"] | |
| verbs: ["get"] | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| name: prometheus | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: prometheus | |
| subjects: | |
| - kind: ServiceAccount | |
| name: prometheus | |
| namespace: default | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: Prometheus | |
| metadata: | |
| labels: | |
| prometheus: k8s | |
| name: k8s | |
| spec: | |
| baseImage: quay.io/prometheus/prometheus | |
| # nodeSelector: | |
| # beta.kubernetes.io/os: linux | |
| remoteRead: | |
| - url: http://prometheus-influxdb.default.svc:8086/api/v1/prom/read?db=k8s-prometheus | |
| remoteWrite: | |
| - url: http://prometheus-influxdb.default.svc:8086/api/v1/prom/write?db=k8s-prometheus | |
| replicas: 2 | |
| resources: | |
| requests: | |
| memory: 400Mi | |
| ruleSelector: | |
| matchLabels: | |
| prometheus: k8s | |
| serviceAccountName: prometheus | |
| serviceMonitorSelector: | |
| matchExpressions: | |
| - key: k8s-app | |
| operator: Exists | |
| version: v2.2.1 | |
| --- | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| name: prometheus | |
| spec: | |
| type: NodePort | |
| ports: | |
| - name: web | |
| nodePort: 30900 | |
| port: 9090 | |
| protocol: TCP | |
| targetPort: web | |
| selector: | |
| prometheus: k8s | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 2.2: datastore for prometheus | |
| apiVersion: v1 | |
| kind: PersistentVolumeClaim | |
| metadata: | |
| name: prometheus-influxdb | |
| labels: | |
| k8s-app: prometheus | |
| spec: | |
| storageClassName: rook-durable | |
| accessModes: | |
| - ReadWriteOnce | |
| resources: | |
| requests: | |
| storage: 16Gi | |
| volumeMode: Block | |
| --- | |
| apiVersion: apps/v1 | |
| kind: Deployment | |
| metadata: | |
| name: prometheus-influxdb | |
| labels: | |
| k8s-app: prometheus-influxdb | |
| spec: | |
| replicas: 1 | |
| selector: | |
| matchLabels: | |
| k8s-app: prometheus-influxdb | |
| template: | |
| metadata: | |
| labels: | |
| task: prometheus | |
| k8s-app: prometheus-influxdb | |
| spec: | |
| containers: | |
| - name: influxdb | |
| image: influxdb:1.5 | |
| env: | |
| - name: INFLUXDB_BIND_ADDRESS | |
| value: "0.0.0.0:8088" | |
| ports: | |
| - containerPort: 8086 | |
| name: http | |
| - containerPort: 8088 | |
| name: backup | |
| volumeMounts: | |
| - mountPath: /var/lib/influxdb | |
| name: influxdb-storage | |
| volumes: | |
| - name: influxdb-storage | |
| persistentVolumeClaim: | |
| claimName: prometheus-influxdb | |
| --- | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| name: prometheus-influxdb | |
| spec: | |
| ports: | |
| - name: http | |
| port: 8086 | |
| targetPort: http | |
| - name: backup | |
| port: 8088 | |
| targetPort: backup | |
| selector: | |
| k8s-app: prometheus-influxdb | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 2.3: services to monitor | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: prometheus | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| name: prometheus | |
| rules: | |
| - apiGroups: [""] | |
| resources: | |
| - nodes | |
| - services | |
| - endpoints | |
| - pods | |
| verbs: ["get", "list", "watch"] | |
| - apiGroups: [""] | |
| resources: | |
| - configmaps | |
| verbs: ["get"] | |
| - apiGroups: [""] | |
| resources: | |
| - nodes/metrics | |
| verbs: ["get"] | |
| - nonResourceURLs: ["/metrics"] | |
| verbs: ["get"] | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| name: prometheus | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: prometheus | |
| subjects: | |
| - kind: ServiceAccount | |
| name: prometheus | |
| namespace: default | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: Prometheus | |
| metadata: | |
| labels: | |
| prometheus: k8s | |
| name: k8s | |
| spec: | |
| baseImage: quay.io/prometheus/prometheus | |
| # nodeSelector: | |
| # beta.kubernetes.io/os: linux | |
| remoteRead: | |
| --- | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| namespace: kube-system | |
| name: kube-scheduler-prometheus-discovery | |
| labels: | |
| k8s-app: kube-scheduler | |
| spec: | |
| selector: | |
| k8s-app: kube-scheduler | |
| type: ClusterIP | |
| clusterIP: None | |
| ports: | |
| - name: http-metrics | |
| port: 10251 | |
| targetPort: 10251 | |
| protocol: TCP | |
| --- | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| namespace: kube-system | |
| name: kube-controller-manager-prometheus-discovery | |
| labels: | |
| k8s-app: kube-controller-manager | |
| spec: | |
| selector: | |
| k8s-app: kube-controller-manager | |
| type: ClusterIP | |
| clusterIP: None | |
| ports: | |
| - name: http-metrics | |
| port: 10252 | |
| targetPort: 10252 | |
| protocol: TCP | |
| --- | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: kube-state-metrics | |
| namespace: kube-system | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1 | |
| # kubernetes versions before 1.8.0 should use rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| name: kube-state-metrics | |
| rules: | |
| - apiGroups: [""] | |
| resources: | |
| - configmaps | |
| - secrets | |
| - nodes | |
| - pods | |
| - services | |
| - resourcequotas | |
| - replicationcontrollers | |
| - limitranges | |
| - persistentvolumeclaims | |
| - persistentvolumes | |
| - namespaces | |
| - endpoints | |
| verbs: ["list", "watch"] | |
| - apiGroups: ["extensions"] | |
| resources: | |
| - daemonsets | |
| - deployments | |
| - replicasets | |
| verbs: ["list", "watch"] | |
| - apiGroups: ["apps"] | |
| resources: | |
| - statefulsets | |
| verbs: ["list", "watch"] | |
| - apiGroups: ["batch"] | |
| resources: | |
| - cronjobs | |
| - jobs | |
| verbs: ["list", "watch"] | |
| - apiGroups: ["autoscaling"] | |
| resources: | |
| - horizontalpodautoscalers | |
| verbs: ["list", "watch"] | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1 | |
| # kubernetes versions before 1.8.0 should use rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| name: kube-state-metrics | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: kube-state-metrics | |
| subjects: | |
| - kind: ServiceAccount | |
| name: kube-state-metrics | |
| namespace: kube-system | |
| --- | |
| apiVersion: extensions/v1beta1 | |
| kind: Deployment | |
| metadata: | |
| name: kube-state-metrics | |
| spec: | |
| replicas: 1 | |
| selector: | |
| matchLabels: | |
| k8s-app: kube-state-metrics | |
| template: | |
| metadata: | |
| labels: | |
| app: kube-state-metrics | |
| k8s-app: kube-state-metrics | |
| spec: | |
| serviceAccountName: kube-state-metrics | |
| securityContext: | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| containers: | |
| - name: kube-rbac-proxy-main | |
| image: quay.io/brancz/kube-rbac-proxy:v0.2.0 | |
| args: | |
| - "--secure-listen-address=:8443" | |
| - "--upstream=http://127.0.0.1:8081/" | |
| ports: | |
| - name: https-main | |
| containerPort: 8443 | |
| resources: | |
| requests: | |
| memory: 20Mi | |
| cpu: 10m | |
| limits: | |
| memory: 40Mi | |
| cpu: 20m | |
| - name: kube-rbac-proxy-self | |
| image: quay.io/brancz/kube-rbac-proxy:v0.2.0 | |
| args: | |
| - "--secure-listen-address=:9443" | |
| - "--upstream=http://127.0.0.1:8082/" | |
| ports: | |
| - name: https-self | |
| containerPort: 9443 | |
| resources: | |
| requests: | |
| memory: 20Mi | |
| cpu: 10m | |
| limits: | |
| memory: 40Mi | |
| cpu: 20m | |
| - name: kube-state-metrics | |
| image: quay.io/coreos/kube-state-metrics:v1.2.0 | |
| args: | |
| - "--host=127.0.0.1" | |
| - "--port=8081" | |
| - "--telemetry-host=127.0.0.1" | |
| - "--telemetry-port=8082" | |
| - name: addon-resizer | |
| image: gcr.io/google_containers/addon-resizer:1.0 | |
| resources: | |
| limits: | |
| cpu: 100m | |
| memory: 30Mi | |
| requests: | |
| cpu: 100m | |
| memory: 30Mi | |
| env: | |
| - name: MY_POD_NAME | |
| valueFrom: | |
| fieldRef: | |
| fieldPath: metadata.name | |
| - name: MY_POD_NAMESPACE | |
| valueFrom: | |
| fieldRef: | |
| fieldPath: metadata.namespace | |
| command: | |
| - /pod_nanny | |
| - --container=kube-state-metrics | |
| - --cpu=100m | |
| - --extra-cpu=2m | |
| - --memory=150Mi | |
| - --extra-memory=30Mi | |
| - --threshold=5 | |
| - --deployment=kube-state-metrics | |
| --- | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| labels: | |
| app: kube-state-metrics | |
| k8s-app: kube-state-metrics | |
| name: kube-state-metrics | |
| spec: | |
| clusterIP: None | |
| ports: | |
| - name: https-main | |
| port: 8443 | |
| targetPort: https-main | |
| protocol: TCP | |
| - name: https-self | |
| port: 9443 | |
| targetPort: https-self | |
| protocol: TCP | |
| selector: | |
| app: kube-state-metrics | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| labels: | |
| k8s-app: apiserver | |
| name: kube-apiserver | |
| spec: | |
| endpoints: | |
| - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| interval: 30s | |
| port: https | |
| scheme: https | |
| tlsConfig: | |
| caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | |
| serverName: kubernetes | |
| jobLabel: component | |
| namespaceSelector: | |
| matchNames: | |
| - default | |
| selector: | |
| matchLabels: | |
| component: apiserver | |
| provider: kubernetes | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| labels: | |
| k8s-app: kubelet | |
| name: kubelet | |
| spec: | |
| endpoints: | |
| - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| interval: 30s | |
| port: https-metrics | |
| scheme: https | |
| tlsConfig: | |
| insecureSkipVerify: true | |
| - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| honorLabels: true | |
| interval: 30s | |
| path: /metrics/cadvisor | |
| port: https-metrics | |
| scheme: https | |
| tlsConfig: | |
| insecureSkipVerify: true | |
| jobLabel: k8s-app | |
| namespaceSelector: | |
| matchNames: | |
| - kube-system | |
| selector: | |
| matchLabels: | |
| k8s-app: kubelet | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| labels: | |
| k8s-app: kube-controller-manager | |
| name: kube-controller-manager | |
| spec: | |
| endpoints: | |
| - interval: 30s | |
| port: http-metrics | |
| jobLabel: k8s-app | |
| namespaceSelector: | |
| matchNames: | |
| - kube-system | |
| selector: | |
| matchLabels: | |
| k8s-app: kube-controller-manager | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| labels: | |
| k8s-app: kube-scheduler | |
| name: kube-scheduler | |
| spec: | |
| endpoints: | |
| - interval: 30s | |
| port: http-metrics | |
| jobLabel: k8s-app | |
| namespaceSelector: | |
| matchNames: | |
| - kube-system | |
| selector: | |
| matchLabels: | |
| k8s-app: kube-scheduler | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| labels: | |
| k8s-app: kube-state-metrics | |
| name: kube-state-metrics | |
| spec: | |
| endpoints: | |
| - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| honorLabels: true | |
| interval: 30s | |
| port: https-main | |
| scheme: https | |
| tlsConfig: | |
| insecureSkipVerify: true | |
| - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| interval: 30s | |
| port: https-self | |
| scheme: https | |
| tlsConfig: | |
| insecureSkipVerify: true | |
| jobLabel: k8s-app | |
| namespaceSelector: | |
| matchNames: | |
| - default | |
| - isolex | |
| selector: | |
| matchLabels: | |
| k8s-app: kube-state-metrics | |
| serviceAccount: prometheus | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 2.4: prometheus node exporter | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: node-exporter | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| name: node-exporter | |
| rules: | |
| - apiGroups: ["authentication.k8s.io"] | |
| resources: ["tokenreviews"] | |
| verbs: ["create", "get", "list"] | |
| - apiGroups: ["authorization.k8s.io"] | |
| resources: ["subjectaccessreviews"] | |
| verbs: ["create", "get", "list"] | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| name: node-exporter | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: node-exporter | |
| subjects: | |
| - kind: ServiceAccount | |
| name: node-exporter | |
| namespace: default | |
| --- | |
| apiVersion: apps/v1 | |
| kind: DaemonSet | |
| metadata: | |
| name: node-exporter | |
| spec: | |
| updateStrategy: | |
| rollingUpdate: | |
| maxUnavailable: 1 | |
| type: RollingUpdate | |
| selector: | |
| matchLabels: | |
| k8s-app: node-exporter | |
| template: | |
| metadata: | |
| labels: | |
| app: node-exporter | |
| k8s-app: node-exporter | |
| name: node-exporter | |
| spec: | |
| serviceAccountName: node-exporter | |
| securityContext: | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| hostNetwork: true | |
| hostPID: true | |
| containers: | |
| - image: quay.io/prometheus/node-exporter:v0.15.2 | |
| args: | |
| - "--web.listen-address=127.0.0.1:9101" | |
| - "--path.procfs=/host/proc" | |
| - "--path.sysfs=/host/sys" | |
| name: node-exporter | |
| resources: | |
| requests: | |
| memory: 30Mi | |
| cpu: 100m | |
| limits: | |
| memory: 50Mi | |
| cpu: 200m | |
| volumeMounts: | |
| - name: proc | |
| readOnly: true | |
| mountPath: /host/proc | |
| - name: sys | |
| readOnly: true | |
| mountPath: /host/sys | |
| - name: kube-rbac-proxy | |
| image: quay.io/brancz/kube-rbac-proxy:v0.2.0 | |
| args: | |
| - "--secure-listen-address=:9100" | |
| - "--upstream=http://127.0.0.1:9101/" | |
| ports: | |
| - containerPort: 9100 | |
| hostPort: 9100 | |
| name: https | |
| resources: | |
| requests: | |
| memory: 20Mi | |
| cpu: 10m | |
| limits: | |
| memory: 40Mi | |
| cpu: 20m | |
| tolerations: | |
| - effect: NoSchedule | |
| operator: Exists | |
| volumes: | |
| - name: proc | |
| hostPath: | |
| path: /proc | |
| - name: sys | |
| hostPath: | |
| path: /sys | |
| --- | |
| apiVersion: v1 | |
| kind: Service | |
| metadata: | |
| labels: | |
| app: node-exporter | |
| k8s-app: node-exporter | |
| name: node-exporter | |
| spec: | |
| type: ClusterIP | |
| clusterIP: None | |
| ports: | |
| - name: https | |
| port: 9100 | |
| protocol: TCP | |
| selector: | |
| app: node-exporter | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| labels: | |
| k8s-app: node-exporter | |
| name: node-exporter | |
| spec: | |
| endpoints: | |
| - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token | |
| interval: 30s | |
| port: https | |
| scheme: https | |
| tlsConfig: | |
| insecureSkipVerify: true | |
| jobLabel: k8s-app | |
| namespaceSelector: | |
| matchNames: | |
| - default | |
| selector: | |
| matchLabels: | |
| k8s-app: node-exporter | |
| serviceAccount: prometheus | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 2.1: prometheus operator | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRoleBinding | |
| metadata: | |
| name: prometheus-operator | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: prometheus-operator | |
| subjects: | |
| - kind: ServiceAccount | |
| name: prometheus-operator | |
| namespace: default | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| name: prometheus-operator | |
| rules: | |
| - apiGroups: | |
| - extensions | |
| resources: | |
| - thirdpartyresources | |
| verbs: | |
| - "*" | |
| - apiGroups: | |
| - apiextensions.k8s.io | |
| resources: | |
| - customresourcedefinitions | |
| verbs: | |
| - "*" | |
| - apiGroups: | |
| - monitoring.coreos.com | |
| resources: | |
| - alertmanagers | |
| - prometheuses | |
| - prometheuses/finalizers | |
| - alertmanagers/finalizers | |
| - servicemonitors | |
| - rulefiles | |
| verbs: | |
| - "*" | |
| - apiGroups: | |
| - apps | |
| resources: | |
| - statefulsets | |
| verbs: ["*"] | |
| - apiGroups: [""] | |
| resources: | |
| - configmaps | |
| - secrets | |
| verbs: ["*"] | |
| - apiGroups: [""] | |
| resources: | |
| - pods | |
| verbs: ["list", "delete"] | |
| - apiGroups: [""] | |
| resources: | |
| - services | |
| - endpoints | |
| verbs: ["get", "create", "update"] | |
| - apiGroups: [""] | |
| resources: | |
| - nodes | |
| - namespaces | |
| verbs: ["list", "watch"] | |
| --- | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: prometheus-operator | |
| --- | |
| apiVersion: apps/v1 | |
| kind: Deployment | |
| metadata: | |
| labels: | |
| k8s-app: prometheus-operator | |
| name: prometheus-operator | |
| spec: | |
| replicas: 1 | |
| selector: | |
| matchLabels: | |
| k8s-app: prometheus-operator | |
| template: | |
| metadata: | |
| labels: | |
| k8s-app: prometheus-operator | |
| spec: | |
| containers: | |
| - args: | |
| - --kubelet-service=kube-system/kubelet | |
| - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1 | |
| image: quay.io/coreos/prometheus-operator:v0.19.0 | |
| name: prometheus-operator | |
| ports: | |
| - containerPort: 8080 | |
| name: http | |
| resources: | |
| limits: | |
| cpu: 200m | |
| memory: 100Mi | |
| requests: | |
| cpu: 100m | |
| memory: 50Mi | |
| securityContext: | |
| runAsNonRoot: true | |
| runAsUser: 65534 | |
| serviceAccountName: prometheus-operator | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 1.2: rook ceph cluster | |
| apiVersion: rook.io/v1alpha1 | |
| kind: Cluster | |
| metadata: | |
| name: rook | |
| namespace: rook | |
| spec: | |
| backend: ceph | |
| dashboard: | |
| enabled: true | |
| dataDirHostPath: /data/rook | |
| hostNetwork: false | |
| monCount: 3 | |
| resources: | |
| placement: | |
| all: | |
| nodeAffinity: | |
| requiredDuringSchedulingIgnoredDuringExecution: | |
| nodeSelectorTerms: | |
| - matchExpressions: | |
| - key: zone | |
| operator: In | |
| values: | |
| - maple | |
| storage: | |
| useAllNodes: false | |
| useAllDevices: false | |
| storeConfig: | |
| databaseSizeMB: 1024 | |
| journalSizeMB: 1024 | |
| storeType: bluestore | |
| nodes: | |
| - name: game-1 | |
| directories: | |
| - path: /rook-dev/ssd-1 | |
| - name: game-2 | |
| directories: | |
| - path: /rook-dev/ssd-1 | |
| - name: iron-1 | |
| directories: | |
| - path: /rook-dev/hdd-1 | |
| - path: /rook-dev/hdd-2 | |
| - name: iron-2 | |
| directories: | |
| - path: /rook-dev/hdd-1 | |
| - path: /rook-dev/hdd-2 | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 1.1: rook operator | |
| apiVersion: v1 | |
| kind: Namespace | |
| metadata: | |
| name: rook-system | |
| --- | |
| apiVersion: v1 | |
| kind: Namespace | |
| metadata: | |
| name: rook | |
| --- | |
| apiVersion: apiextensions.k8s.io/v1beta1 | |
| kind: CustomResourceDefinition | |
| metadata: | |
| name: clusters.rook.io | |
| spec: | |
| group: rook.io | |
| names: | |
| kind: Cluster | |
| listKind: ClusterList | |
| plural: clusters | |
| singular: cluster | |
| scope: Namespaced | |
| version: v1alpha1 | |
| --- | |
| apiVersion: apiextensions.k8s.io/v1beta1 | |
| kind: CustomResourceDefinition | |
| metadata: | |
| name: filesystems.rook.io | |
| spec: | |
| group: rook.io | |
| names: | |
| kind: Filesystem | |
| listKind: FilesystemList | |
| plural: filesystems | |
| singular: filesystem | |
| scope: Namespaced | |
| version: v1alpha1 | |
| --- | |
| apiVersion: apiextensions.k8s.io/v1beta1 | |
| kind: CustomResourceDefinition | |
| metadata: | |
| name: objectstores.rook.io | |
| spec: | |
| group: rook.io | |
| names: | |
| kind: ObjectStore | |
| listKind: ObjectStoreList | |
| plural: objectstores | |
| singular: objectstore | |
| scope: Namespaced | |
| version: v1alpha1 | |
| --- | |
| apiVersion: apiextensions.k8s.io/v1beta1 | |
| kind: CustomResourceDefinition | |
| metadata: | |
| name: pools.rook.io | |
| spec: | |
| group: rook.io | |
| names: | |
| kind: Pool | |
| listKind: PoolList | |
| plural: pools | |
| singular: pool | |
| scope: Namespaced | |
| version: v1alpha1 | |
| --- | |
| apiVersion: apiextensions.k8s.io/v1beta1 | |
| kind: CustomResourceDefinition | |
| metadata: | |
| name: volumeattachments.rook.io | |
| spec: | |
| group: rook.io | |
| names: | |
| kind: VolumeAttachment | |
| listKind: VolumeAttachmentList | |
| plural: volumeattachments | |
| singular: volumeattachment | |
| scope: Namespaced | |
| version: v1alpha1 | |
| --- | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| kind: ClusterRole | |
| metadata: | |
| name: rook-operator | |
| rules: | |
| - apiGroups: | |
| - "" | |
| resources: | |
| - namespaces | |
| - serviceaccounts | |
| - secrets | |
| - pods | |
| - services | |
| - nodes | |
| - nodes/proxy | |
| - configmaps | |
| - events | |
| - persistentvolumes | |
| - persistentvolumeclaims | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - patch | |
| - create | |
| - update | |
| - delete | |
| - apiGroups: | |
| - extensions | |
| resources: | |
| - deployments | |
| - daemonsets | |
| - replicasets | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - create | |
| - update | |
| - delete | |
| - apiGroups: | |
| - rbac.authorization.k8s.io | |
| resources: | |
| - clusterroles | |
| - clusterrolebindings | |
| - roles | |
| - rolebindings | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - create | |
| - update | |
| - delete | |
| - apiGroups: | |
| - storage.k8s.io | |
| resources: | |
| - storageclasses | |
| verbs: | |
| - get | |
| - list | |
| - watch | |
| - delete | |
| - apiGroups: | |
| - rook.io | |
| resources: | |
| - "*" | |
| verbs: | |
| - "*" | |
| --- | |
| apiVersion: v1 | |
| kind: ServiceAccount | |
| metadata: | |
| name: rook-operator | |
| namespace: rook-system | |
| --- | |
| kind: ClusterRoleBinding | |
| apiVersion: rbac.authorization.k8s.io/v1beta1 | |
| metadata: | |
| name: rook-operator | |
| namespace: rook-system | |
| roleRef: | |
| apiGroup: rbac.authorization.k8s.io | |
| kind: ClusterRole | |
| name: rook-operator | |
| subjects: | |
| - kind: ServiceAccount | |
| name: rook-operator | |
| namespace: rook-system | |
| --- | |
| apiVersion: apps/v1 | |
| kind: Deployment | |
| metadata: | |
| name: rook-operator | |
| namespace: rook-system | |
| labels: | |
| k8s-app: rook-operator | |
| spec: | |
| replicas: 1 | |
| selector: | |
| matchLabels: | |
| k8s-app: rook-operator | |
| template: | |
| metadata: | |
| labels: | |
| k8s-app: rook-operator | |
| spec: | |
| serviceAccountName: rook-operator | |
| containers: | |
| - name: rook-operator | |
| image: rook/rook:master | |
| args: ["operator"] | |
| env: | |
| - name: ROOK_ALLOW_MULTIPLE_FILESYSTEMS | |
| value: "false" | |
| - name: ROOK_MON_HEALTHCHECK_INTERVAL | |
| value: "45s" | |
| - name: ROOK_MON_OUT_TIMEOUT | |
| value: "300s" | |
| - name: NODE_NAME | |
| valueFrom: | |
| fieldRef: | |
| fieldPath: spec.nodeName | |
| - name: POD_NAME | |
| valueFrom: | |
| fieldRef: | |
| fieldPath: metadata.name | |
| - name: POD_NAMESPACE | |
| valueFrom: | |
| fieldRef: | |
| fieldPath: metadata.namespace | |
| --- | |
| apiVersion: monitoring.coreos.com/v1 | |
| kind: ServiceMonitor | |
| metadata: | |
| name: rook-ceph-mgr | |
| labels: | |
| k8s-app: rook | |
| spec: | |
| namespaceSelector: | |
| matchNames: | |
| - rook | |
| selector: | |
| matchLabels: | |
| app: rook-ceph-mgr | |
| rook_cluster: rook | |
| endpoints: | |
| - port: http-metrics | |
| path: /metrics | |
| interval: 5s | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 1.3: rook storage pools & k8s classes | |
| apiVersion: rook.io/v1alpha1 | |
| kind: Pool | |
| metadata: | |
| name: rook-durable | |
| namespace: rook | |
| spec: | |
| crushRoot: hdd | |
| failureDomain: osd | |
| replicated: | |
| size: 3 | |
| --- | |
| apiVersion: rook.io/v1alpha1 | |
| kind: Pool | |
| metadata: | |
| name: rook-mirror | |
| namespace: rook | |
| spec: | |
| crushRoot: ssd | |
| failureDomain: osd | |
| replicated: | |
| size: 2 | |
| --- | |
| apiVersion: storage.k8s.io/v1 | |
| kind: StorageClass | |
| metadata: | |
| name: rook-durable | |
| provisioner: rook.io/block | |
| parameters: | |
| pool: rook-durable | |
| clusterName: rook | |
| --- | |
| apiVersion: storage.k8s.io/v1 | |
| kind: StorageClass | |
| metadata: | |
| name: rook-mirror | |
| provisioner: rook.io/block | |
| parameters: | |
| pool: rook-mirror | |
| clusterName: rook | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | # step 1.4: rook debug tools | |
| apiVersion: v1 | |
| kind: Pod | |
| metadata: | |
| name: rook-ceph-tools | |
| namespace: rook | |
| spec: | |
| dnsPolicy: ClusterFirstWithHostNet | |
| containers: | |
| - name: rook-ceph-tools | |
| image: rook/ceph-toolbox:master | |
| imagePullPolicy: IfNotPresent | |
| env: | |
| - name: ROOK_ADMIN_SECRET | |
| valueFrom: | |
| secretKeyRef: | |
| name: rook-ceph-mon | |
| key: admin-secret | |
| securityContext: | |
| privileged: true | |
| volumeMounts: | |
| - mountPath: /dev | |
| name: dev | |
| - mountPath: /sys/bus | |
| name: sysbus | |
| - mountPath: /lib/modules | |
| name: libmodules | |
| - name: mon-endpoint-volume | |
| mountPath: /etc/rook | |
| hostNetwork: false | |
| volumes: | |
| - name: dev | |
| hostPath: | |
| path: /dev | |
| - name: sysbus | |
| hostPath: | |
| path: /sys/bus | |
| - name: libmodules | |
| hostPath: | |
| path: /lib/modules | |
| - name: mon-endpoint-volume | |
| configMap: | |
| name: rook-ceph-mon-endpoints | |
| items: | |
| - key: data | |
| path: mon-endpoints | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment