apiVersion: v1 kind: Secret metadata: name: chap-secret type: "kubernetes.io/iscsi-chap" data: node.session.auth.username_in: bXl1c2VyLW91dGdvaW5n node.session.auth.password_in: bXlwYXNzMg== node.session.auth.username: bXl1c2VyLWluY29taW5n node.session.auth.password: bXlwYXNzMQ== --- apiVersion: apps/v1 kind: Deployment metadata: name: minio spec: selector: matchLabels: app: minio # has to match .spec.template.metadata.labels strategy: type: Recreate template: metadata: labels: app: minio #This label is used as a selector in Service definition spec: containers: - name: minio image: minio/minio:RELEASE.2020-10-18T21-54-12Z args: - server - /data env: - name: MINIO_ACCESS_KEY value: "minio" - name: MINIO_SECRET_KEY value: "minio123" ports: - containerPort: 9000 volumeMounts: - mountPath: "/data" name: iscsivol tolerations: - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 30 - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 30 volumes: - name: iscsivol iscsi: targetPortal: 192.168.178.199 iqn: iqn.2020-12.block-storage:lun1 lun: 1 fsType: ext4 readOnly: false chapAuthDiscovery: false chapAuthSession: true secretRef: name: chap-secret --- apiVersion: v1 kind: Service metadata: name: minio spec: type: NodePort ports: - port: 9000 targetPort: 9000 nodePort: 30013 protocol: TCP selector: # Looks for labels `app:minio` in the namespace and applies the spec app: minio --- apiVersion: v1 kind: Service metadata: name: consul labels: app: consul spec: type: NodePort ports: - port: 8500 targetPort: 8500 nodePort: 30014 protocol: TCP selector: # Looks for labels `app:consul` in the namespace and applies the spec app: consul --- apiVersion: apps/v1 kind: StatefulSet metadata: name: consul spec: selector: matchLabels: app: consul # has to match .spec.template.metadata.labels serviceName: "consul" replicas: 3 template: metadata: labels: app: consul # has to match .spec.selector.matchLabels spec: terminationGracePeriodSeconds: 10 containers: - name: consul image: consul:1.9 args: - agent - -ui - -data-dir - /consul/data - -server - -client - 0.0.0.0 - -retry-join - consul-0.consul - -retry-join - consul-1.consul - -retry-join - consul-2.consul - -bootstrap-expect=3 ports: - containerPort: 8500 name: web --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql spec: selector: matchLabels: app: mysql # has to match .spec.template.metadata.labels serviceName: "mysql" replicas: 3 template: metadata: labels: app: mysql # has to match .spec.selector.matchLabels spec: terminationGracePeriodSeconds: 10 containers: - name: mysql image: jnidzwetzki/mysql-ha-cloud:latest ports: - containerPort: 3306 name: mysql - containerPort: 6032 name: sqlproxy env: - name: CONSUL_BIND_INTERFACE value: eth0 - name: CONSUL_BOOTSTRAP_SERVER value: "consul-0.consul" - name: MINIO_ACCESS_KEY value: minio - name: MINIO_SECRET_KEY value: minio123 - name: MINIO_URL value: http://minio:9000 - name: MCM_BIND_INTERFACE value: eth0 - name: MYSQL_ROOT_PASSWORD value: verysecret123 - name: MYSQL_BACKUP_USER value: backup_user - name: MYSQL_BACKUP_PASSWORD value: backup_secret - name: MYSQL_REPLICATION_USER value: replication_user - name: MYSQL_REPLICATION_PASSWORD value: replication_secret - name: MYSQL_APPLICATION_USER value: mysql_user - name: MYSQL_APPLICATION_PASSWORD value: mysql_secret --- apiVersion: v1 kind: Service metadata: name: mysql labels: app: mysql spec: type: NodePort ports: - port: 3306 targetPort: 3306 nodePort: 30015 protocol: TCP name: mysql - port: 6032 targetPort: 6032 nodePort: 30016 protocol: TCP name: mysqlproxy selector: # Looks for labels `app:mysql` in the namespace and applies the spec app: mysql