k8s_使用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