k8s/archive_1

14.Deployment - MySQL(Volume未設定)

YOOANT 2026. 3. 18. 13:11

 

✅ Deploymentを活用したMySQLの実行

Manifestファイルの作成

mysql-deployment.yaml

apiVersion: apps/v1
kind: Deployment

# Deploymentの基本情報
metadata:
  name: mysql-deployment # Deployment名

# Deploymentの詳細情報
spec:
  replicas: 1 # 作成するPodのレプリカ数
  selector:
    matchLabels:
      app: mysql-db # 以下で定義したPodのうち、「app: mysql-db」という値を持つPodを選択

  # デプロイするPodの定義
  template:
    metadata:
      labels: # ラベル(=カテゴリ)
        app: mysql-db
    spec:
      containers:
        - name: mysql-container # コンテナ名
          image: mysql # コンテナ作成時に使用するイメージ
          ports:
            - containerPort: 3306  # コンテナで使用するポートを明示的に指定
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-secret
                  key: mysql-root-password
            - name: MYSQL_DATABASE
              valueFrom:
                configMapKeyRef: 
                  name: mysql-config
                  key: mysql-database

mysql-secret.yaml

apiVersion: v1
kind: Secret

# Secretの基本情報
metadata:
  name: mysql-secret # Secret名

# Key、Value形式で値を保存
stringData:
  mysql-root-password: password123

mysql-config.yaml

apiVersion: v1
kind: ConfigMap

# ConfigMapの基本情報
metadata:
  name: mysql-config # ConfigMap名

# Key、Value形式で設定値を保存
data:
  mysql-database: kube-practice

mysql-service.yaml

apiVersion: v1
kind: Service

# Serviceの基本情報
metadata:
  name: mysql-service # Service名
  
# Serviceの詳細情報
spec:
  type: NodePort # Serviceの種類
  selector:
    app: mysql-db # 実行中のPodのうち、「app: mysql-db」という値を持つPodとServiceを紐付け
  ports:
    - protocol: TCP # Serviceに接続するためのプロトコル
      port: 3306 # Kubernetes内部からServiceに接続するためのポート番号
      targetPort: 3306 # マッピングするPodのポート番号
      nodePort: 30002 # 外部からユーザーがアクセスするポート番号

 

オブジェクトの作成

$ kubectl apply -f mysql-secret.yaml
$ kubectl apply -f mysql-config.yaml
$ kubectl apply -f mysql-deployment.yaml
$ kubectl apply -f mysql-service.yaml

 

DBへの接続テスト

新規データベースの作成

 

✅ MySQLの再起動

 🧑🏻‍🏫 ここで、MySQLが原因不明の障害によりサービスが停止したと仮定する。そのため、Deploymentを再起動しなければならない状況とする。 

Deploymentの再起動

$ kubectl rollout restart deployment mysql-deployment

データベースの再確認

データベースを確認すると、以前作成した「new-db」というデータベースが消失している。実際のデータベース運用において、データが消失してはならない。データが保持されるよう、ボリューム(Volume)を設定する。

'k8s > archive_1' 카테고리의 다른 글

16.Deployment - Spring BootとMySQLの連携  (0) 2026.03.18
15.Deployment - MySQL(Volume設定)  (0) 2026.03.18
13.Volumeとは?  (0) 2026.03.18
12.Secret  (0) 2026.03.18
11.ConfigMap  (0) 2026.03.18

日本語