Azure 環境を設定する

完了済み

このユニットでは、Azure CLI を使用して、後のユニットで必要な Azure リソースを作成します。 コマンドの入力を開始する前に、Docker Desktop または Linux の Docker Engine がインストールされ、実行されていることを確認します。

このモジュールの例では、export やバックスラッシュによる行継続など、Bash 構文を使用します。 演習にはローカル Bash セッションを使用します。 Windowsでは、Docker Desktop 統合が有効な WSL 2 Linux ディストリビューションを使用します。そのディストリビューションに Linux Azure CLIと Git をインストールして使用します。 macOS または Linux では、Docker デーモンにアクセスできるローカル Bash セッションを使用します。

Azure Cloud Shell は Azure 管理コマンドを実行できますが、Docker デーモンは実行されず、このモジュールのローカル イメージ ビルドとコンテナー実行手順の代わりにはなりません。 ネイティブ PowerShell とコマンド プロンプトでは、異なる変数構文と行継続構文を使用します。

演習に使用する Bash セッションから、Azure リソースを作成する前にツールを確認してください。

git --version
az version
docker version

3 つのコマンドがすべて成功し、 docker version がクライアントと同様に到達可能な Server を示していることを確認します。 サーバーが使用できない場合は、続行する前に Docker Desktop、Docker Engine、または WSL 統合を修正してください。

時間を節約するために、最初にリソースをプロビジョニングしてから次のユニットに進むよう Azure に指示できます。 Azure Kubernetes Service (AKS) クラスターの作成には、最大で 10 分かかることがあります。 このプロセスは、後続のユニットを進めながらバックグラウンドで実行できます。

Azure Resource Manager で認証する

次のコマンドを使用してサインインします。

az login

Azure サブスクリプションを選択する

Azure サブスクリプションは、Azure でリソースをプロビジョニングするために使用される論理コンテナーです。 次のコマンドを使用して Azure サブスクリプションを一覧表示し、このモジュールで使用するサブスクリプション ID ( SubscriptionId 値) を見つけます。

az account list --output table

次のコマンドを使用して、このモジュールの目的でリソースを作成できる Azure サブスクリプションを使用していることを確認し、プレースホルダーの優先 SubscriptionId 値を置き換えます。

az account set --subscription "<your-subscription-ID>"

ローカル変数を定義する

後で使用するコマンドを簡略化するには、次の環境変数を設定します。 次のプレースホルダーを実際の値に置き換えてください。

  • <your-Azure-region>を選択したリージョン (eastusなど) に置き換えます。
  • <your-container-registry>を一意の値に置き換えます。 この値は、作成時に Azure コンテナー レジストリの一意の完全修飾ドメイン名 (FQDN) を生成するために使用されます。
  • <your-unique-DNS-prefix-to-access-your-AKS-cluster>を一意の値に置き換えます。 この値は、AKS クラスターの作成時に一意の FQDN を生成するために使用されます。

注

Azureコンテナー レジストリ名は、Azure全体でグローバルに一意であり、5~50文字の英数字(文字と数字のみ)のみを含む必要があります。 ハイフンとアンダースコアは使用できません。 AZ_CONTAINER_REGISTRY を設定する前に、<your-container-registry> を準拠しており、使用可能な名前に置き換えます。 詳細については、「コンテナー レジストリの名前付け要件」を参照してください。

export AZ_RESOURCE_GROUP=java-containerization-demo-rg
export AZ_CONTAINER_REGISTRY=<your-container-registry>
export AZ_KUBERNETES_CLUSTER=java-containerization-demo-aks
export AZ_LOCATION=<your-Azure-region>
export AZ_KUBERNETES_CLUSTER_DNS_PREFIX=<your-unique-DNS-prefix-to-access-your-AKS-cluster>

Azure リソース グループを作成する

Azure リソース グループは、Azure ソリューションの関連リソースを保持するための Azure サブスクリプション内の Azure コンテナーです。 次のコマンドを使用してリソース グループを作成します。

az group create \
    --name $AZ_RESOURCE_GROUP \
    --location $AZ_LOCATION \
| jq

注

このモジュールでは、 jq ツールを使用します。このツールは 、既定で Azure Cloud Shell にインストールされ、JSON データを表示し、読みやすくします。

jq ツールを使用したくなければ、このモジュールのすべてのコマンドの、| jq の部分を安全に削除できます。

Azure コンテナー レジストリを作成する

Azure Container Registry を使用すると、この Java アプリのコンテナー イメージを含め、コンテナー イメージをビルド、格納、管理できます。 次のコマンドを使用して、コンテナー レジストリを作成します。

az acr create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_CONTAINER_REGISTRY \
    --sku Basic \
    --role-assignment-mode rbac \
| jq

--role-assignment-mode rbac オプションは、ロールベースのアクセス制御 (RBAC) のみのアクセス許可を明示的に選択します。 これで、この演習で使用される --attach-acr と AcrPull の統合が保持されます。

属性ベースのアクセス制御 (ABAC) をサポートする RBAC レジストリと ABAC リポジトリのアクセス許可を使用する新規または再利用されたレジストリの場合、 --attach-acr はサポートされていません。 ABAC 対応の統合ワークフローでは、代わりに、kubelet ID 用の Container Registry Repository Reader と、発行 ID に対する適切なリポジトリのアクセス許可が必要です。 この演習の統合コマンドを変更せずに実行するのではなく、そのワークフローに従います。 Microsoft は ABAC 対応モードを推奨しています。この演習の RBAC のみの設定は、既存の ABAC 対応レジストリをダウングレードするための推奨事項ではありません。

次のコマンドを使用して、この新しく作成された Azure コンテナー レジストリを使用するように Azure CLI を構成します。

az configure --defaults acr=$AZ_CONTAINER_REGISTRY

新しく作成された Azure コンテナー レジストリに対して認証するには、次のコマンドを使用します。

注

az acr login コマンドを実行する前に、Docker Desktop または Docker Engine on Linux が実行されていること、およびそのデーモンが Bash セッションから到達可能であることを確認します。 到達できない場合は、次のようなエラー メッセージが表示されます。 Cannot connect to the Docker daemon at unix:///$HOME_DIR/.docker/run/docker.sock. Is the docker daemon running?

az acr login --name $AZ_CONTAINER_REGISTRY

Azure Kubernetes Service クラスターを作成する

Java アプリ コンテナー イメージをデプロイするには、AKS クラスターが必要です。

Important

--attach-acr オプションは、AKS kubelet IDENTITY に AcrPull ロールを割り当てます。 リソースを作成するアクセス許可に加えて、アカウントにはレジストリ スコープまたは親スコープで Microsoft.Authorization/roleAssignments/write が必要です。 投稿者 だけでは、この権限は付与されません。 必要に応じて、Azure 管理者に統合を実行するよう依頼するか、必要なリソース管理アクセス許可に加えて、Role Based Access Control Administrator などの適切なスコープのロール割り当てアクセス権を付与するよう依頼してください。

次のコマンドを使用して AKS クラスターを作成します。

az aks create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_KUBERNETES_CLUSTER \
    --attach-acr $AZ_CONTAINER_REGISTRY \
    --dns-name-prefix=$AZ_KUBERNETES_CLUSTER_DNS_PREFIX \
    --generate-ssh-keys \
| jq

注

AKS クラスターの作成には、最大で 10 分かかることがあります。 前のコマンドを実行したら、Azure CLI タブで続行し、次のユニットに進むことができます。