前言
本文為〈Kubernetes 官方文件〉的學習筆記。
環境
概述
目標為創建 PersistentVolumes(叢集中的一塊儲存區)和 PersistentVolumeClaims(使用者對儲存區的請求),以及創建 Secret 生成器、MySQL 資源配置和 WordPress 資源配置。
創建資源
建立 mysql-deployment.yaml 檔,這是 MySQL 的 Deployment 設定檔:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 
 | apiVersion: v1kind: Service
 metadata:
 name: wordpress-mysql
 labels:
 app: wordpress
 spec:
 ports:
 - port: 3306
 selector:
 app: wordpress
 tier: mysql
 clusterIP: None
 ---
 apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: mysql-pv-claim
 labels:
 app: wordpress
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 20Gi
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: wordpress-mysql
 labels:
 app: wordpress
 spec:
 selector:
 matchLabels:
 app: wordpress
 tier: mysql
 strategy:
 type: Recreate
 template:
 metadata:
 labels:
 app: wordpress
 tier: mysql
 spec:
 containers:
 - image: mysql:5.6
 name: mysql
 env:
 - name: MYSQL_ROOT_PASSWORD
 valueFrom:
 secretKeyRef:
 name: mysql-pass
 key: password
 ports:
 - containerPort: 3306
 name: mysql
 volumeMounts:
 - name: mysql-persistent-storage
 mountPath: /var/lib/mysql
 volumes:
 - name: mysql-persistent-storage
 persistentVolumeClaim:
 claimName: mysql-pv-claim
 
 | 
- MySQL 容器將 PersistentVolume掛載在/var/lib/mysql資料夾。
建立 wordpress-deployment.yaml 檔,這是 WordPress 的 Deployment 設定檔:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 
 | apiVersion: v1kind: Service
 metadata:
 name: wordpress
 labels:
 app: wordpress
 spec:
 ports:
 - port: 80
 selector:
 app: wordpress
 tier: frontend
 type: LoadBalancer
 ---
 apiVersion: v1
 kind: PersistentVolumeClaim
 metadata:
 name: wp-pv-claim
 labels:
 app: wordpress
 spec:
 accessModes:
 - ReadWriteOnce
 resources:
 requests:
 storage: 20Gi
 ---
 apiVersion: apps/v1
 kind: Deployment
 metadata:
 name: wordpress
 labels:
 app: wordpress
 spec:
 selector:
 matchLabels:
 app: wordpress
 tier: frontend
 strategy:
 type: Recreate
 template:
 metadata:
 labels:
 app: wordpress
 tier: frontend
 spec:
 containers:
 - image: wordpress:4.8-apache
 name: wordpress
 env:
 - name: WORDPRESS_DB_HOST
 value: wordpress-mysql
 - name: WORDPRESS_DB_PASSWORD
 valueFrom:
 secretKeyRef:
 name: mysql-pass
 key: password
 ports:
 - containerPort: 80
 name: wordpress
 volumeMounts:
 - name: wordpress-persistent-storage
 mountPath: /var/www/html
 volumes:
 - name: wordpress-persistent-storage
 persistentVolumeClaim:
 claimName: wp-pv-claim
 
 | 
- WordPress 容器將 PersistentVolume掛載在/var/www/html資料夾。
新建 kustomization.yaml 檔,添加一個 Secret 生成器,以及 MySQL 和 WordPress 資源配置。
| 12
 3
 4
 5
 6
 7
 
 | secretGenerator:- name: mysql-pass
 literals:
 - password=MY_PASSWORD
 resources:
 - mysql-deployment.yaml
 - wordpress-deployment.yaml
 
 | 
- secretGenerator中的- mysql-pass會被 MySQL 容器所使用。
創建所有資源。
查看所有 Secrets。
查看所有 PersistentVolumeClaims。
查看所有 Pods。
查看所有 Services。
訪問應用程式
訪問應用程式。
| 1
 | minikube service wordpress
 | 
清除資源
清除所有資源。