在将Flux 2与Azure Kubernetes Service配合使用时,如何正确授权ImageRespository YAML(工作负载/kubelet)?

e0uiprwp  于 12个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(143)

我已经在AKS中使用Flux 2几个月了,现在正在慢慢地开发一些更有趣的功能。这周我试图设置一个ImageRepository,它可以看到我的最新图像何时更新,并将最新的图像拉到我的Dev Cluster中。我的flux系统已经使用Bicep脚本设置,我已经启用了ImageRepository和Image扫描的两个额外控制器。
在文档方面,建议kubelet服务主体是唯一需要具有AcrPull角色的东西(注意,AKS可以很高兴地拉取图像),但我在查看日志时发现情况并非如此。因此,我已经开始了一段旅程,以了解需要做什么才能启用这个有趣的功能。
最近,我还在AKS中启用了工作负载身份,我还添加了一个用户管理的身份,并尝试了建议的补丁kustomization,建议用于授予服务帐户必要的工作负载身份,如下所示:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - gotk-components.yaml
  - gotk-sync.yaml
patches:
  - patch: |-
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: image-reflector-controller
        namespace: flux-system
        annotations:
          azure.workload.identity/client-id: <AZURE_CLIENT_ID>
        labels:
          azure.workload.identity/use: "true"      
  - patch: |-
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: image-reflector-controller
        namespace: flux-system
        labels:
          azure.workload.identity/use: "true"
      spec:
        template:
          metadata:
            labels:
              azure.workload.identity/use: "true"

字符串
我试着将其作为一个kustomization应用,但当我这样做时,我不知道这些神奇的'gotk-components.yaml'和'gotk-sync.yaml'文件是从哪里来的,因为这是一个补丁。我试图删除这些文件,然后被告知没有匹配的服务要打补丁(图像反射器控制器)找不到匹配的服务帐户

no matches for Id ServiceAccount.v1.[noGrp]/image-reflector-controller.flux-system; failed to find unique target for patch ServiceAccount.v1.[noGrp]/image-reflector-controller.flux-system


基本上,我对这个补丁系统是如何工作的有点困惑(我在现有的kustomization中作为嵌套的kustomization来做),如果需要的话,这些gotk前缀的组件来自哪里。参考说明在这里https://fluxcd.io/flux/components/image/imagerepositories/#authentication,我正在通过Azure身份补丁部分工作。
必要的底层控制器似乎已启用,但我发现ImageRepository yaml存在身份验证问题。这是正确的方法吗?或者我可以直接在ImageRepository上设置ServiceAccount吗?(我也尝试过这种方法,但也无法正常工作)。

wko9yo5t

wko9yo5t1#

我有这个错误时,我没有添加选项:
flux bootstrap git [.] --components-extra=image-reflector-controller,image-automation-controller
为了确认,您应该在gotk-components.yaml中找到类似于以下内容的内容:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app.kubernetes.io/component: image-reflector-controller
    app.kubernetes.io/instance: flux-system
    app.kubernetes.io/part-of: flux
    app.kubernetes.io/version: v2.1.2
  name: image-reflector-controller
  namespace: flux-system

字符串

相关问题