私有镜像仓库访问配置

本指南演示如何配置 Kyverno 以访问私有容器镜像仓库。当 Kyverno 需要验证镜像签名或检查镜像详情时,它需要适当的凭证来访问私有仓库——就像进入安全建筑需要门禁卡一样。

目录

为什么 Kyverno 需要访问镜像仓库?

当 Kyverno 需要执行以下操作时,它需要访问镜像仓库:

  • 验证镜像签名:下载签名数据以检查镜像是否正确签名
  • 检查镜像元数据:读取镜像标签、注解和清单信息
  • 扫描漏洞:下载镜像进行安全扫描
  • 验证镜像内容:检查容器镜像内部的实际内容

可以把它想象成一个需要检查身份证的保安——Kyverno 需要“看到”镜像才能验证它们。

快速开始

1. 创建镜像仓库凭证

# 针对公司的私有镜像仓库
kubectl create secret docker-registry my-registry-secret \
  --docker-server=registry.company.com \
  --docker-username=<username> \
  --docker-password=<password> \
  --docker-email=<email@company.com> \
  -n kyverno

2. 配置 Kyverno 使用该凭证(推荐)

apiVersion: v1
kind: ServiceAccount
metadata:
  name: kyverno
  namespace: kyverno
imagePullSecrets:
- name: my-registry-secret

3. Kyverno Deployment 配置

如果需要更细粒度的控制,可以直接修改 Kyverno 的 Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kyverno
  namespace: kyverno
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kyverno
  template:
    metadata:
      labels:
        app: kyverno
    spec:
      serviceAccountName: kyverno
      imagePullSecrets:
      - name: my-registry-secret
      - name: gcr-secret
      - name: dockerhub-secret
      containers:
      - name: kyverno
        image: ghcr.io/kyverno/kyverno:latest
        env:
        - name: REGISTRY_CREDENTIAL_HELPERS
          value: "ecr-login,gcr,acr-env"  # 启用凭证助手
        # ... 其他配置