このチュートリアルの例では、vSphere IaaS control plane 環境の vSphere ポッド を使用して WordPress アプリケーションをデプロイする方法について説明します。
WordPress のデプロイには、WordPress フロントエンドと MySQL バックエンド、そして両サービスをまとめたコンテナが含まれます。シークレット オブジェクトも必要です。
このチュートリアルでは、デプロイ オブジェクトを使用します。本番環境では、WordPress コンテナと MySQL コンテナの両方に StatefulSets を使用するのが一般的です。
前提条件
- NSX ネットワークを使用して、1 ゾーンの スーパーバイザー を作成します。vSphere ポッド は、NSX を使用する 1 ゾーンの スーパーバイザー のみでサポートされます。「NSX ネットワークを使用した 1 ゾーン スーパーバイザーのデプロイ」を参照してください。
- vSphere ポッド をデプロイするための名前空間を作成します。スーパーバイザー での vSphere 名前空間 の作成と構成を参照してください。
- ストレージ ポリシー(例:vwt-storage-policy)を作成して名前空間に割り当てます。
- vSphere Kubernetes CLI ツールをダウンロードします。「Kubernetes CLI Tools for vSphere のダウンロードとインストール」を参照してください。
- このチュートリアルに必要な 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 ファイル
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