1

部署解决方案后,我需要在解决方案中应用证书。作为大使聆听 tls 机密的更改,我采用了这种方法。部署我的应用程序后,我的大使使用默认的自签名证书。我用这个更新了该证书命令

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


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

4

1 回答 1

3

TLSContext您可以将 Ambassador 配置为使用 a或 tlsModule资源终止 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 应该注意到ambassador-tls-secret您创建并使用证书进行 tls 终止。

envoy.json您可以通过检查大使容器中的配置文件来验证大使是否已正确配置

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

如果 Ambassador 已正确配置,您应该会看到已配置的 Envoytls_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"

如果您不这样做,那么大使出于某种原因拒绝了您的配置。检查大使容器的日志,确保您只有一个 tlsModule TLSContext已配置,检查是否service_port已在大使模块中配置,并确保您拥有正确的 Ambassador_id 。

于 2019-06-20T15:05:40.080 回答