如何创建我可以在 kubernetes 中使用的 tls 证书?

How to create tls certs which I can use in kubernetes?

我遇到了一个问题,我需要为 k8s 集群中的 Keycloak 提供证书才能使用 nginx ingress。添加它们的最简单方法是什么? 我是这样开始的:

kubectl create secret tls tls-keycloak-ingress --cert=localtest.me.crt --key=localtest.me.pem

然后通过秘密将它们包含在图表 yaml 中:

 ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: nginx
      nginx.ingress.kubernetes.io/use-regex: "true"
    path: /auth/?(.*)
    hosts:
      - keycloak.localtest.me
    tls:
      - hosts:
          - keycloak.localtest.me
        secretName: tls-keycloak-ingress

但是我应该在主机上创建它们吗?或者以某种方式使用 kubectl?

通常通过在集群中添加 cert-manager 来解决。然后它使用提供的 LE 帐户跟踪所有入口对象 tls 部分和问题:

https://cert-manager.io/docs/tutorials/acme/ingress/

它不仅会颁发证书并将其存储到适当的秘密中,还会自动更新。

注意:如果您使用的是 helm3,请跳过 tiller 步骤。