在Minikube中配置OPA验证Webhook时YAML文件验证失败
问题描述
在Minikube集群部署OPA准入控制器时,配置验证Webhook的YAML文件报错,无法创建ValidatingWebhookConfiguration。
错误信息
error when creating "admission-webhook.yaml": ValidatingWebhookConfiguration in version "v1" cannot be handled as a ValidatingWebhookConfiguration: illegal base64 data at input byte 0
涉事YAML配置
apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: name: opa-validating-webhook webhooks: - name: validating-webhook.openpolicyagent.org namespaceSelector: matchExpressions: - key: openpolicyagent.org/webhook operator: NotIn values: - ignore rules: - operations: ["CREATE", "UPDATE"] apiGroups: ["*"] apiVersions: ["*"] resources: ["*"] clientConfig: caBundle: $(cat ca.crt | base64 | tr -d '\n') service: namespace: opa name: opa admissionReviewVersions: ["v1"] sideEffects: None
解决方案
问题根源是caBundle字段的写法错误:你直接填入了shell命令$(cat ca.crt | base64 | tr -d '\n'),但Kubernetes无法识别这种占位符,它需要的是实际的base64编码后的CA证书字符串。
两种解决方式:
- 手动替换:先在本地执行该shell命令,拿到输出的base64字符串,替换掉YAML中
caBundle后的命令内容。 - 自动替换:用
envsubst工具自动解析占位符后再应用YAML,执行命令:envsubst < admission-webhook.yaml | kubectl apply -f -
内容的提问来源于stack exchange,提问作者Rohan Bansal
相关产品推荐
相关产品推荐

