You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置FluxCD仅部署ECR中经签名的镜像?

解决FluxCD仅部署ECR签名镜像的配置方案

一、先确保Ratify与AWS Signer/ECR的集成正常

这是校验的基础,Ratify必须能正确识别AWS Signer给ECR镜像生成的签名:

  • 给Ratify的服务账户配置ECR访问权限:附加AmazonEC2ContainerRegistryReadOnly权限,或者更细粒度的权限集合(包含ecr:GetDownloadUrlForLayer、ecr:BatchGetImage、ecr:BatchCheckLayerAvailability、ecr:GetRepositoryPolicy),确保它能拉取镜像元数据和签名。
  • 配置Ratify的AWS Signer验证器:在Ratify的values.yaml中添加如下配置,指定你的AWS账户ID和签名配置文件:
validators:
  - name: awsSigner
    parameters:
      accountIds: ["你的AWS账户ID"]
      signingProfileNames: ["你使用的签名配置文件名"]
  • 手动验证Ratify的校验能力:执行ratify verify -r <你的ECR镜像地址>:<标签>,确认已签名镜像返回验证通过,未签名镜像返回验证失败。

二、修复Gatekeeper与Ratify的联动约束

之前Gatekeeper未生效,大概率是约束规则或集成模板配置有误,需确保Gatekeeper能通过Ratify完成镜像校验并拦截违规部署:

  • 部署Ratify与Gatekeeper的集成模板:安装gatekeeper-ratify的ConstraintTemplate,该模板定义了Gatekeeper调用Ratify的逻辑。
  • 创建强制签名校验的约束:新建一个ImageSignatureConstraint资源,指定所有部署类资源必须通过Ratify的AWS Signer校验,示例配置:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: ImageSignatureConstraint
metadata:
  name: require-signed-ecr-images
spec:
  match:
    kinds:
      - apiGroups: ["apps"]
        kinds: ["Deployment", "StatefulSet", "DaemonSet"]
    namespaces: ["*"] # 可指定特定管控命名空间
  parameters:
    failOnErr: true # 校验出错时直接拒绝部署
    ratifyEndpoint: "http://ratify.default.svc.cluster.local:6001/verify" # 替换为你的Ratify服务地址
  • 验证Gatekeeper拦截效果:尝试部署未签名的ECR镜像,查看是否收到Gatekeeper的拒绝提示,确认约束生效。

三、配置FluxCD配合校验逻辑

Flux需关联校验结果,确保仅选中并部署通过签名校验的镜像:

  • 在ImagePolicy中启用Ratify校验:添加verify字段,指定使用Ratify做签名校验,示例:
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
  name: my-app-policy
spec:
  imageRepositoryRef:
    name: my-app
  policy:
    semver:
      range: ">=1.0.0"
  verify:
    provider: ratify
    address: "http://ratify.default.svc.cluster.local:6001/verify"
  • 调整Flux的Kustomization配置:设置wait: true,让Flux等待资源部署的校验结果,若Gatekeeper拒绝则终止部署;同时确保未配置允许未校验镜像的参数(如--allow-unsigned-images)。
  • 确认ImageUpdateAutomation关联正确:确保自动化更新仅同步ImagePolicy筛选出的已签名镜像标签到Deployment配置中。

四、常见问题排查

  • 查看Gatekeeper日志:检查是否存在调用Ratify的网络错误、权限不足等问题。
  • 确认ECR签名状态:验证镜像签名已通过AWS Signer和notation正确生成并存储在ECR元数据中。
  • 检查Flux日志:确认Flux是否正确读取ImagePolicy的校验结果,未绕过签名检查。

内容的提问来源于stack exchange,提问作者AWS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:37:39