linux怎么查看本机内存大小
216
2022-09-29
在AKS中结合pod identity以及CSI Driver mount key vault中的secret
在之前一篇文章中有介绍过在AKS里如何通过CSI driver这个add on,将secret自动mount到pod中,通过将secret放到key vault中让应用程序自动获取,可以很好地保护一些机密信息的安全
在AKS中通过CSI Driver mount key vault中的secret
但是这种做法有一个小小问题,就是之前我们是用service principal mount的secret,这要求我们需要在AKS上创建一个secret,里边存放service principal的id和pwd,一般情况下如果AKS是由负责运维的team统一管理,应用团队没有权限的话,这种做法不会有什么问题,但是如果应用团队也有AKS权限,这样就不怎么好了,因为有可能应用团队的人可能会有权限查看到secret里的值
所以为了避免这种情况,我们还可以使用pod identity结合managed service identity一起把所有获取token的步骤完全交给后台Azure完成,在前端不需要有任何明显的pwd这种痕迹
下边来看下具体做法,这个demo要求的前置条件比较多,如果本文没写到的步骤,可以参考以下两篇文章
在AKS中通过CSI Driver mount key vault中的secret
在AKS中使用pod identity获取token - 实践
环境准备:
1. AKS Cluster * 1
2. User assigned managed identity * 1
3. Key Vault * 1
4. Kubectl client * 1
前置条件:
1. 创建好AKS Cluster
2. 创建好Key Vault
3. 在Key Vault中准备好测试用的secret
4. 创建好测试用的User assigned managed identity
5. 为AKS Cluster Enable CSI driver add on
6. 在AKS Cluster 部署pod identity component
实际操作
给identity授权访问secret
首先先给User assigned managed identity授权访问Key Vault中的secret
Demo就是个User assigned managed identity
准备yaml文件
接下来就是准备pod identity中的Azure Identity和binding部署文件以及pod的部署文件
AzureIdentity
apiVersion: "aadpodidentity.k8s.io/v1"kind: AzureIdentitymetadata: name:
AzureIdentityBinding
apiVersion: "aadpodidentity.k8s.io/v1"kind: AzureIdentityBindingmetadata: name:
准备SecretProviderClass的yaml
apiVersion: secrets-store.csi.x-k8s.io/v1kind: SecretProviderClassmetadata: name: azure-kvname-podidspec: provider: azure parameters: usePodIdentity: "true" keyvaultName: "kvname" objects: | array: - | objectName: secret1 objectType: secret # object types: secret, key or cert objectVersion: "" # [OPTIONAL] object versions, default to latest if empty - | objectName: key1 objectType: key objectVersion: "" tenantId: "tid" # the tenant ID of the KeyVault
最后准备测试用的pod yaml
apiVersion: v1kind: Podmetadata: labels: app: podidentitykeyvault aadpodidbinding: keyvaultdemoselector name: podidentitykeyvaultspec: containers: - image: *** livenessProbe: path: / port: 80 initialDelaySeconds: 30 periodSeconds: 20 timeoutSeconds: 10 failureThreshold: 3 imagePullPolicy: Always name: podidentitysecret volumeMounts: - mountPath: "/mnt/secrets-store" name: secrets-store-inline readOnly: true volumes: - csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "azure-kv-demo" name: "secrets-store-inline"
开始部署
kubectl apply -f .\AzureIdentity.ymlkubectl apply -f .\AzureIdentityBinding.yml
部署的过程不一一赘述了,但是可以看到部署之后,Pod正常跑起来,并且可以获取到secret
azure assigned identity也正常创建了
kubectl get azureassignedidentity
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~