Обновить секрет tls для посла

Мне нужно применить сертификат в решении после того, как решение было развернуто. Поскольку посол слушает изменение в секрете tls, я использовал этот подход. После развертывания моего приложения мой посол использует самоподписанный сертификат по умолчанию. Я обновил этот сертификат этим команда

kubectl create secret tls ambassador-tls-secret \
     --cert=/root/tls.crt --key=/root/tls.key  --dry-run -o yaml | 
  kubectl apply -f -


Мой секрет теперь обновлен, но мой посол все еще не слушает новый секрет. Что-то не так с тем, как я обновил свой секрет?


person Avinash Kumar    schedule 20.06.2019    source источник


Ответы (1)


Вы можете настроить Ambassador для завершения TLS с помощью ресурса TLSContext или tls Module. Чтобы просто завершить TLS, используя созданный вами секрет, вы можете настроить их, например

tls Module:

---
apiVersion: ambassador/v1
kind: Module
name: tls
config:
  server:
    enabled: true
    secret: ambassador-tls-secret

TLSContext:

---
apiVersion: ambassador/v1
kind: TLSContext
name: ambassador
secret: ambassador-tls-secret
hosts: ["*"]

После настройки любого из них посол должен заметить ambassador-tls-secret, который вы создали, и использовать сертификаты для завершения TLS.

Вы можете убедиться, что Ambassador настроен правильно, проверив файл конфигурации envoy.json в контейнере Ambassador.

kubectl exec -it {AMBASSADOR_POD_NAME} -- cat envoy/envoy.json

Если Ambassador настроен правильно, вы должны увидеть настроенный Envoy tls_context и прослушиватель с именем ambassador-listener-8443, как показано ниже:

                        "tls_context": {
                            "common_tls_context": {
                                "tls_certificates": [
                                    {
                                        "certificate_chain": {
                                            "filename": "/ambassador/snapshots/default/secrets-decoded/ambassador-certs/66877DCC8C7B7AF190D3510AE5B4BFC71FADB308.crt"
                                        },
                                        "private_key": {
                                            "filename": "/ambassador/snapshots/default/secrets-decoded/ambassador-certs/66877DCC8C7B7AF190D3510AE5B4BFC71FADB308.key"
                                        }
                                    }
                                ]
                            }
                        },
                        "use_proxy_proto": false
                    }
                ],
                "name": "ambassador-listener-8443"

Если вы этого не сделаете, значит, Амбассадор по какой-то причине отклонил ваш конфиг. Проверьте журналы контейнера Ambassador, убедитесь, что у вас настроен только tls Module или TLSContext, проверьте, настроен ли service_port в ambassador Module и убедитесь, что у вас есть правильный ambassador_id.

person Noah Krause    schedule 20.06.2019
comment
Я настроил модуль tls. Но kubectl exec -it {AMBASSADOR_POD_NAME} -- cat envoy/envoy.json не дает мне tls_context в моем envoy.json. - person Avinash Kumar; 20.06.2019
comment
Тогда возможно Амбассадор либо выбросил ваш конфиг, либо не видел его по какой-то причине. Проверьте журналы модуля Ambassador на наличие ошибок и убедитесь, что вы правильно ambassador_id настроили. Также убедитесь, что вы создаете секрет в том же пространстве имен, что и Ambassador. - person Noah Krause; 20.06.2019