練習 - 使用 AKS 設定開發環境
在我們的範例案例中,您的小組必須將容器映像從 Azure Container Registry 部署至 AKS。
在本單元中,您將會:
- 在 Azure Cloud Shell 中使用 kubectl 連線到 AKS Kubernetes 叢集。
- 設定 express.js 容器的部署資訊清單。
- 將容器登錄中的容器映像部署至 AKS Kubernetes 叢集。
- 啟用叢集的應用程式閘道。
- 檢閱和部署服務資訊清單檔。
注意
如果您結束 Azure Cloud Shell 索引標籤,您必須重新套用下列命令,或輸入每個步驟的資源名稱。
```azurecli-interactive
# Environment variable for the registry name
REGISTRYNAME={registry_name}
# Environment variable for the resource group name
RESOURCEGROUP={resource-group-name}
# Environment variable for the cluster name
CLUSTERNAME={cluster-name}
```
使用 kubectl 連線至叢集
流覽至 Azure Cloud Shell ,並設定
kubectl
以使用az aks get-credentials
命令連線到 Kubernetes 叢集。az aks get-credentials --resource-group $RESOURCEGROUP --name $CLUSTERNAME
使用
kubectl get nodes
命令來確認叢集的連線,這會傳回叢集節點的清單。kubectl get nodes
使用 命令取得
az acr list
您的ACR login server
名稱。az acr list --resource-group $RESOURCEGROUP --query "[].{acrLoginServer:loginServer}" --output table
將容器部署到 AKS
將目錄變更為
aks
原始程式碼中的資料夾。cd mslearn-cloud-native-apps-express/aks
使用 在 Cloud Shell 中開啟整合式編輯器
code .
開啟檔案
deployment.yaml
以檢閱組態。 其中包含將 express.js 容器部署至 AKS 的指示。# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: cna-express spec: selector: # Define the wrapping strategy matchLabels: # Match all pods with the defined labels app: cna-express # Labels follow the `name: value` template template: # This is the template of the pod inside the deployment metadata: labels: app: cna-express spec: containers: - image: <AcrLoginServer>/expressimage # Add your ACR login server from step 3 here name: expressimage ports: - containerPort: 80
在 中
deployment.yaml
,將 取代<AcrLoginServer>
為您的 ACR 登入伺服器名稱。 請確定您在行尾離開/expressimage
。使用 CTRL S 儲存指令清單檔案,並使用 CTRL + + Q 關閉編輯器。
套用資訊清單
使用
kubectl apply
命令將部署指令清單提交至叢集。kubectl apply -f ./deployment.yaml
此命令應輸出與下列範例相似的結果:
deployment.apps/cna-express created
檢查部署是否使用
kubectl get deploy
命令成功。kubectl get deploy cna-express
此命令應該會輸出與下列範例類似的表格:
NAME READY UP-TO-DATE AVAILABLE AGE cna-express 0/1 1 0 16s
檢查 Pod 是否使用
kubectl get pods
命令執行。kubectl get pods
此命令應該會輸出與下列範例類似的表格:
NAME READY STATUS RESTARTS AGE cna-express-7c58c5f699-r79mv 1/1 Running 0 63s
啟用叢集的應用程式閘道
將 Kubuernetes 叢集完全部署並加以存取可能需要一些時間。 您現在可以啟用叢集的應用程式閘道來節省時間,因為最多可能需要15分鐘才能正常運作。
流覽至 Azure 入口網站,然後選取您的 AKS 叢集。
在 [設定] 底下,選取 [網路]。
在 [流量路由] 底下,核取 [啟用 HTTP 應用程式路由] 的方塊。
在 [應用程式閘道 輸入控件] 底下,核取 [啟用輸入控制器]。
選取套用。
檢閱服務資訊清單
流覽至 Azure Cloud Shell ,並確定您位於
aks
資料夾中。使用
code .
在 Cloud Shell 中開啟整合式編輯器。開啟檔案
service.yaml
以檢閱組態。 您不需要編輯任何專案,只要記下我們將服務cna-express
命名為 。# service.yaml apiVersion: v1 kind: Service metadata: name: cna-express spec: type: ClusterIP selector: app: cna-express ports: - port: 80 # SERVICE exposed port name: http # SERVICE port name protocol: TCP # The protocol the SERVICE will listen to targetPort: 4000
使用 CTRL + Q 關閉編輯器。
部署服務
使用
kubectl apply
命令將服務指令清單提交至叢集。kubectl apply -f ./service.yaml
此命令應輸出與下列範例相似的結果:
service/cna-express created
檢查部署是否使用
kubectl get service
命令成功。kubectl get service cna-express
此命令應輸出與下列範例相似的結果。 請確定資料列
CLUSTER-IP
已填入 IP 位址、資料列EXTERNAL-IP
為<none>
,且資料列PORT(S)
為80/TCP
。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cna-express ClusterIP 10.0.158.189 <none> 80/TCP 42s
外部 IP 如果設為
<none>
,外部用戶端即無法使用此應用程式。 服務將僅供內部叢集存取。 輸入控制器會將其變更。