你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
备用:Cloud Ingest Edge Volumes 的基于密钥的身份验证配置
本文介绍具有基于密钥的身份验证的 Cloud Ingest Edge Volumes(使用本地清除的 blob 上传)的备用配置。
此配置是用于基于密钥的身份验证方法的替代选项。 应参照 Cloud Ingest Edge Volumes 配置使用系统分配的托管标识查看推荐的配置。
先决条件
创建 Kubernetes 机密
Edge Volumes 支持以下三种身份验证方法:
- 共享访问签名 (SAS) 身份验证(推荐)
- 连接字符串身份验证
- 存储密钥身份验证
采用其中一种方法完成身份验证后,请继续执行创建 Cloud Ingest 永久性卷声明 (PVC) 部分。
使用共享访问签名 (SAS) 身份验证创建 Kubernetes 机密
可以使用 YAML 和 kubectl
,或者使用 Azure CLI 来配置 SAS 身份验证。
若要查找 storageaccountsas
,请执行以下步骤:
- 导航到 Azure 门户中的存储帐户。
- 展开左侧边栏选项卡上的“安全 + 网络”,然后选择“共享访问签名”。
- 在“允许的资源类型”下,选择“服务”>“容器”>“对象”。
- 在“允许的权限”下,取消选择“不可变存储”和“永久删除”。
- 在“开始和到期日期/时间”下,选择所需的结束日期和时间。
- 在底部,选择“生成 SAS 和连接字符串”。
- SAS 令牌下列出的值将用于下一部分中的
storageaccountsas
变量值。
使用 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"
创建 Cloud Ingest 永久性卷声明 (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"
将子卷附加到 Edge Volume
使用以下命令获取 Edge Volume 的名称:
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
更新路径名称,则必须使用新路径名称更新exampleSubDir
的第 33 行。注意
只使用小写字母和短划线。 有关详细信息,请参阅 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
装载路径。你应会看到一个目录,其名称为在将子卷附加到 Edge Volume部分的步骤 2 中指定的
path
。 现在,cd
变为/your_path_name_here
,请将your_path_name_here
替换为相应的详细信息。例如,创建一个名为
file1.txt
的文件并使用echo "Hello World" > file1.txt
写入。在 Azure 门户中,导航到存储帐户,找到在将子卷附加到 Edge Volume的步骤 2 中指定的容器。 选择容器时,会看到容器中已填充
file1.txt
。 如果文件尚未出现,请等待大约 1 分钟;Edge Volume 会在上传前等待一分钟。
后续步骤
完成这些步骤后,开始使用 Azure Monitor 和 Kubernetes 监视功能来监视部署,或者使用 Prometheus 和 Grafana 进行第三方监视。