Мне трудно понять сквозной TLS Consul. Для справки, я использую Consul в Kubernetes (через hashicorp / consul Helm chart). Только один центр обработки данных и кластер Kubernetes - никаких внешних сторон или проблем.
Я настроил свой файл переопределения values.yaml следующим образом:
global:
datacenter: sandbox
gossipEncryption:
secretName: "consul"
secretKey: "CONSUL_GOSSIP_ENCRYPTION_KEY"
tls:
enabled: true
httpsOnly: true
enableAutoEncrypt: true
serverAdditionalDNSSANs: ["'consul.service.consul'"]
server:
replicas: 3
bootstrapExpect: 3
storage: 20Gi
dns:
clusterIP: 172.20.53.53
ui:
service:
type: 'LoadBalancer'
syncCatalog:
enabled: true
Все остальные значения по умолчанию из отправленного файла values.yaml .
Это работает, и журналы клиентов Consul предполагают, что все агенты подключаются с помощью TLS, с соответствующими сертификатами и ключами создается (как я понимаю) функцией Авто-шифрования Consul.
Я не понимаю, как инициировать HTTPS-соединение из приложения в Kubernetes, запущенном в Pod, на сервер Consul. Поскольку контейнер Pod (предположительно) не имеет сертификата Consul root CA в своем хранилище доверенных сертификатов, все вызовы HTTPS завершаются сбоем, как показано в примере wget ниже:
# Connect to Pod:
laptop$> kubectl exec -it my-pod sh
# Attempt valid HTTPS connection:
my-pod$> wget -q -O - https://consul.service.consul:8501
Connecting to consul.service.consul:8501 (10.110.1.131:8501)
ssl_client: consul.service.consul: certificate verification failed: unable to get local issuer certificate
wget: error getting response: Connection reset by peer
# Retry, but ignore certificate validity issues:
my-pod$> wget --no-check-certificate -q -O - https://consul.service.consul:8501/v1/status/leader
"10.110.1.131:8300"
Как я Я должен был обеспечить сквозные (проверенные) HTTPS-соединения из моих приложений в Kubernetes с Consul, если контейнер не распознает сертификат как действительный? Я что-то не понимаю о распространении сертификатов?
Большое спасибо - Аарон