コンテナオーケストレーションとは、コンテナのセットの動作ルールとネットワーク構成を定義および管理することにより、アプリケーションの展開と管理を指します。 PHPアプリケーションでは、一般的なコンテナオーケストレーションツールはDockerおよびKubernetesです。
Dockerは、コンテナを介したアプリケーションのパッケージングと展開を実装する軽量仮想化テクノロジーです。 Dockerは、アプリケーションのパッケージ化と実行方法を定義できる一連のコマンドと構成ファイルを提供します。 Dockerのコンテナオーケストレーションを通じて、PHPコンテナをすばやく作成して起動し、自動展開と管理を実行できます。
以下は、Dockerを使用したPHPコンテナオーケストレーションの例です。
#dockerfile #PHP:7.4-Apacheから基本な画像を指定します #PHP拡張機能をインストールしてくださいDocker-PHP-Ext-Install MySqli PDO_Mysqlを実行します #アプリケーションコードをコンテナコピーにコピーします。 /var/www/html #コンテナの作業ディレクトリWorkDir/var/www/htmlを設定します #コンテナの80ポートを公共する80 #ApacheサーバーCMDを起動["apache2-foreground"]
上記のDockerFileを介して、PHP 7.4とApacheサーバーを含む画像を作成し、アプリケーションコードをコンテナにコピーし、最後にCMDディレクティブを介してApacheサービスを開始できます。
Kubernetesは、コンテナ化されたアプリケーションをより適切に管理および拡張するのに役立つオープンソースコンテナオーケストレーションプラットフォームです。 Kubernetesでは、アプリケーションのレプリカの数、リソース制限、ネットワーク構成などを定義し、Kubernetesスケジューラを使用してコンテナを自動的に展開および管理できます。
Kubernetesを使用したPHPコンテナオーケストレーションの例は次のとおりです。
#deployment.yaml
Apiversion:Apps/V1
種類:展開
メタデータ:
名前:PHP-APP
仕様:
レプリカ:3
セレクタ:
マッチラベル:
アプリ:PHP-APP
テンプレート:
メタデータ:
ラベル:
アプリ:PHP-APP
仕様:
コンテナ:
- 名前:PHP-APP
画像:PHP:7.4-Apache
ポート:
-containerport:80
ボリュームマウント:
- 名前:app-data
MountPath:/var/www/html
ボリューム:
- 名前:app-data
emptydir:{}
上記のdeployment.yamlファイルを介して、3つのレプリカを使用したPHPアプリケーションの展開を定義します。各レプリカはPHP:7.4-Apacheイメージを使用し、/var/www/htmlディレクトリを共有ボリュームとして取り付けます。
サービスオーケストレーションとは、コンテナのセットの動作ステータスとネットワークアクセスルールを定義および管理することにより、サービスの発見とアプリケーションの負荷分散の実装を指します。 PHPアプリケーションでは、一般的なサービスオーケストレーションツールはDocker ComposeとKubernetesです。
Docker Composeは、複数のDockerコンテナを定義および実行するためのツールです。構成ファイルを介して、複数のコンテナ間の関係と依存関係を定義できます。 Docker Composeのサービスオーケストレーションを通じて、複数の関連するPHPコンテナを迅速に作成および起動し、ネットワーク接続とそれらの間のサービスの発見を定義できます。
Docker Composeを使用したPHPサービスオーケストレーションの例は次のとおりです。
#docker-compose.yaml
バージョン: '3'
サービス:
php-app:
確立するてる:
コンテクスト: 。
dockerfile:dockerfile
ポート:
-8080:80
ボリューム:
- 。:/var/www/html
deprofs_on:
-MySQL
mysql:
画像:MySQL:5.7
環境:
-mysql_root_password = secret
-MySQL_DataBase = PHP_APP_DB
上記のDocker-Compose.yamlファイルを介して、PHPアプリケーションとMySQLデータベースを含むサービスオーケストレーションを定義します。 PHPアプリケーションは、定義されたDockerFilesを使用して構築され、ローカルコードディレクトリはコンテナに取り付けられています。 MySQLサービスはMySQL:5.7画像で作成され、データベースのパスワードと名前を構成するために環境変数を設定しています。
Kubernetesでは、サービスとイングレスを使用して、コンテナサービスの発見と負荷分散を達成できます。サービスは、コンテナ間のネットワーク接続ルールを定義するために使用され、Ingressはコンテナサービスの外部アクセスルールを定義するために使用されます。
PHPサービスオーケストレーションにKubernetesを使用する例は次のとおりです。
#service.yaml
Apiversion:V1
種類:サービス
メタデータ:
名前:php-app-service
仕様:
セレクタ:
アプリ:PHP-APP
ポート:
- プロトコル:TCP
ポート:80
ターゲットポート:80
タイプ:nodeport
上記のservice.yamlファイルを介して、PHP-App-Serviceという名前のサービスオブジェクトを定義して、外部ネットワークトラフィックをコンテナラベルのアプリ:PHP-APPに転送します。同時に、コンテナで使用されるポート番号を80にすることを指定し、クラスターノードのIPアドレスと露出したポートを介してPHPアプリケーションにアクセスできるように、サービスタイプをNodePortに設定しました。
コンテナオーケストレーションとサービスオーケストレーションは、PHPアプリケーションのパッケージングの展開において重要な役割を果たします。コンテナオーケストレーションを通じて、PHPコンテナをすばやく作成および管理し、アプリケーションの実行環境と構成を定義できます。サービスオーケストレーションを通じて、PHPコンテナサービスの発見と負荷分散を実現でき、アプリケーションの可用性とパフォーマンスが向上します。
DockerまたはKubernetesを使用するかどうかにかかわらず、コンテナオーケストレーションとサービスオーケストレーションは、PHPアプリケーションの効率的な展開と管理を実現するのに役立ちます。上記の紹介と例が、誰もがコンテナオーケストレーションとサービスオーケストレーションを理解し、適用するのに役立つことを願っています。