次の方法で共有


チュートリアル: YAML ファイルを使用してマルチコンテナー グループをデプロイする

Azure Container Instances では、 コンテナー グループを使用した 1 つのホストへの複数のコンテナーのデプロイがサポートされています。 コンテナー グループは、ログ記録、監視、またはサービスに 2 つ目のアタッチされたプロセスが必要なその他の構成用にアプリケーション サイドカーを構築する場合に便利です。

このチュートリアルでは、Azure CLI を使用して YAML ファイル をデプロイして、2 コンテナーサイドカー構成を実行する手順に従います。 YAML ファイルは、インスタンス設定を指定するための簡潔な形式を提供します。 次の方法を学びます:

  • YAML ファイルを構成する
  • コンテナー グループをデプロイする
  • コンテナーのログを表示する

現在、複数コンテナー グループは Linux コンテナーに制限されています。

Azure アカウントをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

[前提条件]

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の概要」を参照してください。

  • CLI 参照コマンドをローカルで実行する場合は、Azure CLI を インストール します。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、「 Azure CLI を使用した Azure への認証」を参照してください。

    • 初回使用時にインストールを求められたら、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 ファイルは、"myContainerGroup" という名前のコンテナー グループを、2 つのコンテナー、パブリック IP アドレス、および 2 つの公開ポートで定義します。 コンテナーは、パブリック 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 サービス リソースをデプロイする必要があるシナリオに簡単に適応できます。