安装helm
https://get.helm.sh/helm-v3.2.3-linux-amd64.tar.gz
tar -xf helm-v3.2.3-linux-amd64.tar.gz
cd linux-amd64
mv helm /usr/local/bin
修改/etc/profile 文件,修改里面内容,然后重新启用
export PATH=$PATH:/usr/local/bin/
添加仓库
# 添加仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
# 查看仓库列表
helm repo list
# 搜索 ingress-nginx
helm search repo ingress-nginx
下载包
# 下载安装包
helm pull ingress-nginx/ingress-nginx
下载指定版本
helm pull ingress-nginx/ingress-nginx --version 4.0.1
配置
# 将下载好的安装包解压
tar xf ingress-nginx-xxx.tgz
# 解压后,进入解压完成的目录
cd ingress-nginx
# 修改 values.yaml
镜像地址:修改为国内镜像
registry: registry.cn-hangzhou.aliyuncs.com
image: google_containers/nginx-ingress-controller
image: google_containers/kube-webhook-certgen
tag: v1.3.0
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
修改部署配置的 kind: DaemonSet
nodeSelector:
ingress: "true" # 增加选择器,如果 node 上有 ingress=true 就部署
将 admissionWebhooks.enabled 修改为 false
将 service 中的 type 由 LoadBalancer 修改为 ClusterIP,如果服务器是云平台才用 LoadBalancer
补充:
镜像的 digest 值注释,如果是香港的机器,可以不用注释,直接用谷歌云仓库
hostNetwork 设置为 true
dnsPolicy 设置为 ClusterFirstWithHostNet
NodeSelector 添加 ingress: "true"部署至指定节点
类型更改为 kind: DaemonSet
ingress nginx 设置为默认的 ingressClass
ingressClassResource:
name: nginx
enabled: true
default: true
controllerValue: "k8s.io/ingress-nginx"
刚刚打标签的命令
kubectl label nodes <node-name> ingress=true
创建命名空间
# 为 ingress 专门创建一个 namespace
kubectl create ns ingress-nginx
安装
# 为需要部署 ingress 的节点上加标签
kubectl label node k8s-node1 ingress=true
# 安装 ingress-nginx
对应目录进行安装
helm install ingress-nginx -n ingress-nginx .
对应目录进行卸载
helm delete ingress-nginx -n ingress-nginx .
如果更新了配置文件
helm upgrade ingress-nginx -n ingress-nginx .