次の方法で共有


デプロイを実行するようにコンテナー イメージを構成する

この記事では、カスタム コンテナー イメージを構築し、Azure Deployment Environments (ADE) に環境定義をデプロイする方法を説明します。

環境定義は、少なくとも 2 つのファイル、すなわち、テンプレート ファイル (例: azuredeploy.json) とマニフェスト ファイル (environment.yaml という名前) で構成されます。 ADE は、コンテナーを使用して環境定義をデプロイし、Azure Resource Manager (ARM) と Bicep IaC のフレームワークをネイティブにサポートします。

ADE 機能拡張モデルにより、カスタム コンテナー イメージを作成して環境定義で使用することができます。 この機能拡張モデルを使用すると、独自のカスタム イメージを作成し、それらのイメージをコンテナー レジストリ (DockerHub など) に格納できます。 その後、環境定義でこれらのイメージを参照して、環境をデプロイできます。

ADE チームからは作業を始めるのに適したイメージが選択されて提供されており、それにはコア イメージや Azure Resource Manager (ARM)/Bicep イメージが含まれます。 これらのサンプル イメージには、Runner-Images フォルダーでアクセスできます。

前提条件

ADE でコンテナー イメージを使用する

ADE でコンテナー イメージを使用するには、次のいずれかの方法を使用できます。

  • 標準コンテナー イメージを使用する: 単純なシナリオでは、ADE によって提供される標準の Bicep コンテナー イメージを使用します。
  • カスタム コンテナー イメージを作成する: より複雑なシナリオでは、特定の要件を満たすカスタム コンテナー イメージを作成します。

選択した方法に関係なく、Azure リソースをデプロイするには、環境定義でコンテナー イメージを指定する必要があります。

標準イメージを使用する

ADE では Bicep がネイティブにサポートされるため、テンプレート ファイル (azuredeploy.json と environment.yaml) をカタログに追加することで、デプロイ環境用の Azure リソースをデプロイする環境定義を構成できます。 その後、ADE では標準の Bicep コンテナー イメージを使用してデプロイ環境を作成します。

environment.yaml ファイルの runner プロパティでは、使用するコンテナー イメージの場所を指定します。 Microsoft アーティファクト レジストリで公開されているサンプル イメージを使うには、次の表に一覧表示されているそれぞれの識別子の runner を使います。

次の例は、サンプルの Bicep コンテナー イメージを参照する runner を示しています。

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

標準の Bicep コンテナー イメージは、ARM-Bicep イメージの Runner-Images フォルダーの下にある ADE サンプル リポジトリで確認できます。

ADE コンテナー イメージを使用して Azure リソースをデプロイする環境定義を作成する方法の詳細については、「環境定義を構成して追加する」を参照してください。

カスタム コンテナー イメージを作成する

カスタム コンテナー イメージを作成すると、要件に合わせてデプロイをカスタマイズできます。 ADE 標準コンテナー イメージに基づいてカスタム イメージを作成できます。

イメージのカスタマイズが完了したら、イメージをビルドし、それをコンテナー レジストリにプッシュする必要があります。

Docker を使用してコンテナー イメージを作成し、カスタマイズする

この例では、ADE で作成されたイメージのいずれかを基にして、ADE のデプロイを利用して ADE CLI にアクセスする Docker イメージをビルドする方法について説明します。

ADE CLI は、ADE の基本イメージを使ってカスタム イメージを構築できるツールです。 ADE CLI を使い、ワークフローに合わせてデプロイと削除をカスタマイズできます。 サンプル イメージには、ADE CLI がプレインストールされています。 ADE CLI について詳しくは、CLI カスタム ランナー イメージ リファレンスに関する記事をご覧ください。

ADE 用に構成されたイメージの作成は、次の手順に従って行います。

  1. ADE で作成されたサンプル イメージまたは FROM ステートメントを使って選んだ任意のイメージを基にして、イメージを作成します。
  2. RUN ステートメントを使って、イメージに必要なパッケージをインストールします。
  3. Dockerfile と同じレベルに scripts フォルダーを作成し、その中に deploy.shdelete.sh ファイルを格納して、作成されたコンテナー内でそれらのスクリプトを検出して実行できるようにします。 デプロイが ADE コア イメージを使って動作するためには、このステップが必要です。

FROM ステートメントを使用してサンプル コンテナー イメージを選択する

ADE のデプロイを利用して ADE CLI にアクセスする Docker イメージをビルドするには、ADE で作成されたイメージのいずれかを、そのイメージの基にする必要があります。 Microsoft Artifact Registry でホストされている ADE で作成されたサンプル イメージを指す FROM ステートメントを、新しいイメージ用に作成される DockerFile に含めます。 ADE で作成したイメージを使用する場合、カスタム イメージは ADE コア イメージに基づくものにします。

