如何在Kubernetes上运行WordPress和MySQL 5.7
时间:2020-01-09 10:34:20 来源:igfitidea点击:
说明
在本教程中,将指导我们如何在Kubernetes上使用WordPress和MySQL 5.7. 我们将看到用于存储密码,将WordPress博客暴露于Internet以及使用持久存储来存储上载内容的不同资源类型。
入门
为该教程创建了以下Gist文件。下载它们以进行后续操作,并在我们自己的环境中用作模板。
- MySQL 5.7
- WordPress 5.2
创建密码
强烈建议我们不要将敏感信息存储在Docker映像或者Kubernetes资源文件中。相反,我们应该将敏感信息安全地存储在远离应用程序和资源的地方。
Kubernetes机密使我们可以存储集群中资源使用的敏感信息。在本教程中,我们将存储两个密码作为机密-一个用于MySQL root,另一个用于WordPress管理员密码。
密码存储为Base64编码的字符串。例如,我们将需要在Linux或者OSX上使用base64命令自己创建这些字符串。现在为两个密码创建密码,并记下输出。
echo "super-secret-mysql-password" | base64 c3VwZXItc2VjcmV0LW15c3FsLXBhc3N3b3JkCg==
echo "super-secret-wp-password" | base64 c3VwZXItc2VjcmV0LXdwLXBhc3N3b3JkCg==
创建一个名为myblog-secrets.yml的新文件
touch myblog-secrets.yml
添加以下内容。
--- apiVersion: v1 kind: Secret metadata: name: myblog-secrets type: Opaque data: mysql_password: c3VwZXItc2VjcmV0LW15c3FsLXBhc3N3b3JkCg== admin_password: c3VwZXItc2VjcmV0LXdwLXBhc3N3b3JkCg==
使用kubectl apply命令在Kubernetes中创建secrets资源。
kubectl apply -f myblog-secrets.yml
部署MySQL 5.7服务
在部署WordPress之前,我们需要为博客平台创建一个数据库。我们将为MySQL数据库创建一个部署资源,该资源将执行以下操作:
- 下拉最新的MySQL 5.7 Docker映像
- 为MySQL服务创建Pod
- 使用我们之前创建的机密设置环境变量
创建一个名为myblog-db.yml的新文件。
touch myblog-db-deployment.yml
向其中添加以下内容。
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: db1-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: db1-deployment labels: app: db1 spec: replicas: 1 selector: matchLabels: app: db1 template: metadata: labels: app: db1 spec: containers: - name: db1 image: mysql:5.7 ports: - containerPort: 3306 volumeMounts: - mountPath: "/var/lib/mysql" subPath: "mysql" name: mysqldb env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: db1-secrets key: ROOT_PASSWORD - name: MYSQL_USER value: site1_user - name: MYSQL_PASSWORD valueFrom: secretKeyRef: name: db1-secrets key: SITE1_USER_PASSWORD - name: MYSQL_DATABASE value: site1 volumes: - name: mysqldb persistentVolumeClaim: claimName: db1-disk --- apiVersion: v1 kind: Service metadata: name: myblog-db-service spec: selector: app: db1 ports: - protocol: TCP port: 3306 targetPort: 3306
使用kubectl apply命令将创建在myblog-db.yml文件中声明的资源。
kubectl apply -f myblog-db.yml
部署WordPress
创建一个名为myblog-wordpress.yml的新文件。
touch myblog-wordpress.yml
向其中添加以下内容。
--- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wordpress-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: myblog-wordpress-deployment labels: app: myblog-wordpress spec: replicas: 1 selector: matchLabels: app: myblog-wordpress template: metadata: labels: app: myblog-wordpress spec: containers: - name: myblog-wordpress image: wordpress:5.2 ports: - containerPort: 80 volumeMounts: - mountPath: "/var/www/html/wp-content" subPath: "wp-content" name: wordpress-disk env: - name: WORDPRESS_DB_HOST value: myblog-db-service - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: db1-secrets key: ROOT_PASSWORD volumes: - name: wordpress-disk persistentVolumeClaim: claimName: wordpress-disk --- apiVersion: v1 kind: Service metadata: name: myblog-wordpress-service spec: selector: app: myblog-wordpress ports: - protocol: TCP port: 80 targetPort: 80
使用kubectl apply命令创建声明的资源。
kubectl apply -f myblog-wordpress.yml