From 6c15e8aea545a9900ff08790d7a65f0f963c4256 Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Fri, 6 Feb 2026 17:27:57 +0000 Subject: [PATCH] mysql k8s --- base/mysql/kustomization.yaml | 10 ++++ base/mysql/secret.yaml | 9 ++++ base/mysql/service.yaml | 16 +++++++ base/mysql/statefulset.yaml | 88 +++++++++++++++++++++++++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 base/mysql/kustomization.yaml create mode 100644 base/mysql/secret.yaml create mode 100644 base/mysql/service.yaml create mode 100644 base/mysql/statefulset.yaml diff --git a/base/mysql/kustomization.yaml b/base/mysql/kustomization.yaml new file mode 100644 index 0000000..3e67d7f --- /dev/null +++ b/base/mysql/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - statefulset.yaml + - service.yaml + - secret.yaml + +commonLabels: + tier: database diff --git a/base/mysql/secret.yaml b/base/mysql/secret.yaml new file mode 100644 index 0000000..7d1e882 --- /dev/null +++ b/base/mysql/secret.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: mysql-secret +type: Opaque +stringData: + root-password: "REPLACE_WITH_SECURE_PASSWORD" # Change in production! + user: "inventory_user" + password: "REPLACE_WITH_SECURE_PASSWORD" # Change in production! diff --git a/base/mysql/service.yaml b/base/mysql/service.yaml new file mode 100644 index 0000000..44272a8 --- /dev/null +++ b/base/mysql/service.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql + labels: + app: mysql + component: database +spec: + type: ClusterIP + clusterIP: None # Headless service for StatefulSet + ports: + - port: 3306 + targetPort: 3306 + name: mysql + selector: + app: mysql diff --git a/base/mysql/statefulset.yaml b/base/mysql/statefulset.yaml new file mode 100644 index 0000000..41728cb --- /dev/null +++ b/base/mysql/statefulset.yaml @@ -0,0 +1,88 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: mysql + labels: + app: mysql + component: database +spec: + serviceName: mysql + replicas: 1 + selector: + matchLabels: + app: mysql + template: + metadata: + labels: + app: mysql + component: database + spec: + containers: + - name: mysql + image: mysql:8.0 + ports: + - containerPort: 3306 + name: mysql + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-secret + key: root-password + - name: MYSQL_DATABASE + value: "inventory" + - name: MYSQL_USER + valueFrom: + secretKeyRef: + name: mysql-secret + key: user + - name: MYSQL_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-secret + key: password + volumeMounts: + - name: mysql-data + mountPath: /var/lib/mysql + resources: + requests: + memory: "512Mi" + cpu: "250m" + limits: + memory: "1Gi" + cpu: "500m" + livenessProbe: + exec: + command: + - mysqladmin + - ping + - -h + - localhost + - -u + - root + - -p$(MYSQL_ROOT_PASSWORD) + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 5 + readinessProbe: + exec: + command: + - mysql + - -h + - localhost + - -u + - root + - -p$(MYSQL_ROOT_PASSWORD) + - -e + - SELECT 1 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 3 + volumeClaimTemplates: + - metadata: + name: mysql-data + spec: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 10Gi