In diesem Beispiel-Lernprogramm wird die Bereitstellung der WordPress-Anwendung mithilfe von vSphere-Pods in der vSphere IaaS control plane-Umgebung beschrieben.
Die WordPress-Bereitstellung umfasst Container für das WordPress-Frontend und das MySQL-Back-End sowie Dienste für beides. Geheimschlüsselobjekte sind ebenfalls erforderlich.
In diesem Lernprogramm wird ein Bereitstellungsobjekt verwendet. In einer Produktionsumgebung sollten Sie normalerweise StatefulSets sowohl für WordPress- als auch für MySQL-Container verwenden.
Voraussetzungen
- Erstellen Sie einen Supervisor für eine Zone mit NSX-Netzwerk. Nur Supervisoren für eine Zone mit NSX unterstützen vSphere-Pods. Weitere Informationen finden Sie unter Bereitstellen eines Supervisors für eine Zone mit NSX-Netzwerk
- Erstellen Sie einen Namespace für die Bereitstellung von vSphere-Pods. Weitere Informationen hierzu finden Sie unter Erstellen und Konfigurieren eines vSphere-Namespace im Supervisor..
- Erstellen Sie eine Speicherrichtlinie, zum Beispiel vwt-storage-policy, und weisen Sie sie dem Namespace zu.
- Laden Sie die vSphere Kubernetes-CLI-Tools herunter. Weitere Informationen finden Sie unter Herunterlade und Installieren der Kubernetes-CLI-Tools für vSphere.
- Erstellen Sie die für dieses Lernprogramm erforderlichen YAML-Dateien und überprüfen Sie den Befehlszeilenzugriff auf die Dateien.
Kategorie Dateien Speicher -
Hinweis: Stellen Sie sicher, dass die Dateien auf die richtige Speicherklasse verweisen.
Geheimnisse Dienste Bereitstellungen
WordPress bereitstellen
Verwenden Sie diesen Workflow, um die WordPress-Anwendung mithilfe von vSphere-Pods bereitzustellen.
Teil 1. Zugreifen auf Ihren Namespace
Führen Sie diese Schritte aus, um auf Ihren Namespace zuzugreifen.
Prozedur
Teil 2. WordPress-PVCs erstellen
Verwenden Sie diese Befehle, um WordPress-PVCs zu erstellen.
Prozedur
Teil 3. Geheimnisse erstellen
Der öffentliche Docker-Hub ist die standardmäßige Containerregistrierung für Kubernetes. Docker-Hub schränkt jetzt Image-Abrufe ein. Sie müssen über ein bezahltes Konto verfügen und den Kontoschlüssel zur geheimen YAML im Feld data.dockerconfigjson
hinzufügen.
Prozedur
Teil 4. Dienste erstellen
Folgen Sie diesen Schritten, um Dienste zu erstellen.
Prozedur
Teil 5. Pod-Bereitstellungen erstellen
Verwenden Sie diese Aufgabe, um Pod-Bereitstellungen zu erstellen.
Prozedur
Teil 6. WordPress testen
Folgen Sie diesen Schritten, um Ihre WordPress-Installation zu testen.
Prozedur
Beispiel-YAML-Dateien für die WordPress-Bereitstellung
Verwenden Sie diese Beispiel-YAML-Dateien, wenn Sie die WordPress-Anwendung mit vSphere-Pods bereitstellen.
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