共用方式為


從裝載於 Azure Kubernetes Service 的您的應用程式連線至 Azure Cache for Redis 或 Azure 管理型 Redis 的教學課程

在本教學課程中,您會使用此 範例 來與 Azure Cache for Redis 或 Azure 受控 Redis 實例連線。

先決條件

這很重要

本教學課程假設您已熟悉基本的 Kubernetes 概念,例如容器、Pod 和服務。

設定 Azure Cache Redis 實例

  1. 使用 Azure 入口網站或您慣用的 CLI 工具來建立新的 Azure Cache for Redis 執行個體。 使用快速入門指南來開始使用。 或者,您也可以建立 Azure 受控 Redis 實例。

    在本教學課程中,請使用標準 C1 快取。 在 Azure 入口網站中建立標準 C1 快取的螢幕快照

  2. 完成建立快取的步驟。

  3. 建立 Redis 快取實例之後,請流覽至 [ 驗證] 索引標籤。選取您要用來連線到 Redis 快取實例的使用者指派受控識別,然後選取 [ 儲存]。

  4. 或者,您可以在 [資源] 功能表上流覽至 [數據存取組態],以使用使用者指派的受控識別來建立新的 Redis 使用者,以連線到快取。

  5. 請記下入口網站中 Redis 使用者的用戶名稱。 您可以使用此使用者名稱搭配 AKS 工作負載。

在本機執行範例

若要在本機執行此範例,請將您的用戶主體設定為 Redis 實例上的 Redis 使用者。 程式代碼範例會透過 DefaultAzureCredential 使用您的用戶主體來連線到 Redis 實例。

設定 AKS 叢集

請遵循 下列步驟 來設定 AKS 叢集的工作負載身分識別。

然後,完成下列步驟:

  • 啟用 OIDC 簽發者和工作負載身分識別
  • 如果您已建立受控識別,請略過建立使用者指派受控識別的步驟。 如果您建立新的受控識別,請確定您為受控識別建立新的 Redis 使用者,並指派適當的數據訪問許可權。
  • 建立以使用者指派受控識別的用戶端標識碼標註的 Kubernetes Service 帳戶
  • 為您的 AKS 叢集建立同盟身分識別認證。

設定連線至 Azure Cache for Redis 的工作負載

接下來,設定 AKS 工作負載,以在設定 AKS 叢集之後連線到 Azure Cache for Redis。

  1. 下載範例應用程式的代碼

  2. 使用 az acr build 命令,建置 Docker 映射並推送至您的 Azure Container Registry。

     az acr build --image sample/connect-from-aks-sample:1.0 --registry yourcontainerregistry --file Dockerfile .
    
  3. 使用下列命令將容器登錄附加至您的 AKS 叢集:

    az aks update --name clustername --resource-group mygroup --attach-acr youracrname
    

部署工作負載

在本節中,您會先安裝 Kubernetes CLI,然後連線到 AKS 叢集。

安裝 Kubernetes CLI

使用 Kubernetes CLI kubectl,從本機電腦連線到 Kubernetes 叢集。 如果您要在本機執行,您可以使用下列命令來安裝 kubectl

az aks install-cli

如果您使用 Azure Cloud Shell,kubectl 已經安裝好,而且您可以略過此步驟。

連線至您的 AKS 叢集

  1. 使用入口網站來複製 AKS 叢集的資源群組和叢集名稱。 若要設定 kubectl 以連線到 AKS 叢集,請使用下列命令搭配您的資源群組和叢集名稱:

    az aks get-credentials --resource-group myResourceGroup --name myClusterName
    
  2. 執行下列命令,確認您能夠連線到叢集:

    kubectl get nodes
    

    您應該會看到類似的輸出,其中顯示叢集節點的清單。

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-agentpool-21274953-vmss000001   Ready    agent   1d    v1.29.7
    aks-agentpool-21274953-vmss000003   Ready    agent   1d    v1.29.7
    aks-agentpool-21274953-vmss000006   Ready    agent   1d    v1.29.7
    

