apiVersion: v1 kind: Secret metadata: name: mysql-secret type: Opaque data: # Encoded base64 string required by kubernetes # echo -n '' | base64 mysql-root-password: cm9vdA== --- apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql-db-deployment labels: app: mysql service: db spec: serviceName: mysql-db-service replicas: 1 selector: matchLabels: app: mysql service: db template: metadata: labels: app: mysql service: db spec: containers: - name: mysql image: mysql:9 resources: requests: memory: "512Mi" cpu: "1000m" limits: memory: "2048Mi" cpu: "2000m" ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: mysql-root-password volumeMounts: - name: mysql-data mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: mysql-db-service spec: type: ClusterIP selector: app: mysql service: db ports: - protocol: TCP port: 3306 targetPort: 3306 --- apiVersion: v1 kind: ConfigMap metadata: name: mysql-configmap data: mysql-server: mysql-db-service --- apiVersion: apps/v1 kind: Deployment metadata: name: mysql-phpmyadmin-deployment labels: app: mysql service: phpmyadmin spec: replicas: 2 selector: matchLabels: app: mysql service: phpmyadmin template: metadata: labels: app: mysql service: phpmyadmin spec: containers: - name: phpmyadmin image: phpmyadmin:5.2 resources: limits: memory: "256Mi" cpu: "1000m" ports: - containerPort: 80 env: - name: PMA_HOST valueFrom: configMapKeyRef: name: mysql-configmap key: mysql-server - name: PMA_USER value: root - name: PMA_PASSWORD valueFrom: secretKeyRef: name: mysql-secret key: mysql-root-password --- apiVersion: v1 kind: Service metadata: name: mysql-phpmyadmin-service spec: type: ClusterIP selector: app: mysql service: phpmyadmin ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: mysql-phpmyadmin-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx rules: - http: paths: - path: / pathType: Prefix backend: service: name: mysql-phpmyadmin-service port: number: 80