練習 - 使用 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 連線至叢集

  1. 流覽至 Azure Cloud Shell ,並設定 kubectl 以使用 az aks get-credentials 命令連線到 Kubernetes 叢集。

    az aks get-credentials --resource-group $RESOURCEGROUP --name $CLUSTERNAME
    
  2. 使用 kubectl get nodes 命令來確認叢集的連線,這會傳回叢集節點的清單。

    kubectl get nodes
    
  3. 使用 命令取得az acr list您的ACR login server名稱。

    az acr list --resource-group $RESOURCEGROUP --query "[].{acrLoginServer:loginServer}" --output table
    

將容器部署到 AKS

  1. 將目錄變更為 aks 原始程式碼中的資料夾。

    cd mslearn-cloud-native-apps-express/aks
    
  2. 使用 在 Cloud Shell 中開啟整合式編輯器 code .

  3. 開啟檔案 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
    
  4. 在 中 deployment.yaml,將 取代 <AcrLoginServer> 為您的 ACR 登入伺服器名稱。 請確定您在行尾離開 /expressimage

  5. 使用 CTRL S 儲存指令清單檔案,並使用 CTRL + + Q 關閉編輯器。

套用資訊清單

  1. 使用 kubectl apply 命令將部署指令清單提交至叢集。

    kubectl apply -f ./deployment.yaml
    

    此命令應輸出與下列範例相似的結果:

    deployment.apps/cna-express created
    
  2. 檢查部署是否使用 kubectl get deploy 命令成功。

    kubectl get deploy cna-express
    

    此命令應該會輸出與下列範例類似的表格:

    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    cna-express       0/1     1            0           16s
    
  3. 檢查 Pod 是否使用 kubectl get pods 命令執行。

    kubectl get pods
    

    此命令應該會輸出與下列範例類似的表格:

    NAME                               READY   STATUS    RESTARTS   AGE
    cna-express-7c58c5f699-r79mv       1/1     Running   0          63s
    

啟用叢集的應用程式閘道

將 Kubuernetes 叢集完全部署並加以存取可能需要一些時間。 您現在可以啟用叢集的應用程式閘道來節省時間,因為最多可能需要15分鐘才能正常運作。

  1. 流覽至 Azure 入口網站,然後選取您的 AKS 叢集。

  2. 在 [設定] 底下,選取 [網路]

  3. 在 [流量路由] 底下,核取 [啟用 HTTP 應用程式路由] 的方塊

  4. 在 [應用程式閘道 輸入控件] 底下,核取 [啟用輸入控制器]。

  5. 選取套用

檢閱服務資訊清單

  1. 流覽至 Azure Cloud Shell ,並確定您位於 aks 資料夾中。

  2. 使用 code .在 Cloud Shell 中開啟整合式編輯器。

  3. 開啟檔案 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
    
  4. 使用 CTRL + Q 關閉編輯器。

部署服務

  1. 使用 kubectl apply 命令將服務指令清單提交至叢集。

    kubectl apply -f ./service.yaml
    

    此命令應輸出與下列範例相似的結果:

    service/cna-express created
    
  2. 檢查部署是否使用 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>,外部用戶端即無法使用此應用程式。 服務將僅供內部叢集存取。 輸入控制器會將其變更。