在自己的域名网站安装Kubernetes并暴露服务

18-09-30 banq
         

将你的App部署到Kubernetes,然后将域名指向Kubernetes类的应用,这是不是很酷?

在开始之前,请确保做好准备工作:
1. 部署好Kubernetes集群并可访问
2. 你的应用*在Kubernetes群集中运行
3. 注册域名
4. 安装好Helm

以下是将域名与你的服务连接起来的粗略步骤:

1. 创建Ingress资源
2. 部署Ingress控制器
3. 更新域名记录以指向群集

Kubernetes的Ingress资源管理是对集群内运行的应用程序暴露给外部访问的。使用ingress,可以定义规则,告诉Kubernetes如何将外部流量路由到你的应用程序。以下是Ingress资源的示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: www.mycoolapp.mydomain.com
http:
paths:
- path: /
backend:
serviceName: mycoolapp
servicePort: 80

但是,仅此资源还不够 - 您还需要一个知道如何引导流量的控制器。这里使用NGINX Ingress控制器,我们将使用Helm来部署nginx-ingress图表,如下所示:

helm install stable/nginx-ingress

上面的命令负责安装NGINX控制器和默认后端。默认后端指向的“app”,NGINX控制器提供负载平衡器的服务 - 将我们域名指向它。

部署NGINX入口控制器后,让我们通过运行此命令来确定集群的IP地址:

kubectl get services --all-namespaces

上面的命令将列出在所有命名空间中运行的所有Kubernetes服务。您感兴趣的是LoadBalancer类型的任何服务以及具有外部IP集的任何服务(它通常是相同的服务)

在服务列表中,*nginx-ingress-controller字样的服务你所需要的。这是你将域名指向的IP地址。

现在是修改域名记录,创建一个A和CNAME DNS记录以将域(主机)指向群集IP即可。

Expose a Kubernetes service on your own custom dom