如何通过https访问kubernetes网站

时间:2019-10-17 08:08:39

标签: kubernetes cluster-computing access portforwarding

我在始终运行的服务器上运行的虚拟机上构建了自己的1个主机kubernetes集群(1个主机,1个节点,许多命名空间,许多pod和服务)。

在集群上运行的应用程序运行正常(基本上是NodeJS后端和HTML前端)。 到目前为止,我有一个NodePort服务,该服务公开了端口30000:

NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
traefik-ingress-service   NodePort    10.109.211.16    <none>        443:30000/TCP            147d

因此,现在我可以通过在浏览器地址栏中键入https://<server-alias>:30000来访问Web界面。

但是我想通过输入https://<server-alias>来访问它而不提供端口。 我知道,这可以使用kubectl port-forwarding命令完成: kubectl -n kube-system port-forward --address 0.0.0.0 svc/traefik-ingress-service 443:443

这有效。但这似乎不是一件很专业的事情。

端口转发似乎也时常断开连接。有时,它会引发错误并退出,但会使进程保持打开状态,从而使端口保持打开状态-必须手动终止进程。

那么,有没有办法专业地访问我的应用程序?集群提供程序(AWS,GCP ...)如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:1)

使用Ingress Nginx,您可以使用名称服务器访问您的网站:

  1. 第1步:在集群中安装Nginx入口,您可以使此link
  2. 流动

安装完成后,您将拥有一个新的吊舱

NAME                                    READY   STATUS

nginx-ingress-xxxxx                     1/1     Running

还有一项新服务

NAME                             TYPE           CLUSTER-IP     EXTERNAL-IP
nginx-ingress                    LoadBalancer   10.109.x.y     a.b.c.d
  1. 第2步:为您的应用程序创建新的部署,但请确保您为nginx ingress svc / pod和您的应用程序使用相同的名称空间,并将svc类型设置为< strong> ClusterIP

  2. 第3步:创建Kubernetes入口对象

现在您必须创建入口对象

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: **Same Name Space**
spec:
  rules:
  - host: your DNS  <server-alias>
    http:
      paths:
      - backend:
          serviceName: svc Name
          servicePort: svc Port

现在您可以使用。

要免费创建DNS,可以使用freenom或使用/ etc / hosts 用:

更新
server-alias a.b.c.d

答案 1 :(得分:0)

由于您的Traefik入口服务的类型为NodePort,因此您可以访问提供的端口,该端口的值介于30000-32000之间。

您还可以将其配置为LoadBalancer类型,并与基于云的负载均衡器连接。 参考:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/

这是一个非常相关的问题:Should I use NodePort in my Traefik deployment on Kubernetes?