Cert-manager#
Важно
Cert-manager, поставляемый в составе Utilities (K8SU) доработан для взаимодействия с инструментом Secret Management System. В данном разделе приведены функциональные отличия от оригинального инструмента Cert-manager в составе K8S Core (K8SC). Руководство по настройке и установке, а также подробная информация по опциональному компоненту Cert-manager представлена в разделе «Сценарии использования опциональных компонентов DropApp» -> «K8S Core (K8SC)» -> «Cert-manager».
Предварительные условия#
Для выполнения дальнейших шагов установите Cert-manager. Руководство по настройке и установке, а также подробная информация по опциональному компоненту Cert-manager представлена в разделе «Сценарии использования опциональных компонентов DropApp» -> «K8S Core (K8SC)» -> «Cert-manager».
Работа Cert-manager совместно с SecMan#
Примечание
Secret Management System (далее – SecMan) - это менеджер паролей, который может хранить, извлекать, генерировать и синхронизировать пароли. Главная особенность SecMan в том, что он не поддерживает шифрование на основа GPG, а использует мастер-пароль для безопасного хранения паролей.
Для адаптации компонента Cert-manager для работы с SecMan выполните следующие шаги:
Убедитесь, что в файле
internal/vault/vault.goправильно настроены поля поля в структуре функции(v *Vault) Signдля адаптации работы с SecMan:parameters := map[string]string{ "common_name": csr.Subject.CommonName, "email": csr.EmailAddresses[0], "password":"<password>", "csr": string(csrPEM), }Убедитесь, что в цепочке сертификатов сами сертификаты корректно изменяются на нужный ключ:
var caChain []string for k, v := range vaultResult.Data { switch k { case SberCACertificate: vaultResult.Data[VaultCertificate] = v delete(vaultResult.Data, SberCACertificate) case SberCARoot: caChain = append(caChain, v.(string)) delete(vaultResult.Data, SberCARoot) case VaultIssuingCA: caChain = append(caChain, v.(string)) } } vaultResult.Data[VaultCAChain] = caChainУбедитесь, что для корректной корректной работы цепочки сертификатов, установлены следующие переменные:
const ( SberCARoot = "root_cert" SberCACertificate = "crt_body" VaultIssuingCA = "issuing_ca" VaultCAChain = "ca_chain" VaultCertificate = "certificate" )Убедитесь, что в файле
internal/vault/vault.goприсутствует блок о валидации переданных данных - имени и адресах:if len(csr.Subject.CommonName) <= 0 { return nil, nil, fmt.Errorf("commonName must be specified") } if len(csr.EmailAddresses) <= 0 { return nil, nil, fmt.Errorf("emailAddress must be specified") }