更改 Webhook 不会调用端点,因为证书由未知授权机构签名
Mutating Webhook does not invoke endpoint because certificate signed by unknown authority
我正在开发 mutating webhook with kind,据我了解,API 终点应该是 https
。 API 服务器的证书和密钥应由集群本身的 CA 签名,以解决自签名证书的问题。为此,建议执行以下步骤:
- 创建密钥 -
openssl genrsa -out app.key 2048
- 创建 CSR -
openssl req -new -key app.key -subj "/CN=${CSR_NAME}" -out app.csr -config csr.conf
- 在 kubernetes 中创建 CSR 对象 -
kubectl create -f csr.yaml
- 批准企业社会责任 -
kubectl certificate approve csr_name
- 提取 PEM -
kubectl get csr app.csr -o jsonpath='{.status.certificate}' | openssl base64 -d -A -out app.pem
备注
1. csr.conf
包含成功设置 CSR 的详细信息。
2. csr.yaml
是为 kuberenetes 类型编写的 CertificateSigningRequest
.
3. csr_name
定义在CertificateSigningRequest
.
4、csr.yaml
中的spec.request
设置为cat app.csr | base64 | tr -d '\n'
。
5. app.pem
和app.key
用于设置https
端点。
终点肯定是可达的,但错误如下:
Internal error occurred: failed calling webhook "com.me.webhooks.demo": Post https://webhook.sidecars.svc:443/mutate?timeout=10s: x509: certificate signed by unknown authority
如何解决 certificate signed by unknown authority
问题?
参考文献:
1. Writing a very basic kubernetes mutating admission webhook
2. Diving into Kubernetes MutatingAdmissionWebhook
它不需要使用集群的 CA 根进行签名。它只需要匹配 webhook 配置中的 CA 包。
我正在开发 mutating webhook with kind,据我了解,API 终点应该是 https
。 API 服务器的证书和密钥应由集群本身的 CA 签名,以解决自签名证书的问题。为此,建议执行以下步骤:
- 创建密钥 -
openssl genrsa -out app.key 2048
- 创建 CSR -
openssl req -new -key app.key -subj "/CN=${CSR_NAME}" -out app.csr -config csr.conf
- 在 kubernetes 中创建 CSR 对象 -
kubectl create -f csr.yaml
- 批准企业社会责任 -
kubectl certificate approve csr_name
- 提取 PEM -
kubectl get csr app.csr -o jsonpath='{.status.certificate}' | openssl base64 -d -A -out app.pem
备注
1. csr.conf
包含成功设置 CSR 的详细信息。
2. csr.yaml
是为 kuberenetes 类型编写的 CertificateSigningRequest
.
3. csr_name
定义在CertificateSigningRequest
.
4、csr.yaml
中的spec.request
设置为cat app.csr | base64 | tr -d '\n'
。
5. app.pem
和app.key
用于设置https
端点。
终点肯定是可达的,但错误如下:
Internal error occurred: failed calling webhook "com.me.webhooks.demo": Post https://webhook.sidecars.svc:443/mutate?timeout=10s: x509: certificate signed by unknown authority
如何解决 certificate signed by unknown authority
问题?
参考文献:
1. Writing a very basic kubernetes mutating admission webhook
2. Diving into Kubernetes MutatingAdmissionWebhook
它不需要使用集群的 CA 根进行签名。它只需要匹配 webhook 配置中的 CA 包。