更新大使机密

时间:2019-06-20 13:54:24

标签: kubernetes kubectl ambassador

部署解决方案后,我需要在解决方案中应用证书。当大使听取tls机密的更改时,我采取了这种方法。在部署应用程序之后,大使使用默认的自签名证书。使用此命令的证书

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


我的秘密现已更新,但我的大使仍然不听新的秘密。 我更新秘密的方式有问题吗?

1 个答案:

答案 0 :(得分:3)

您可以将Ambassador配置为使用TLSContext或tls Module资源终止TLS。要使它们仅使用您创建的密钥终止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

如果已经正确配置了大使,则应该看到已配置了特使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,检查是否在{{ 3}},并确保您使用正确的ambassador Module