始める前に

  • Kubernetes の作成が必要です。 詳しい情報は、Kubernetes クラスターのスピーディーな作成をご参照ください。
  • ストレージボリュームおよびストレージボリューム要求の作成が必要です。 ストレージボリュームの作成方法はAlibaba Cloud クラウドディスクの利用Alibaba Cloud NAS の使用およびAlibaba Cloud OSS の使用をご参照ください。 ストレージボリューム要求の作成方法は、永続ストレージボリュームクレームの作成を参照してください。 ストレージボリュームとして Alibaba Cloud ディスクを使用します。 この例では、ストレージボリュームのマウントに PV/PVC を選択します。 2 つのストレージボリューム要求: "wordpress-pv-claim" および "wordpress-mysql-pv-claim" を作成します。これらは、それぞれ "wordpress" yaml ファイルおよび "wordpress-mysql" yaml ファイルで対応するストレージボリュームのマウントに使用されます。


このタスクについて

この例では、オーケストレーションテンプレート上のテンプレートをカスタマイズし、依存関係をベースにしたアプリケーションの作成方法を紹介します。

主要なコンポーネント:

  • wordpress
  • mysql

含まれるリソース:

  • ストレージボリューム
  • シークレット
  • サービス

手順

  1. Container Service コンソールにログインします。
  2. 事前に用意したストレージボリューム要求を使用します。 2 つのストレージボリューム要求、"wordpress-pv-claim" および "wordpress-mysql-pv-claim" を作成します。これらは、それぞれ "wordpress yaml" ファイルおよび "wordpress-mysql yaml" ファイルで対応するストレージボリュームのマウントに使用されます。
  3. 左側のナビゲーションウィンドウから [アプリケーション] > [シークレット] をクリックします。クラスターおよび名前空間を選択し、右上角にある [作成] をクリックします。 作成過程について詳しくは『シークレットの作成』をご参照ください。


    MySQL データベースの作成およびアクセスにユーザー名とパスワードが必要なため、ユーザー名とパスワードを管理するためにシークレットを作成します。

    シークレットを使用する前に、暗号化に必要なシークレットを作成します。 この例では、MySQL のルートパスワードはシークレットとして作成され、シークレット名は "mysql-pass" とします。 このシークレットは "wordpress" yaml ファイルおよび "wordpress-mysql" yaml ファイルで使用されます。



  4. 左側のナビゲーションウィンドウから [アプリケーション] > [デプロイ] をクリックし、右上角の [テンプレートで作成] をクリックします。


    クラスターおよび名前空間を選択します。 WordPress のデプロイの作成に関する 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
            name: wordpress
            env:
            - name: WORDPRESS_DB_HOST
              value: wordpress-mysql #アクセスする MySQL を指す名前を使用します。 MySQL サーバー名に対応した名前です。
            - name: WORDPRESS_DB_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password-wordpress
            ports:
            - containerPort: 80
              name: wordpress
            volumeMounts:
            - name: wordpress-pvc
              mountPath: /var/www/html
          volumes:
          - name: wordpress-pvc
            persistentVolumeClaim:
              claimName: wordpress-pv-claim
    MySQL デプロイの作成のための yaml ファイルは以下のようになります。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: wordpress-mysql
      labels:
        app: wordpress
    spec:
      selector:
        matchLabels:
          app: wordpress
          tier: mysql
      strategy:
        type: Recreate
      template:
        metadata:
          labels:
            app: wordpress
            tier: mysql
        spec:
          containers:
          - image: mysql:5.6
            name: mysql
            env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password-mysql
            ports:
            - containerPort: 3306
              name: mysql
            volumeMounts:
            - name: wordpress-mysql-pvc
              mountPath: /var/lib/mysql
          volumes:
          - name: wordpress-mysql-pvc
            persistentVolumeClaim:
              claimName: wordpress-mysql-pv-claim
  5. WordPress への外部からのアクセスを可能にするため、WordPress サービスにより公開されているアクセス方法を作成する必要があります。 この例では、Container Service により、外部からのアクセスを提供する Alibaba Cloud Server Load Balancer の自動生成のため、LoadBalancer タイプの WordPress サービスを作成します。

    WordPress mysql 上で作成された WordPress デプロイのアクセスを有効化するため、WordPress mysql に対し サービス名を "Wordpress-mysql" としたサービスを作成します。 WordPress に関しては、内部からのみ MySQL が呼び出されるため、MySQL に対する LoadBalancer タイプのサービスの作成は必要ありません。

    サービスの作成については、『サービスの作成』をご参照ください。

    WordPress サービスおよび MySQL サービスの作成に使われる yaml ファイルは以下のようになります。
    apiVersion: v1
    kind: Service
    metadata:
      name: wordpress
      labels:
        app: wordpress
    spec:
      ports:
        -port: 80
      selector:
        app: wordpress
        tier: frontend
      type: LoadBalancer
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: wordpress-mysql
      labels:
        app: wordpress
    spec:
      ports:
        - port: 3306
      selector:
        app: wordpress
        tier: mysql
      	  clusterIP: None
  6. デプロイ完了後、左側のナビゲーションウィンドウより [アプリケーション] > [サービス] をクリックします。 WordPress サービスを検索し、『外部エンドポイント』をご参照ください。


  7. ブラウザーから WordPress サービスの外部エンドポイントにアクセスします。Server Load Balancer により提供された IP アドレスから WordPress アプリケーションにアクセスすることができます。


次のタスク

WordPress アプリケーションの設定中は、シークレットで設定したパスワードによりアプリケーションにログインできます。 さらに、WordPress アプリケーションの属するコンテナーにより生成されたデータはデータストレージボリュームに保存されます。