ホームページ  >  記事  >  バックエンド開発  >  PHP で Kubernetes を使用するにはどうすればよいですか?

PHP で Kubernetes を使用するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-05-12 08:40:351604ブラウズ

近年、Kubernetes はコンテナ化されたデプロイメントのための重要なツールの 1 つとなっており、アプリケーション開発では PHP が共通言語となっており、PHP で Kubernetes をどのように使用するかが重要なテーマとなっています。この記事では、Kubernetes クラスターの作成方法、Kubernetes を使用して PHP アプリケーションをホストする方法、PHP アプリケーションで Kubernetes と対話する方法など、PHP で Kubernetes を使用する方法を紹介します。

1. Kubernetes クラスターの作成

Kubernetes を使用する前に、まず Kubernetes クラスターを作成する必要があります。 Kubernetes クラスターを作成するには、セルフホスティングを使用するか、クラウド サービス プロバイダーが提供する Kubernetes サービスを使用するかを選択できます。

セルフホスティングの場合、Ansible や Terraform などのツールを使用して、Kubernetes クラスターを自動的にデプロイできます。ここでは詳細は説明しませんが、記事の最後にあるリンクを参照して、関連する知識を自分で学習してください。

Alibaba Cloud のコンテナ サービスや Google Cloud の Kubernetes Engine など、クラウド サービス プロバイダーによって提供される Kubernetes サービスの場合は、公式ドキュメントを参照して Kubernetes クラスターを作成できます。

クラスターの作成後、Kubernetes クラスターを管理するために kubectl コマンド ライン ツールをインストールする必要があります。対応する kubectl バージョンを Kubernetes 公式 Web サイトからダウンロードし、ドキュメントに従ってインストールできます。

2. Kubernetes を使用して PHP アプリケーションをホストする

Kubernetes を使用して PHP アプリケーションをホストする手順は次のとおりです:

  1. デプロイメントの定義

デプロイメントは、Kubernetes で特定の Pod コピーを管理するために使用されるオブジェクトであり、単純に Pod コントローラーとして理解できます。デプロイメントを定義するときは、アプリケーションのイメージ情報とコピー数を指定する必要があります。

具体的な定義方法は次のとおりです。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-app
  labels:
    app: php
spec:
  replicas: 3
  selector:
    matchLabels:
      app: php
  template:
    metadata:
      labels:
        app: php
    spec:
      containers:
      - name: php
        image: php:7.4-apache
        ports:
        - containerPort: 80
        volumeMounts:
          - name: code
            mountPath: /var/www/html
      volumes:
        - name: code
          configMap:
            name: code-config

上記の yaml ファイルは、php-app という名前の Deployment を定義しており、コピー数は 3、ミラーは php:7.4-apache です。ポート 80 がコンテナ内で公開され、コードという名前の ConfigMap がマウントされます。

  1. サービスの定義

Kubernetes では、サービスはポッドのグループのアクセス入口を定義し、ポートを公開するために使用されます。サービスを定義するときは、ターゲット ポッドのラベルと、公開する必要があるポートとプロトコルを指定する必要があります。

具体的な定義方法は以下の通りです:

apiVersion: v1
kind: Service
metadata:
  name: php-service
spec:
  selector:
    app: php
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  type: LoadBalancer

上記のyamlファイルはphp-serviceというServiceを定義しており、ターゲットPodのラベルはapp:php、公開ポートは80、プロトコルは TCP、サービス タイプは LoadBalancer に設定します。

  1. ConfigMap の作成

Deployment の定義で、ConfigMap という名前のコードを指定し、ConfigMap をコンテナーにマウントします。 ConfigMap は構成情報などを保存するために使用され、yaml ファイルまたは kubectl コマンド ライン ツールを通じて作成できます。

具体的な作成方法は次のとおりです。

apiVersion: v1
kind: ConfigMap
metadata:
  name: code-config
data:
  index.php: |
    <?php
    echo "Hello, Kubernetes!";

上記の yaml ファイルは、code-config という名前の ConfigMap を定義します。このファイルには、「Hello, Kubernetes !」という内容のindex.php という名前のファイルが含まれています。 」。

  1. アプリケーションのデプロイ

前述の定義を完了したら、kubectl apply コマンドを使用してアプリケーションを Kubernetes クラスターにデプロイできます。

具体的なコマンドは次のとおりです:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f configmap.yaml

アプリケーションのデプロイが完了したら、kubectl get コマンドを使用してアプリケーションのステータスを表示できます。

3. PHP アプリケーションでの Kubernetes との対話

PHP アプリケーションでは、Kubernetes によって公式に提供されている Kubernetes PHP クライアント ライブラリを使用して、Kubernetes と対話できます。 Kubernetes PHP クライアント ライブラリは Kubernetes API をカプセル化しており、Kubernetes を簡単に操作できます。

Kubernetes PHP クライアント ライブラリを使用する前に、依存関係をインストールする必要があります。 Composer ツールを使用して依存関係をインストールできます。

具体的なインストール方法は次のとおりです。

composer require kubernetes/client-php

依存関係をインストールした後、PHP アプリケーションで Kubernetes PHP クライアント ライブラリを使用できるようになります。以下は、Kubernetes クラスター内のすべての名前空間を取得する簡単な例です。

use KubernetesClient;
use KubernetesClientConfiguration;
use KubernetesClientApiCoreV1Api;

$config = new Configuration();
$config->setHost('https://kubernetes.example.com');
$config->setUsername('user');
$config->setPassword('password');

$client = new Client($config);
$coreV1Api = new CoreV1Api($client);

$namespaces = $coreV1Api->listNamespace()->getItems();

foreach ($namespaces as $namespace) {
    echo $namespace->getMetadata()->getName() . "
";
}

上記のコードは、Kubernetes PHP クライアント ライブラリを通じて Kubernetes API クライアントを作成し、クライアントを通じて CoreV1API の listNamespace メソッドにアクセスして、Kubernetes クラスター内のすべての名前空間を取得します。実際のアプリケーションでも同様の方法でKubernetesを操作できます。

この記事では、Kubernetes クラスターの作成、Kubernetes を使用した PHP アプリケーションのホスト、PHP アプリケーションでの Kubernetes との対話など、PHP で Kubernetes を使用する方法を簡単に紹介します。読者のお役に立てば幸いです。

参考リンク:

  1. Kubernetes 中国語ドキュメント: https://kubernetes.io/zh/docs/home/
  2. Ansible 公式 Web サイト: https:// www .ansible.com/
  3. Terraform 公式 Web サイト: https://www.terraform.io/
  4. Alibaba Cloud Container Service: https://www.aliyun.com/product/container -service
  5. Google Cloud Kubernetes Engine: https://cloud.google.com/kubernetes-engine
  6. Kubernetes PHP クライアント ライブラリ: https://github.com/kubernetes-client/php

以上がPHP で Kubernetes を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。