diff --git a/mysql/k8s/01_mysql_secrets.yaml b/mysql/k8s/01_mysql_secrets.yaml new file mode 100644 index 0000000..33dfec8 --- /dev/null +++ b/mysql/k8s/01_mysql_secrets.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: mysql-secret +type: Opaque +data: + # Encoded base64 string required by kubernetes + # echo -n '' | base64 + mysql-root-password: cm9vdA== \ No newline at end of file diff --git a/mysql/k8s/02_mysql_statefulset.yaml b/mysql/k8s/02_mysql_statefulset.yaml new file mode 100644 index 0000000..50976b8 --- /dev/null +++ b/mysql/k8s/02_mysql_statefulset.yaml @@ -0,0 +1,46 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mysql-db-deployment + labels: + app: mysql-db +spec: + serviceName: mysql-db-service + replicas: 1 + selector: + matchLabels: + app: mysql-db + template: + metadata: + labels: + app: mysql-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: 1Gi \ No newline at end of file diff --git a/mysql/k8s/03_mysql_service.yaml b/mysql/k8s/03_mysql_service.yaml new file mode 100644 index 0000000..4a0645b --- /dev/null +++ b/mysql/k8s/03_mysql_service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql-db-service +spec: + type: ClusterIP + selector: + app: mysql-db + ports: + - protocol: TCP + port: 3306 + targetPort: 3306 \ No newline at end of file diff --git a/mysql/k8s/04_mysql_config_map.yaml b/mysql/k8s/04_mysql_config_map.yaml new file mode 100644 index 0000000..3849561 --- /dev/null +++ b/mysql/k8s/04_mysql_config_map.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: mysql-configmap +data: + mysql-server: mysql-db-service diff --git a/mysql/k8s/05_phpmyadmin_deployment.yaml b/mysql/k8s/05_phpmyadmin_deployment.yaml new file mode 100644 index 0000000..bbf0958 --- /dev/null +++ b/mysql/k8s/05_phpmyadmin_deployment.yaml @@ -0,0 +1,38 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: mysql-phpmyadmin-deployment + labels: + app: mysql-phpmyadmin +spec: + replicas: 2 + selector: + matchLabels: + app: mysql-phpmyadmin + template: + metadata: + labels: + app: mysql-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 \ No newline at end of file diff --git a/mysql/k8s/06_phpmyadmin_service.yaml b/mysql/k8s/06_phpmyadmin_service.yaml new file mode 100644 index 0000000..7f8546f --- /dev/null +++ b/mysql/k8s/06_phpmyadmin_service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql-phpmyadmin-service + labels: + app: mysql-phpmyadmin +spec: + type: ClusterIP + selector: + app: mysql-phpmyadmin + ports: + - protocol: TCP + port: 80 + targetPort: 80 \ No newline at end of file diff --git a/mysql/k8s/07_phpmyadmin_ingress.yaml b/mysql/k8s/07_phpmyadmin_ingress.yaml new file mode 100644 index 0000000..31fe0e0 --- /dev/null +++ b/mysql/k8s/07_phpmyadmin_ingress.yaml @@ -0,0 +1,18 @@ +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 \ No newline at end of file