チュートリアル:YAML ファイルを使用して複数コンテナー グループをデプロイする
Azure Container Instances では、コンテナー グループを使用して、複数のコンテナーを 1 つのホストにデプロイできます。 コンテナー グループは、サービスが 2 つ目のアタッチされたプロセスを必要とする場合に、ログ記録、監視などの構成用にアプリケーション サイドカーを作成するときに便利です。
このチュートリアルでは、手順に従い、Azure CLI を使って YAML ファイルをデプロイして、2 コンテナーのサイドカー構成を実行します。 YAML ファイルは、インスタンスの設定を指定するための簡潔な形式を提供します。 学習内容は次のとおりです。
- YAML ファイルを構成する
- コンテナー グループをデプロイする
- コンテナーのログを表示する
Note
複数コンテナー グループは、現在、Linux コンテナーに限定されています。
Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
YAML ファイルを構成する
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 サービス リソースをデプロイする必要があるシナリオに簡単に適応できます。