Kubernetes Ingress 使用假证书启动,并且不选择预期的证书

问题描述 投票:0回答:1

我在通过一组预打包的 Helm Chart 运行应用程序时遇到问题。该图表创建了一个带有秘密的入口。虽然我可以看到入口和秘密成功,并且入口也正确引用了秘密,但当我使用命令调用它时,入口总是返回一个假证书。

openssl s_client -showcerts -servername connectivity-proxy.cs-dev.transparent-proxy.eurekacloud.io -connect connectivity-proxy.cs-dev.transparent-proxy.eurekacloud.io:443
CONNECTED(00000004)
depth=0 O = Acme Co, CN = Kubernetes Ingress Controller Fake Certificate
verify error:num=18:self signed certificate
verify return:1
depth=0 O = Acme Co, CN = Kubernetes Ingress Controller Fake Certificate
verify return:1

不幸的是,我没有选择使用像 --default-ssl-certificate 这样的参数,因为它是一个预先打包的 helm 图表,而且还有其他具有不同证书的入口。

还有什么我可以探索的吗?

已部署入口的片段。 tls.secretName 中提到的秘密是正确的并且符合预期。

spec:
  rules:
  - host: connectivity-proxy.cs-dev.transparent-proxy.eurekacloud.io
    http:
      paths:
      - backend:
          service:
            name: connectivity-proxy-tunnel-0
            port:
              number: 8042
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - connectivity-proxy.cs-dev.transparent-proxy.eurekacloud.io
    secretName: pr-ingress-secret

进入前秘密的秘密片段。 Base 64 编码值符合预期。

apiVersion: v1
data:
  ca.crt: <Base 64 encoded value of CA Cert>
  tls.crt: <Base 64 encoded value of TLS Cert>
  tls.key: <Base 64 encoded value of TLS Key>
kind: Secret
metadata:
  annotations:
    meta.helm.sh/release-name: connectivity-proxy
    meta.helm.sh/release-namespace: connectivity-proxy
  creationTimestamp: "2024-03-02T07:32:56Z"
  labels:
    app.kubernetes.io/managed-by: Helm
  name: pr-ingress-secret
  namespace: connectivity-proxy
  resourceVersion: "3674684903"
  uid: 401e2621-789b-4ecd-803c-8e3ceb56513b
type: Opaque
kubernetes ssl kubernetes-ingress
1个回答
0
投票

安装入口控制器后,您将能够解释

kind: Ingress

的清单

您需要创建 Ingress 定义并将其应用到您的集群。 在入口定义中,您可以指定要使用的证书 - 您基本上指向保存 TLS 私钥和证书的秘密。

kubectl create secret tls my-tls-secret --key /path/to/tls.key --cert /path/to/tls.crt -n your-namespace
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ssl-ingress
  namespace: your-namespace
  annotations:
    # Use nginx as the ingress controller
    kubernetes.io/ingress.class: "nginx"
    # Enable SSL redirect to automatically redirect HTTP to HTTPS
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
  - hosts:
    - example.com
    secretName: my-tls-secret
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

注释是特定于入口控制器的。根据入口控制器和您的需求,可能需要更改或删除它们。

© www.soinside.com 2019 - 2024. All rights reserved.