GNU/Linux >> Linux の 問題 >  >> Ubuntu

KubernetesにWordPressインスタンスをデプロイする方法

はじめに

世界で最も人気のあるコンテンツ管理システムとして、WordPressはコンテンツの量とWebトラフィックの両方の点でさまざまなサイズのWebサイトを運営しています。 WordPressをKubernetesにデプロイすることは、ウェブサイトの水平スケーリングを可能にし、ウェブサイトのトラフィックの急増にうまく対処するための効率的な方法です。

このチュートリアルでは、WordPressをKubernetesにデプロイする2つの方法、つまりHelmチャートを使用する方法と、デプロイメントを最初から作成する方法について説明します。

前提条件

  • kubectlを使用したKubernetesクラスター
  • ヘルム3
  • システムの管理者権限

ヘルムチャートを使用してKubernetesにWordPressをデプロイする

ヘルムチャートには、いくつかの簡単なコマンドで展開できる事前構成済みのアプリインストールが付属しています。

  1. デプロイするWordPressHelmチャートを含むリポジトリを追加します:
helm repo add [repo-name] [repo-address]

システムは、リポジトリが正常に追加されたことを確認します。この例では、Bitnamiチャートを使用しています。

2.ローカルHelmリポジトリを更新します:

helm repo update

3.helminstallコマンドを使用してチャートをインストールします。

helm install [release-name] [repo-address]

チャートが展開されるのを待ちます。

4. WordPressサービスは、サービスを公開する方法としてLoadBalancerを使用します。 minikubeを使用している場合は、別のターミナルウィンドウを開き、次のコマンドを入力してLoadBalancerをエミュレートします。

minikube tunnel

5.minikubeが実行中を表示したとき ステータス、ウィンドウを最小化して前のウィンドウに戻ります。

6.次のように入力して、展開の準備ができていることを確認します。

kubectl get all

このコマンドは、ポッド、サービス、およびデプロイメントのステータスを一覧表示して表示します。

7.ポッドとデプロイメントの準備ができたら、次のコマンドを使用して SERVICE_IPをエクスポートします。 環境変数:

export SERVICE_IP=$(kubectl get svc --namespace default wp-test-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")

8.次に、echoコマンドを使用して、サービスのIPアドレスを表示します。

echo "WordPress URL: http://$SERVICE_IP/"

9.ブラウザのアドレスバーにアドレスを入力します。 WordPressのインストールが開始されます。

永続的なボリュームを持つKubernetesへのWordPressのデプロイ

カスタム構成を使用してWordPressをデプロイする場合は、WordPress用の一連のYAMLファイルと、アプリが使用するデータベースを作成する必要があります。以下の例ではMySQLを使用していますが、MariaDBを選択することもできます。

1.テキストエディタを使用してYAMLファイルを作成し、MySQLデータベースのストレージをプロビジョニングします。

nano mysql-storage.yaml

このファイルは、永続ストレージボリューム(PV)を定義し、PersistentVolumeClaim(PVC)を使用したスト​​レージを要求します。この例では、次の構成を使用しています。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: wordpress
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

ファイルを保存して終了します。

2.MySQLデプロイメント構成YAMLを作成します。

nano mysql-deployment.yaml

デプロイメントファイルには、コンテナイメージとストレージに関連するデータが含まれています。 claimName 下部の宣言は、ステップ1で作成したPVCの名前に対応している必要があります 。

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.7
        name: mysql
        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-pv-claim

ファイルを保存して終了します。

3.データベースのサービス構成YAMLを作成します。

nano mysql-service.yaml

このファイルは、WordPressがサービスに接続するために使用するポートを指定します:

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
  clusterIP: None

ファイルを保存して終了します。

4.ここで、WordPress自体に同じYAMLファイルを作成します。ストレージの割り当てから始めます:

nano wordpress-storage.yaml

この例では、次の構成を使用しています。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: wp-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

ファイルを保存して終了します。

5.デプロイメントファイルを作成します:

nano wordpress-deployment.yaml

このファイルはDockerイメージを提供し、WordPressデプロイメントをPVCに接続します:

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:5.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: wp-pv-claim

ファイルを保存して終了します。

6.サービスYAMLを作成します:

nano wordpress-service.yaml

この例では、LoadBalancerを使用してサービスを公開しています:

apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
  selector:
    app: wordpress
    tier: frontend
  type: LoadBalancer

ファイルを保存して終了します。

7.構成を簡単に適用するために使用されるkustomization.yamlファイルを作成します。

nano kustomization.yaml

ファイルには2つの部分が含まれています:

  • secretGenerator ログイン情報をコンテナに渡すKubernetesシークレットを生成します。
  • resources セクションには、構成に参加するすべてのファイルがリストされています。前の手順で作成したファイルを一覧表示します。
secretGenerator:
- name: mysql-pass
  literals:
  - password=test123
resources:
  - mysql-storage.yaml
  - mysql-deployment.yaml
  - mysql-service.yaml
  - wordpress-storage.yaml
  - wordpress-deployment.yaml
  - wordpress-service.yaml

ファイルを保存して終了します。

8. kustomization.yamlにリストされているファイルを適用します 次のコマンドを使用します:

kubectl apply -k ./

システムは、シークレット、サービス、PV、PVC、およびデプロイメントが正常に作成されたことを確認します。

9.ポッドと展開の準備ができているかどうかを確認します。

kubectl get all

10. minikubeを使用している場合は、別のターミナルウィンドウを開いて、minikubeトンネルを開始します。 負荷分散エミュレーションを提供するには:

minikube tunnel

エミュレーションが実行されたら、ウィンドウを最小化して前のウィンドウに戻ります。

11.次のコマンドを入力して、デプロイされたWordPressインスタンスへのアクセスに使用するサービスURLを公開します。

minikube service wordpress-service --url

URLはコマンド出力として表示されます:

12. URLをコピーして、Webブラウザに貼り付けます。 WordPressのインストールが開始されます。


Ubuntu
  1. ヘルムチャートを作成する方法

  2. Ubuntu18.04LTSのKubernetesクラスターにNginxロードバランシングをデプロイする方法

  3. 最初のポッドをKubernetesクラスターにデプロイする方法

  1. KubernetesにElasticsearchをデプロイする方法

  2. KubernetesにRedisクラスターをデプロイする方法

  3. KubernetesにRabbitMQをデプロイする方法

  1. KubernetesにPostgreSQLをデプロイする方法

  2. KubernetesにHelmをインストールして使用する方法

  3. Kubernetesを使用して多層アプリケーションをデプロイする方法