이 예제 자습서에서는 vSphere IaaS control plane 환경에서 vSphere 포드를 사용하여 WordPress 애플리케이션을 배포하는 방법을 설명합니다.
WordPress 배포에는 WordPress 프런트 엔드 및 MySQL 백엔드용 컨테이너와 둘 다에 대한 서비스가 포함됩니다. 비밀 개체도 필요합니다.
이 자습서에서는 배포 개체를 사용합니다. 운영 환경에서는 일반적으로 WordPress 및 MySQL 컨테이너 모두에 대해 StatefulSets를 사용합니다.
사전 요구 사항
- NSX 네트워킹을 사용하여 1개 영역 감독자를 생성합니다. NSX를 사용하는 1개 영역 감독자만 vSphere 포드를 지원합니다. NSX 네트워킹을 사용하여 1개 영역 감독자 배포를 참조하십시오.
- 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에서 이미지 끌어오기가 제한됩니다. 유료 계정이 있어야 하고 계정 키를 data.dockerconfigjson
필드의 비밀 YAML에 추가해야 합니다.
프로시저
4부. 서비스 생성
다음 단계에 따라 서비스를 생성합니다.
프로시저
5부. 포드 배포 생성
이 작업을 사용하여 포드 배포를 생성합니다.
프로시저
6부. WordPress 테스트
다음 단계에 따라 WordPress 배포를 테스트합니다.
프로시저
WordPress 배포를 위한 예제 YAML 파일
다음 예제 YAML 파일은 vSphere 포드와 함께 WordPress 애플리케이션을 배포할 때 사용합니다.
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