如何在kubernetes中通过HTTPS公开应用程序(或服务)



在kubernetes中,使用类型"LoadBalancer"的部署和服务是为Nginx应用程序创建的。代码在这里。该应用程序可使用外部IP访问110.120.x.y。该应用程序未通过HTTPS公开,因此不安全。

root@desktop:~/github/nginx-app# kubectl get svc
NAME                                       TYPE           CLUSTER-IP       EXTERNAL-IP                    PORT(S)                                                                   AGE
nginx-cms-service                          LoadBalancer   10.100.x.y   10.120.x.y,100.x.y.z   80:30596/TCP

我需要在ingress中使用TLS通过HTTPS公开应用程序(显然是其服务((不确定这是否是通过HTTPS公开应用程序的正确方法(我部署了kubernetes nginx入口控制器,需要为应用程序创建入口。我在创建ingress时遇到了问题,需要创建tls.crt和tls.key,然后使用下面的ingress命令创建secret。

  • 我不知道传递给变量HOST和HOST名称的意义是什么
  • 应用程序的外部名称是什么可到达的我需要DNS条目来解析要访问的名称吗应用程序

通常,服务器证书(如servername.key、servername.crt(使用servername是有意义的,其中servername是服务器的实际主机名。证书是为入口、服务还是应用程序创建的?

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ${KEY_FILE} -out ${CERT_FILE} -subj "/CN=${HOST}/O=${HOST}"
kubectl create secret tls ${CERT_NAME} --key ${KEY_FILE} --cert ${CERT_FILE}

我的ingress.yaml具有spec.rules.host:nginx-cms-app.com的值,因此使用如下名称。这是正确的吗?

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout nginx-cms-app.com.key -out nginx-cms-app.com.crt -subj "/CN=nginx-cms-app.com/O=nginx-cms-app.com"
kubectl create secret tls nginx-cms-app.com --key nginx-cms-app.com.key --cert nginx-cms-app.com.crt

我建议您在安装证书管理器时尝试这样做,然后您就可以遵循这篇stackoverflow文章了。

一旦您在TLS中添加了机密名称,证书将达到就绪状态,请注意,您不需要创建该机密,它将自动创建。经过acme质询验证后,证书将达到就绪状态。

请使用

apiVersion: cert-manager.io/v1alpha2

在clusterissuer中,如果stackoverflow帖子中出现的clusterissuer的apiVersion是不可接受的

相关内容

  • 没有找到相关文章

最新更新