替代:雲端內嵌邊緣磁碟區的金鑰型驗證設定
本文說明雲端內嵌邊緣磁碟區 (使用本機清除進行 Blob 上傳) 使用金鑰型驗證的替代設定。
此設定是使用金鑰型驗證方法的替代選項。 您應該使用雲端內嵌邊緣磁碟區設定中的系統指派受控識別來檢閱建議的設定。
必要條件
建立 Kubernetes 祕密
邊緣磁碟區支援下列三種驗證方法:
- 共用存取簽章 (SAS) 驗證 (建議)
- 連接字串驗證
- 儲存體金鑰驗證
完成上述其中一種驗證方法之後,請繼續執行建立雲端內嵌永續性磁碟區宣告 (PVC) 區段中的指示。
使用共用存取簽章 (SAS) 驗證建立 Kubernetes 祕密
您可以使用 YAML 和 kubectl
,或使用 Azure CLI 來設定 SAS 驗證。
若要尋找您的 storageaccountsas
,請執行下列程序:
- 瀏覽至您的儲存體帳戶。
- 展開左側刀鋒視窗的 [安全性 + 網路],然後選取 [共用存取簽章]。
- 在 [允許的資源類型] 下方,選取 [服務]>[容器]>[物件]。
- 在 [允許的權限] 下方,取消選取 [不可變儲存體] 和 [永久刪除]。
- 在 [開始及到期日/時間] 下方,選擇您要的結束日期和時間。
- 在底端,選取 [產生 SAS 和連接字串]。
- 下一節中的
storageaccountsas
變數將使用 SAS 權杖下所列出的值。
使用 YAML 和 kubectl
進行共用存取簽章 (SAS) 驗證
建立名為
sas.yaml
的檔案,包含以下內容。 將metadata::name
、metadata::namespace
和storageaccountconnectionstring
取代為您自己的值。注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
apiVersion: v1 kind: Secret metadata: ### This name should look similar to "kharrisStorageAccount-secret" where "kharrisStorageAccount" is replaced with your storage account name name: <your-storage-acct-name-secret> # Use a namespace that matches your intended consuming pod, or "default" namespace: <your-intended-consuming-pod-or-default> stringData: authType: SAS # Container level SAS (must have ? prefixed) storageaccountsas: "?..." type: Opaque
若要套用
sas.yaml
,請執行:kubectl apply -f "sas.yaml"
使用 CLI 進行共用存取簽章 (SAS) 驗證
如果您想在容器層級設定 SAS 驗證範圍,請使用下列命令。 您必須更新第一個命令中的
YOUR_CONTAINER_NAME
,以及第二個命令中的YOUR_NAMESPACE
、YOUR_STORAGE_ACCT_NAME
和YOUR_SECRET
:az storage container generate-sas [OPTIONAL auth via --connection-string "..."] --name YOUR_CONTAINER_NAME --permissions acdrw --expiry '2025-02-02T01:01:01Z' kubectl create secret generic -n "YOUR_NAMESPACE" "YOUR_STORAGE_ACCT_NAME"-secret --from-literal=storageaccountsas="YOUR_SAS"
建立雲端內嵌永續性磁碟區宣告 (PVC)
建立名為
cloudIngestPVC.yaml
的檔案,包含以下內容。 您必須編輯metadata::name
值,並新增永續性磁碟區宣告的名稱。 下一個步驟中deploymentExample.yaml
的最後一行會參考此名稱。 您還必須使用預期的取用 Pod 來更新metadata::namespace
值。 如果您沒有預期的取用 Pod,則metadata::namespace
值為default
:注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
kind: PersistentVolumeClaim apiVersion: v1 metadata: ### Create a name for the PVC ### name: <your-storage-acct-name-secret> ### Use a namespace that matches your intended consuming pod, or "default" ### namespace: <your-intended-consuming-pod-or-default> spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: cloud-backed-sc
若要套用
cloudIngestPVC.yaml
,請執行:kubectl apply -f "cloudIngestPVC.yaml"
將子磁碟區附加至邊緣磁碟區
使用下列命令取得邊緣磁碟區的名稱:
kubectl get edgevolumes
建立名為
edgeSubvolume.yaml
的檔案,並複製下列內容。 使用您的資訊來更新變數:注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
metadata::name
:為您的子磁碟區建立名稱。spec::edgevolume
:這個名稱是使用kubectl get edgevolumes
從上一個步驟擷取的。spec::path
:在掛接路徑下建立您自己的子目錄名稱。 請注意,下列範例已經包含範例名稱 (exampleSubDir
)。 如果您變更此路徑名稱,則deploymentExample.yaml
中的第 33 行必須更新為新的路徑名稱。 如果您選擇重新命名路徑,請勿使用前導斜線。spec::auth::authType
:視您在先前步驟中使用的驗證方法而定。 接受的輸入包括sas
、connection_string
和key
。spec::auth::secretName
:如果您使用儲存體金鑰驗證,則您的secretName
為{your_storage_account_name}-secret
。 如果您使用連接字串或 SAS 驗證,則您的secretName
是由您指定。spec::auth::secretNamespace
:符合預期的取用 Pod,或default
。spec::container
:儲存體帳戶中的容器名稱。spec::storageaccountendpoint
:在 Azure 入口網站中瀏覽至您的儲存體帳戶。 在 [概觀] 頁面的右上方,選取 [JSON 檢視]。 您可以在 properties::primaryEndpoints::blob 底下找到storageaccountendpoint
連結。 複製整個連結 (例如,https://mytest.blob.core.windows.net/
)。
apiVersion: "arccontainerstorage.azure.net/v1" kind: EdgeSubvolume metadata: name: <create-a-subvolume-name-here> spec: edgevolume: <your-edge-volume-name-here> path: exampleSubDir # If you change this path, line 33 in deploymentExample.yaml must be updated. Don't use a preceding slash. auth: authType: MANAGED_IDENTITY secretName: <your-secret-name> secretNamespace: <your_namespace> storageaccountendpoint: <your_storage_account_endpoint> container: <your-blob-storage-account-container-name> ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
若要套用
edgeSubvolume.yaml
,請執行:kubectl apply -f "edgeSubvolume.yaml"
選用:從預設修改 ingestPolicy
如果您想要從預設的
edgeingestpolicy-default
變更ingestPolicy
,請建立名為myedgeingest-policy.yaml
的檔案,其中包含下列內容。 使用您的喜好設定更新下列變數。注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
metadata::name
:為您的 ingestPolicy 建立名稱。 您必須在edgeSubvolume.yaml
的 spec::ingestPolicy 區段中更新和參考此名稱。spec::ingest::order
:上傳已變更檔案的順序。 這是最佳做法,而非保證 (預設為最舊優先)。 順序的選項包括:最舊優先或最新優先。spec::ingest::minDelaySec
:已變更檔案可內嵌之前的秒數下限 (預設值為 60)。 這個數字的範圍可以介於 0 到 31536000 之間。spec::eviction::order
:如何收回檔案 (預設為未排序)。 收回順序的選項為:未排序或永不排序。spec::eviction::minDelaySec
:清除檔案可收回之前的秒數 (預設值為 300)。 這個數字的範圍可以介於 0 到 31536000 之間。
apiVersion: arccontainerstorage.azure.net/v1 kind: EdgeIngestPolicy metadata: name: <create-a-policy-name-here> # This will need to be updated and referenced in the spec::ingestPolicy section of the edgeSubvolume.yaml spec: ingest: order: <your-ingest-order> minDelaySec: <your-min-delay-sec> eviction: order: <your-eviction-order> minDelaySec: <your-min-delay-sec>
若要套用
myedgeingest-policy.yaml
,請執行:kubectl apply -f "myedgeingest-policy.yaml"
連結您的應用程式 (Kubernetes 原生應用程式)
若要針對永續性磁碟區宣告 (PVC) 設定一般單一 Pod (Kubernetes 原生應用程式),請建立名為
deploymentExample.yaml
的檔案,其中包含下列內容。 請將containers::name
和volumes::persistentVolumeClaim::claimName
取代為您的值。 如果您從edgeSubvolume.yaml
更新路徑名稱,則必須使用新的路徑名稱來更新第 33 行上的exampleSubDir
。注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
apiVersion: apps/v1 kind: Deployment metadata: name: cloudingestedgevol-deployment ### This will need to be unique for every volume you choose to create spec: replicas: 2 selector: matchLabels: name: wyvern-testclientdeployment template: metadata: name: wyvern-testclientdeployment labels: name: wyvern-testclientdeployment spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - wyvern-testclientdeployment topologyKey: kubernetes.io/hostname containers: ### Specify the container in which to launch the busy box. ### - name: <create-a-container-name-here> image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09 command: - "/bin/sh" - "-c" - "dd if=/dev/urandom of=/data/exampleSubDir/esaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" volumeMounts: ### This name must match the following volumes::name attribute ### - name: wyvern-volume ### This mountPath is where the PVC will be attached to the pod's filesystem ### mountPath: "/data" volumes: ### User-defined 'name' that is used to link the volumeMounts. This name must match volumeMounts::name as previously specified. ### - name: wyvern-volume persistentVolumeClaim: ### This claimName must refer to your PVC metadata::name claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
若要套用
deploymentExample.yaml
,請執行:kubectl apply -f "deploymentExample.yaml"
使用
kubectl get pods
來尋找 Pod 的名稱。 複製此名稱,以便在下一個步驟中使用。注意
由於
deploymentExample.yaml
中的spec::replicas
已指定為2
,因此會使用kubectl get pods
來顯示兩個 Pod。 您可以選擇任一 Pod 名稱以用於下一個步驟。執行下列命令,並將
POD_NAME_HERE
取代為您在最後一個步驟中複製的值:kubectl exec -it pod_name_here -- sh
將目錄 (
cd
) 變更為deploymentExample.yaml
中指定的/data
掛接路徑。您應該會在 [將子磁碟區附加至邊緣磁碟區] 區段的步驟 2 中看到名為指定為
path
的目錄。 現在,輸入cd
以進入/your_path_name_here
,然後將your_path_name_here
取代為您的相關詳細資料。例如,建立名為
file1.txt
的檔案,並使用echo "Hello World" > file1.txt
寫入其中。在 Azure 入口網站中,瀏覽至您的儲存體帳戶,並尋找從 [將子磁碟區附加至邊緣磁碟區] 的步驟 2 中指定的容器。 當您選取容器時,應該會看到容器中已填入
file1.txt
。 如果檔案尚未出現,請等候大約 1 分鐘;邊緣磁碟區會先等候 1 分鐘再上傳。
下一步
完成這些步驟之後,請使用 Azure 監視器和 Kubernetes 監視功能,或使用第三方監視功能搭配 Prometheus 和 Grafana 開始監視部署。