私有镜像仓库访问配置
本指南演示如何配置 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" # 启用凭证助手
# ... 其他配置