In questo esempio viene descritto come distribuire l'applicazione WordPress utilizzando Pod vSphere nell'ambiente vSphere IaaS control plane.
La distribuzione di WordPress include container per il front-end WordPress e il back-end MySQL e i servizi per entrambi. Sono necessari anche gli oggetti segreti.
Questo tutorial utilizza gli oggetti di distribuzione. Nell'ambiente di produzione si utilizza in genere StatefulSets per entrambi i container WordPress e MySQL.
Prerequisiti
- Creare un Supervisore a una zona con rete NSX. Solo i Supervisori a una zona con NSX supportano i Pod vSphere. Vedere Distribuzione di un supervisore a una zona con rete NSX
- Creare uno spazio dei nomi per la distribuzione di Pod vSphere. Vedere Creare e configurare un Spazio dei nomi vSphere nel Supervisore.
- Creare un criterio di storage, ad esempio vwt-storage-policy, e assegnarlo allo spazio dei nomi.
- Scaricare gli strumenti della CLI Kubernetes per vSphere. Vedere Download e installazione degli strumenti della CLI Kubernetes per vSphere.
- Creare i file YAML necessari per questo tutorial e verificare l'accesso alla riga di comando per i file.
Categoria File Storage -
Nota: Assicurarsi che i file facciano riferimento alla classe di storage corretta.
Segreti Servizi Distribuzioni
Distribuzione di WordPress
Utilizzare questo workflow per distribuire l'applicazione WordPress utilizzando Pod vSphere.
Parte 1. Accesso al proprio spazio dei nomi
Utilizzare questi passaggi per accedere al proprio spazio dei nomi.
Procedura
Parte 2. Creazione di PVC WordPress
Utilizzare questi comandi per creare PVC WordPress.
Procedura
Parte 3. Creazione dei segreti
Il Docker Hub pubblico è il registro di container predefinito per Kubernetes. Docker Hub ora limita il pull delle immagini. È necessario disporre di un account a pagamento e aggiungere la chiave dell'account al YAML del segreto nel campo data.dockerconfigjson
.
Procedura
Parte 4. Creazione dei servizi
Per creare servizi, attenersi alla seguente procedura.
Procedura
Parte 5. Creazione di distribuzioni di pod
Utilizzare questa attività per creare distribuzioni di pod.
Procedura
Parte 6. Test di WordPress
Per testare la distribuzione di WordPress, attenersi alla seguente procedura.
Procedura
Esempi di file YAML per la distribuzione di WordPress
Utilizzare questi file YAML di esempio quando si distribuisce l'applicazione WordPress con Pod vSphere.
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