本文来自边缘计算k3s社区
作者简介
Cello Spring,瑞士人。从电子起步,拥有电子工程学位。尔后开始关注计算机领域,在软件开发领域拥有多年的工作经验。
Traefik是一个十分可靠的云原生动态反向代理。轻量级Kubernetes发行版K3s早在去年就已经内置Traefik,将其作为集群的默认反向代理和Ingress Controller。然而,在本文成文时K3s中的默认内置Traefik版本为v1.7.14。这一版本固然也能很好地运行,但还是少了一些有用的功能。我最想用的功能是为正在使用的Ingress Route自动生成Let’s Encrypt证书。而使用Traefik 2.x版本可以获得这一功能,甚至还有更多其他功能。那么,我们来看看如何使用K3s设置并使用新版本的Traefik。
本文的目标是设置一个新的K3s集群、安装Traefik 2.x版本并配置一些Ingress,这些Ingress将由自动生成的Let’s Encrypt证书保护。
以下是我们将要进行的步骤:
-
在Civo上创建一个极小的K3s集群
-
将我们的域(我会使用我的虚拟域celleri.ch)指向集群IP
-
安装Klipper LB作为我们的LoadBalancer
-
在集群上安装Traefik v2
-
部署一个小型工作负载(whoami)到集群上
-
创建一个Traefik ingress到服务(分为有TLS termination或没有)
-
使用Traefik 中间件以通过基本身份验证访问Traefik Dashboard
创建Civo集群
为此,请到Civo(civo.com/)并创建一个只有2个节点的超小型集群。如果你还没有账户,可以注册并申请KUBE100 Beta项目以使用其提供的Kubernetes产品。
需要确保我们不使用基本设置安装Traefik(在“Architecture”选项卡上取消选择Traefik)
大约2分钟之后,我们将获得以下集群:
接下来,我们需要记下master节点的IP地址并下载kubeconfig文件。在本例中,它被命名为civo-k3s-with-traefik2-kubeconfig,因为我们将集群命名为k3s-with-traefik2。为了使用kubectl从命令行中访问该集群,我们需要将环境变量指向kubeconfig文件并将上下文更改至我们的新集群。
# set env variable with new cluster config
export KUBECONFIG=./civo-k3s-with-traefik2-kubeconfig
kubectl config use-context k3s-with-traefik2
#check the available nodes
kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-master-de56 Ready master 9m15s v1.16.3-k3s.2
kube-node-40e7 Ready 7m21s v1.16.3-k3s.2
正如我们所见,带有1个master节点和1个worker节点的集群已经准备完毕!继续进行下一步。
将域名Celleri.ch指向新的集群IP地址
最近一段时间,我一直使用Cloudflare(cloudflare.com/dns/)的DNS服务来处理Kubernetes。它十分可靠,有友好的用户界面并且我使用的基本服务都是免费的。
在Cloudflare中我们应用以下设置&#x