Este tutorial de ejemplo describe cómo implementar la aplicación de WordPress mediante pods de vSphere en el entorno de vSphere IaaS control plane.
La implementación de WordPress incluye contenedores para el front-end de WordPress y el back-end de MySQL, así como servicios para ambos. También se requieren objetos secretos.
En este tutorial, se utiliza un objeto deployment. En el entorno de producción, debe utilizar StatefulSets para los contenedores de WordPress y MySQL.
Requisitos previos
- Cree un Supervisor de una zona con redes NSX. Solo los Supervisores de una zona con NSX admiten pods de vSphere. Consulte Implementar un supervisor de zona única con redes NSX.
- Cree un espacio de nombres para implementar pods de vSphere. Consulte Crear y configurar un espacio de nombres de vSphere en el Supervisor.
- Cree una directiva de almacenamiento, por ejemplo, vwt-storage-policy y asígnela al espacio de nombres.
- Descargue las herramientas de la CLI de Kubernetes de vSphere. Consulte Descargar e instalar las herramientas de la CLI de Kubernetes para vSphere.
- Cree los archivos YAML necesarios para este tutorial y compruebe el acceso de la línea de comandos a los archivos.
Categoría Archivos Almacenamiento -
Nota: Asegúrese de que los archivos hagan referencia a la clase de almacenamiento correcta.
Secretos Servicios Implementaciones
Implementar WordPress
Utilice este flujo de trabajo para implementar la aplicación de WordPress mediante pods de vSphere.
Parte 1. Acceder al espacio de nombres
Siga estos pasos para acceder al espacio de nombres.
Procedimiento
Parte 2. Crear PVC de WordPress
Utilice estos comandos para crear PVC de WordPress.
Procedimiento
Parte 3. Crear secretos
Docker Hub público es el registro de contenedor predeterminado para Kubernetes. Docker Hub ahora limita la extracción de imágenes. Debe tener una cuenta de pago y agregar la clave de cuenta al YAML secreto en el campo data.dockerconfigjson
.
Procedimiento
Parte 4. Crear servicios
Siga estos pasos para crear servicios.
Procedimiento
Parte 5. Crear implementaciones de pods
Utilice esta tarea para crear implementaciones de pods.
Procedimiento
Parte 6. Probar WordPress
Siga estos pasos para probar la implementación de WordPress.
Procedimiento
Ejemplo de archivos YAML para la implementación de WordPress
Utilice estos archivos YAML de ejemplo cuando implemente la aplicación de WordPress con pods de 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
namepress-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
namepress-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
namepress-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