【问题标题】:Update tls secret for Ambassador更新大使的 tls 秘密
【发布时间】:2019-11-03 08:49:03
【问题描述】:

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

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


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

【问题讨论】:

    标签: kubernetes kubectl ambassador


    【解决方案1】:

    您可以将 Ambassador 配置为使用 TLSContext 或 tls Module 资源终止 TLS。要使用您创建的密钥简单地终止 TLS,您可以像这样配置它们

    tlsModule:

    ---
    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 已正确配置,您应该会看到配置了 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

    【讨论】:

    • 我已经配置了 tls 模块。但是kubectl exec -it {AMBASSADOR_POD_NAME} -- cat envoy/envoy.json 在我的 envoy.json 中没有给我 tls_context。
    • 那么,Ambassador 很可能已经丢弃了您的配置,或者由于某种原因没有看到它。检查来自大使 pod 的日志是否有任何错误,并检查以确保您已正确配置 ambassador_id。还要确保您在与大使相同的命名空间中创建密钥。
    • @NoahKrause 我也没有在我的 envoy.json 中看到 tls_context。我将错误视为 mysecret.ambassador unknow 的秘密。但是我的配置中有秘密。我可以使用 kubectl get 命令查看我的秘密。我还配置了正确的名称空间。
    猜你喜欢
    • 2021-05-27
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2021-11-27
    • 2022-12-18
    • 2018-02-03
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多