チュートリアル:YAML ファイルを使用して複数コンテナー グループをデプロイする
- [アーティクル]
-
-
Azure Container Instances では、コンテナー グループを使用して、複数のコンテナーを 1 つのホストにデプロイできます。 コンテナー グループは、サービスが 2 つ目のアタッチされたプロセスを必要とする場合に、ログ記録、監視などの構成用にアプリケーション サイドカーを作成するときに便利です。
このチュートリアルでは、手順に従い、Azure CLI を使って YAML ファイルをデプロイして、2 コンテナーのサイドカー構成を実行します。 YAML ファイルは、インスタンスの設定を指定するための簡潔な形式を提供します。 学習内容は次のとおりです。
- YAML ファイルを構成する
- コンテナー グループをデプロイする
- コンテナーのログを表示する
注意
複数コンテナー グループは、現在、Linux コンテナーに限定されています。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
Azure CLI の az container create コマンドを使用して複数コンテナー グループをデプロイするには、YAML ファイル内にコンテナー グループ構成を指定する必要があります。 その後、YAML ファイルをパラメーターとしてコマンドに渡します。
まず、次の YAML を deploy-aci.yaml という名前の新しいファイルにコピーします。 Azure Cloud Shell では、Visual Studio Code を使用して作業ディレクトリにファイルを作成できます。
code deploy-aci.yaml
この YAML ファイルでは、2 つのコンテナー、パブリック IP アドレス、および公開された 2 つのポートを備える "myContainerGroup" というコンテナー グループが定義されます。 コンテナーは、パブリック Microsoft イメージからデプロイされます。 グループの最初のコンテナーでは、インターネットに接続する Web アプリケーションが実行されます。 2 番目のコンテナーであるサイドカーは、コンテナー グループのローカル ネットワークを介して最初のコンテナーで実行されている Web アプリケーションに定期的に HTTP 要求を行います。
apiVersion: 2019-12-01
location: eastus
name: myContainerGroup
properties:
containers:
- name: aci-tutorial-app
properties:
image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 80
- port: 8080
- name: aci-tutorial-sidecar
properties:
image: mcr.microsoft.com/azuredocs/aci-tutorial-sidecar
resources:
requests:
cpu: 1
memoryInGb: 1.5
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: 80
- protocol: tcp
port: 8080
tags: {exampleTag: tutorial}
type: Microsoft.ContainerInstance/containerGroups
プライベート コンテナー イメージ レジストリを使用するには、お使いの環境に合わせて変更された値を含む imageRegistryCredentials
プロパティをコンテナー グループに追加します。
imageRegistryCredentials:
- server: imageRegistryLoginServer
username: imageRegistryUsername
password: imageRegistryPassword
az group create コマンドでリソース グループを作成します。
az group create --name myResourceGroup --location eastus
az container create コマンドでコンテナー グループをデプロイし、YAML ファイルを引数として渡します。
az container create --resource-group myResourceGroup --file deploy-aci.yaml
数秒以内に、Azure から最初の応答を受信します。
デプロイの状態を表示するには、次の az container show コマンドを使用します。
az container show --resource-group myResourceGroup --name myContainerGroup --output table
実行中のアプリケーションを表示するには、ご利用のブラウザーでその IP アドレスにアクセスします。 たとえば、次の出力例では IP は 52.168.26.124
です。
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
コンテナーのログ出力を表示するには、az container logs コマンドを使用します。 --container-name
引数は、プルするログが含まれるコンテナーを指定します。 この例では、aci-tutorial-app
コンテナーが指定されています。
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
出力:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
サイドカー コンテナーのログを表示するには、aci-tutorial-sidecar
コンテナーを指定して、同様のコマンドを実行します。
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
出力:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
このように、サイドカーは、グループのローカル ネットワーク経由でメインの Web アプリケーションに定期的に HTTP 要求を実行して、それが実行していることを確認します。 このサイドカーの例は、200 OK
以外の HTTP 応答コードを受け取ったときに、アラートをトリガーするように拡張できます。
このチュートリアルでは、YAML ファイルを使用して、Azure Container Instances に複数コンテナー グループをデプロイしました。 以下の方法を学習しました。
- マルチコンテナー グループ用の YAML ファイルを構成する
- コンテナー グループをデプロイする
- コンテナーのログを表示する
Resource Manager テンプレートを使用して、マルチコンテナー グループを指定することもできます。 Resource Manager テンプレートは、コンテナー グループでさらに多くの Azure サービス リソースをデプロイする必要があるシナリオに簡単に適応できます。