部署解决方案后,我需要在解决方案中应用证书。当大使听取tls机密的更改时,我采取了这种方法。在部署应用程序之后,大使使用默认的自签名证书。使用此命令的证书
kubectl create secret tls ambassador-tls-secret \
--cert=/root/tls.crt --key=/root/tls.key --dry-run -o yaml |
kubectl apply -f -
我的秘密现已更新,但我的大使仍然不听新的秘密。 我更新秘密的方式有问题吗?
答案 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。