Мутирующий веб-перехватчик не вызывает конечную точку, поскольку сертификат подписан неизвестным органом

Я разрабатываю изменяющийся веб-перехватчик с типом и, как я понимаю, конечная точка API должна быть https. Сертификат и ключ сервера API должны быть подписаны центром сертификации самого кластера, чтобы избежать выдачи самозаверяющих сертификатов. И для этого рекомендуются следующие шаги:

  1. Создать ключ - openssl genrsa -out app.key 2048
  2. Создать CSR - openssl req -new -key app.key -subj "/CN=${CSR_NAME}" -out app.csr -config csr.conf
  3. Создать объект CSR в кубернетах - kubectl create -f csr.yaml
  4. Утвердить CSR - kubectl certificate approve csr_name
  5. Извлечь 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. spec.request в csr.yaml установлен на 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. Написание очень базовый веб-перехватчик приема Kubernetes
2. Погружение в Kubernetes MutatingAdmissionWebhook


person cogitoergosum    schedule 16.12.2019    source источник
comment
Я получаю ту же ошибку при обновлении до версии API certificates.k8s.io/v1. Вы тоже обновились?   -  person David Wer    schedule 09.03.2021


Ответы (1)


Его не нужно подписывать корнем CA кластера. Ему просто нужно сопоставить пакет CA в конфигурации веб-перехватчика.

person coderanger    schedule 16.12.2019
comment
Ok. Как мы обеспечиваем «совпадение»? Пример пожалуйста. - person cogitoergosum; 16.12.2019
comment
Вы можете увидеть поле в первом примере ссылки: caBundle: ${CA_BUNDLE}. Они дают вам команду сгенерировать значение для этого поля. Обычно вам нужно заполнить сертификат CA. - person coderanger; 16.12.2019