我们当前开发环境 K3s 使用的是 Traefik 作为 Ingress,生产环境的 K8s 使用的是 Nginx 作为 Ingress,要将 Traefik 替换为 Nginx,并不是因为 Traefix 不如 Nginx,只是想把我们开发环境里的 Ingress 和生产环境的 Ingress 统一下,简化 chart 包的写法。
我们先更新下 K3s,排除掉 Traefik 的安装,这里官方文档就有提到:
curl -sfL https://get.k3s.io | sh -s - --disable traefik
这样安装完的 K3s 是不带 Ingress 的,我们需要额外再安装一下 Nginx Ingress:
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
执行完这两个核心动作之后,Nginx 就变成 K3s 中的 Ingress 组件了,更完整的操作命令如下:
curl -sfL https://get.k3s.io | sh -s - --disable traefik
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1 k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1 k8s.gcr.io/ingress-nginx/kube-webhook-certgen@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.2.0
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.2.0 k8s.gcr.io/ingress-nginx/controller:v1.2.0
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.2.0 k8s.gcr.io/ingress-nginx/controller@sha256:d8196e3bc1e72547c5dec66d6556c0ff92a23f6d0919b206be170bc90d5f9185
curl -O https://get.helm.sh/helm-v3.9.0-linux-amd64.tar.gz
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace