設定 Azure 環境

已完成

在此單元中,您會使用 Azure CLI 來建立後續單元中所需的 Azure 資源。 在開始輸入指令前,先確認 Docker Desktop 或 Linux 上的 Docker Engine 已安裝並正在執行。

本模組中的範例使用 Bash 語法,包含 export 與反斜線行續寫。 使用本機的 Bash 工作階段來做練習。 在 Windows 上,使用已啟用 Docker Desktop 整合的 WSL 2 Linux 發行版;在該發行版中安裝並使用 Linux Azure CLI 和 Git。 在 macOS 或 Linux 上,使用本地的 Bash 會話,並存取你的 Docker 守護程序。

Azure Cloud Shell 可以執行 Azure 管理命令,但它不會執行 Docker 守護程式,也不能取代此模組的本機映像建置和容器執行步驟。 原生 PowerShell 與命令提示字元需要不同的變數與行續寫語法。

從你將用來進行練習的 Bash 工作階段中,請先檢查你的工具,再建立 Azure 資源:

git --version
az version
docker version

確認三個命令都成功,且docker version顯示可觸達的Server以及用戶端。 如果伺服器無法使用,請先先修復 Docker Desktop、Docker Engine 或 WSL 整合再進行。

若要節省時間,您可以指示 Azure 先布建資源,然後移至下一個單元。 Azure Kubernetes Service (AKS) 叢集建立最多可能需要 10 分鐘的時間。 當您繼續進行後續單元時,此程式可以在背景中執行。

使用 Azure Resource Manager 進行驗證

使用下列命令登入:

az login

選取 Azure 訂用帳戶

Azure 訂用帳戶是用來在 Azure 中布建資源的邏輯容器。 使用下列命令來列出您的 Azure 訂用帳戶,然後找出您打算在此課程模組中使用的訂用帳戶標識碼 - 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 叢集時為您的 AKS 叢集產生唯一的 FQDN。

備註

Azure 容器登錄名稱必須在 Azure 中為全域唯一,且包含 5-50 個英數字元 (僅限字母和數字)。 不允許使用連字符號和底線字元。 在設定 <your-container-registry> 前,請先將 AZ_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

備註

本模組會使用預設安裝在 Azure Cloud Shell 上的 jq 工具,以顯示 JSON 資料並使其更容易閱讀。

如果不想要使用 jq 工具,您可安全移除此模組中所有命令的 | jq 部分。

建立 Azure Container Registry

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-acrAcrPull整合。

對於任何新的或重複使用的、採用 RBAC 登錄檔 + ABAC 儲存庫權限(支援基於屬性的存取控制(ABAC))的登錄檔,則不支援 --attach-acr。 啟用 ABAC 的整合工作流程則需要 Container Registry Repository Reader kubelet 身分識別及供發佈身分識別使用的適當存放庫權限。 請遵循這個工作流程,而不是原封不動地執行這個練習的整合指令。 Microsoft 建議啟用 ABAC 模式;此練習中僅啟用 RBAC 的設定並非建議將現有已啟用 ABAC 的容器登錄降級。

使用下列命令來設定 Azure CLI 以使用此新建立的 Azure Container Registry:

az configure --defaults acr=$AZ_CONTAINER_REGISTRY

使用下列命令向新建立的 Azure Container Registry 進行驗證:

備註

執行az acr login命令前,請確認桌面版 Docker 或 Linux 上的 Docker 引擎正在執行,且其守護程式可從您的 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 叢集

您需要 AKS 叢集來部署 Java 應用程式容器映像。

Important

該 --attach-acr 選項會將 AcrPull 角色分配給 AKS 的 kubelet 身份。 除了建立資源的權限外,您的帳戶還需要具備登錄範圍或其上層範圍中的Microsoft.Authorization/roleAssignments/write權限。 僅靠參與者並不會授與此權限。 如有需要,請請 Azure 管理員執行整合,或授予適當範圍的角色指派權限,例如 Role Based 存取控制 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 索引標籤中繼續,然後移至下一個單元。