1. 程式人生 > 其它 >k8s_使用k8s部署部落格系統deployment(四)

k8s_使用k8s部署部落格系統deployment(四)

k8s deployment

mysql deployment

前面的nfs pv pvc secret configmap service等k8s物件已經建立好了,準備工作已經完成;現在可以開始準備deployment配置檔案了。

下面是wordpress系統中mysql的deployment配置檔案,需要註釋的地方有詳細的註解。

#api版本
apiVersion: apps/v1
kind: Deployment
metadata:
    #deployment的名稱
    name: wordpress-mysql
    #mysql deployment本身的label
    labels:
        app: wordpress
        tier: mysql
spec:
    selector:
        #deployment選擇有下面兩個標籤的pod配置資訊進行部署
        matchLabels:
            app: wordpress
            tier: mysql
-pod strategy: #配置deployment的升級方式 type: Recreate #pod的配置資訊 template: metadata: #pod的label,與上面selector配置項的label對應 labels: app: wordpress tier: mysql-pod spec: #pod內container相關配置資訊 containers: #container使用的映象資訊
- image: mysql:5.7 #container名稱 name: mysql #container使用的一些引數配置 env: #MYSQL_ROOT_PASSWORD引數配置資訊,這些引數在映象說明文件裡會有介紹 - name: MYSQL_ROOT_PASSWORD valueFrom: #從名稱為mysql
-pass的secret物件讀取password這個key對應的value資訊,將其作為MYSQL_ROOT_PASSWORD的值傳給container. secretKeyRef: #找到mysql-pass name: mysql-pass key: password - name: MYSQL_DATABASE valueFrom: #從名稱為mysql-config的configmap物件讀取key為db-name的值,將其作為MYSQL_DATABASE的值傳給container configMapKeyRef: #找到mysql-config name: mysql-config key: db-name #這裡對ports進行命名,具體對映container埠到clusterip在service配置檔案的selector已經選中這個pod進行映射了 ports: - containerPort: 3306 name: mysql #資料持久化資訊 volumeMounts: #使用名稱為mysql-persistent-storage的volumes配置進行資料持久化 - name: mysql-persistent-storage #container中需要進行資料持久化的路徑 mountPath: /var/lib/mysql #持久化儲存配置 volumes: #配置名,與上面volumeMounts中的name對應 - name: mysql-persistent-storage #使用哪個pvc進行資料持久化,之前已經進行了pv和pvc的配置了,這裡直接使用 persistentVolumeClaim: claimName: mysql-pv-claim

wordpress deployment

wordpress deployment檔案基本和mysql deployment配置檔案類似,下面只對不相同的地方進行詳細註釋。

apiVersion: apps/v1
kind: Deployment
metadata:
    name: wordpress
    labels:
        app: wordpress
        tier: frontend
spec:
    selector:
        matchLabels:
            app: wordpress
            tier: frontend-pod
    strategy:
        type: Recreate 
        #升級方式 還有rollingUpdate
    template:
        metadata:
            labels:
                app: wordpress
                tier: frontend-pod
        spec:
            containers:
              - image: wordpress
                name: wordpress
                env:
                  - name: WORDPRESS_DB_HOST
                    #這裡是將名稱為mysql的service的ip傳給container的WORDPRESS_DB_HOST變數。env沒有配置valuefrom就是從service獲取對應的配置
                    value: mysql
                  - name: WORDPRESS_DB_PASSWORD
                    valueFrom:
                        secretKeyRef:
                            #mysql 密碼,通過指定secret資源物件的name和物件的key來獲取
                            name: mysql-pass
                            key: password
                  - name: WORDPRESS_DB_USER
                    valueFrom:
                        configMapKeyRef:
                            #mysql 密碼,通過指定secret資源物件的name和物件的key來獲取
                            name: mysql-config
                            key: dbuser
                ports:
                  - containerPort: 80
                    name: wordpress
                volumeMounts:
                  - name: wordpress-persistent-storage
                    mountPath: /var/www/html
            volumes:
              - name: wordpress-persistent-storage
                persistentVolumeClaim:
                    claimName: wordpress-pv-claim