執行您的工作負載

  1. 下列程式碼描述您用來執行工作負載的 Pod 規格檔案。 請注意,Pod 具有 azure.workloadidentity/use 標籤:"true" ,並且根據 AKS 工作負載身分識別的要求加上註釋 serviceAccountName。 使用存取金鑰驗證時,請取代AUTHENTICATION_TYPE、REDIS_HOSTNAME、REDIS_ACCESSKEY和REDIS_PORT環境變數的值。 針對 Azure 受控 Redis 實例,將 REDIS_PORT 的值設定為 10000。

     apiVersion: v1
     kind: Pod
     metadata:
       name: entrademo-pod
       labels:
         azure.workload.identity/use: "true"  # Required. Only pods with this label can use workload identity.
     spec:
       serviceAccountName: workload-identity-sa
       containers:
       - name: entrademo-container
         image: youracr.azurecr.io/connect-from-aks-sample:1.0
         imagePullPolicy: Always
         command: ["dotnet", "ConnectFromAKS.dll"] 
         resources:
           limits:
             memory: "256Mi"
             cpu: "500m"
           requests:
             memory: "128Mi"
             cpu: "250m"
         env:
              - name: AUTHENTICATION_TYPE
                value: "MANAGED_IDENTITY" # change to ACCESS_KEY to authenticate using access key
              - name: REDIS_HOSTNAME
                value: "your redis hostname"
              - name: REDIS_ACCESSKEY
                value: "your access key" 
              - name: REDIS_PORT
                value: "6380" # change to 10000 for Azure Managed Redis
       restartPolicy: Never
    
    
  2. 執行 folloWing 命令,將此檔案儲存為 podspec.yaml,然後將它套用至您的 AKS 叢集:

    kubectl apply -f podspec.yaml
    

    您會收到顯示已建立 Pod 的回應。

    pod/entrademo-pod created
    
  3. 若要測試應用程式,請執行下列命令來檢查 Pod 是否正在執行:

    kubectl get pods
    

    您會看到您的 Pod 成功執行,如下所示:

    NAME                       READY   STATUS      RESTARTS       AGE
    entrademo-pod              0/1     Completed   0              42s
    
  4. 因為本教學課程是主控台應用程式,所以您必須檢查 Pod 的記錄,以確認其如預期般使用此命令執行。

    kubectl logs entrademo-app
    

    您會看到下列記錄,指出您的 Pod 已使用使用者指派的受控識別成功連線到 Redis 實例

    Connecting with managed identity..
    Retrieved value from Redis: Hello, Redis!
    Success! Previous value: Hello, Redis!
    

清除叢集

若要清除叢集,請執行下列命令:

kubectl delete pod entrademo-pod

清理資源

如果您想要繼續使用在本文中建立的資源,請保留該資源群組。

否則,若已完成資源使用,則可刪除您建立的 Azure 資源群組,以避免衍生費用。

這很重要

刪除資源群組是無法回復的動作。 當您刪除資源群組時,其中包含的所有資源都將永久刪除。 請確定您不會不小心刪除錯誤的資源群組或資源。 如果您是在包含需保留資源的現有資源群組內部建立資源,則可以個別刪除每個資源,而不必刪除整個資源群組。

刪除資源群組

  1. 登入 Azure 入口網站,然後選取 [資源群組]

  2. 選取您想要刪除的資源群組。

    如果有許多資源群組,請使用 [篩選任何欄位] 方塊,並輸入您針對本文所建立資源群組的名稱。 選取結果清單中的資源群組。

    此螢幕擷取畫面顯示工作窗格中要刪除的資源群組清單。

  3. 選擇 ,刪除資源群組

  4. 系統將會要求您確認是否刪除資源群組。 輸入您的資源群組名稱以進行確認,然後選取 [刪除]

    此螢幕擷取畫面顯示需要資源名稱才能確認刪除的表單。

不久後,系統便會刪除該資源群組及其所有的資源。