サンプル コア イメージを参照する FROM ステートメントの例を次に示します。

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

このステートメントは、最も新しく公開されたコア イメージをプルして、それをカスタム イメージの基礎にします。

イメージにパッケージをインストールする

次の例に示すように、RUN ステートメントを使って、Azure CLI でパッケージをインストールできます。

RUN az bicep install

ADE サンプル イメージは Azure CLI イメージに基づいており、ADE CLI と JQ のパッケージがプレインストールされています。 詳しくは、Azure CLIJQ パッケージに関するページをご覧ください。

イメージ内で必要なパッケージをさらにインストールするには、RUN ステートメントを使います。

操作のシェル スクリプトを実行する

サンプル イメージ内では、操作名に基づいて操作が決定されて実行されます。 現在サポートされている 2 つの操作名は、deploydelete です。

この構造を利用するようにカスタム イメージを設定するには、Dockerfile のレベルで scripts という名前のフォルダー指定し、2 つのファイル deploy.shdelete.sh を指定します。deploy シェル スクリプトは環境の作成時または再デプロイ時に実行され、delete シェル スクリプトは環境の削除時に実行されます。 リポジトリ内のシェル スクリプトの例は、Runner-Images フォルダー イメージの下で確認できます。

これらのシェル スクリプトを確実に実行できるようにするには、Dockerfile に次の行を追加します。

COPY scripts/* /scripts/
RUN find /scripts/ -type f -iname "*.sh" -exec dos2unix '{}' '+'
RUN find /scripts/ -type f -iname "*.sh" -exec chmod +x {} \;

カスタム イメージを ADE で利用できるようにする

Docker イメージをビルドし、それをコンテナー レジストリにプッシュして、ADE で使用できるようにする必要があります。 Docker CLI を使用するか、ADE から提供されるスクリプトを使用してイメージをビルドできます。

適切なタブを選択し、各アプローチの詳細を確認します。

レジストリにプッシュされるイメージをビルドする前に、コンピューターに Docker エンジンがインストールされていることを確認します。 その後、Dockerfile のディレクトリに移動して、次のコマンドを実行します。

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

たとえば、customImage という名前のレジストリ内のリポジトリにイメージを保存し、1.0.0 のタグ バージョンを使ってアップロードする場合は、次のように実行します。

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

イメージをレジストリにプッシュする

カスタム イメージを使うには、匿名イメージ プルを有効にして、パブリックにアクセスできるイメージ レジストリを設定する必要があります。 このようにして、Azure Deployment Environments はコンテナー内のカスタム イメージにアクセスして実行できます。

Azure Container Registry は、コンテナー イメージおよび同様の成果物を格納する Azure オファリングです。

Azure CLI、Azure portal、PowerShell コマンドなどを使ってレジストリを作成するには、いずれかのクイックスタートのようにします。

レジストリで匿名イメージ プルを有効に設定するには、Azure CLI で次のコマンドを実行します。

az login
az acr login -n {YOUR_REGISTRY}
az acr update -n {YOUR_REGISTRY} --public-network-enabled true
az acr update -n {YOUR_REGISTRY} --anonymous-pull-enabled true

イメージをレジストリにプッシュする準備ができたら、次のコマンドを実行します。

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

環境定義にイメージを接続する

デプロイ内のカスタム イメージを使用する環境定義を作成するときは、マニフェスト ファイル (environment.yaml または manifest.yaml) で runner プロパティを編集します。

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

操作ログとエラーの詳細にアクセスする

ADE は、失敗したデプロイに関するエラーの詳細をコンテナー内の $ADE_ERROR_LOG ファイルに格納します。

失敗したデプロイのトラブルシューティングを行うには:

  1. 開発者ポータルにサインインします。

  2. デプロイに失敗した環境を特定して、[詳細の表示] を選びます。

    失敗したデプロイ エラーの詳細 (具体的にはストレージ アカウントの無効な名前) を示すスクリーンショット。

  3. [エラーの詳細] セクションでエラーの詳細を確認します。

    [詳細の表示] ボタンが表示されている、環境のデプロイ失敗を示すスクリーンショット。

さらに、Azure CLI の次のコマンドを使って、環境のエラーの詳細を表示できます。

az devcenter dev environment show --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}

環境のデプロイまたは削除の操作ログを表示するには、Azure CLI を使って環境の最新の操作を取得し、その操作 ID のログを表示します。

# Get list of operations on the environment, choose the latest operation
az devcenter dev environment list-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}
# Using the latest operation ID, view the operation logs
az devcenter dev environment show-logs-by-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME} --operation-id {LATEST_OPERATION_ID}