此範例教學課程介紹了如何在 vSphere IaaS control plane 環境中使用 vSphere 網繭 部署 WordPress 應用程式。
WordPress 部署包括用於 WordPress 前端和 MySQL 後端的容器以及同時用於這兩者的服務。此外,還需要密碼物件。
本教學課程使用部署物件。在生產環境中,通常針對 WordPress 和 MySQL 容器使用 StatefulSet。
必要條件
- 建立具有 NSX 網路的單區域 主管。只有使用 NSX 的單區域 主管 支援 vSphere 網繭。請參閱部署具有 NSX 網路的單區域主管。
- 建立用於部署 vSphere 網繭 的命名空間。請參閱在 主管 上建立和設定 vSphere 命名空間。
- 建立儲存區原則,例如 vwt-storage-policy,並將其指派給命名空間。
- 下載vSphere Kubernetes CLI 工具。請參閱下載並安裝適用於 vSphere 的 Kubernetes CLI 工具。
- 建立本教學課程所需的 YAML 檔案,並驗證這些檔案的命令列存取權。
類別 檔案 儲存區 -
備註: 確保這些檔案參考了正確的儲存區類別。
密碼 服務 部署
部署 WordPress
使用此工作流程可使用 vSphere 網繭 來部署 WordPress 應用程式。
第 1 部分.存取命名空間
使用以下步驟存取命名空間。
程序
第 2 部分.建立 WordPress PVC
使用以下命令建立 WordPress PVC。
程序
第 3 部分.建立秘密金鑰
公有 Docker Hub 是 Kubernetes 的預設容器登錄。Docker Hub 現在會限制映像提取。您需要擁有一個付費帳戶,並將帳戶金鑰新增到秘密金鑰 YAML 中的 data.dockerconfigjson
欄位。
程序
第 4 部分.建立服務
按照以下步驟建立服務。
程序
第 5 部分.建立網繭部署
使用此工作可建立網繭部署。
程序
第 6 部分.測試 WordPress
按照以下步驟測試 WordPress 部署。
程序
WordPress 部署的範例 YAML 檔案
使用 vSphere 網繭 部署 WordPress 應用程式時,請使用以下範例 YAML 檔案。
mysql-pvc.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-pvc labels: app: wordpress spec: accessModes: - ReadWriteOnce storageClassName: vwt-storage-policy resources: requests: storage: 20Gi
wordpress-pvc.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wordpress-pvc labels: app: wordpress spec: accessModes: - ReadWriteOnce storageClassName: vwt-storage-policy resources: requests: storage: 20Gi
regcred.yaml
apiVersion: v1 kind: Secret metadata: name: regcred data: .dockerconfigjson: ewoJImF1dGhzIjog....zZG1KcE5WUmtXRUozWpc type: kubernetes.io/dockerconfigjson
mysql-pass.yaml
apiVersion: v1 data: password: YWRtaW4= #admin base64 encoded kind: Secret metadata: name: mysql-pass
mysql-service.yaml
apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None
wordpress-service.yaml
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - port: 80 selector: app: wordpress tier: frontend type: LoadBalancer
mysql-deployment-vsphere-pod.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql labels: app: wordpress spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: wordpress tier: mysql template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql #increased resource limits required for this pod vm #default pod VM RAM is 512MB; MySQL container needs more #without extra RAM OOM error prevents deployment #extra RAM not required for Kuberentes cluster resources: limits: memory: 1024Mi cpu: 1 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-pvc imagePullSecrets: - name: regcred
wordpress-deployment.yaml
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: wordpress-pvc imagePullSecrets: - name: regcred