一、ingress概念
通俗来讲,ingress和Service、Deployment一样也是一个k8s的资源类型,ingress用于实现用域名的方式访问k8s内部应用
二、安装helm
官网:https://helm.sh/docs/intro/install/ 此次安装的版本地址:https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
执行helm version 看到如下输出说明helm安装成功
三、helm下载ingress
1、添加helm的ingress仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
2、下载ingress的helm包
执行命令helm pull ingress-nginx/ingress-nginx 会在本地下载一个压缩包
解压完后文件如下:
需要修改的values.yaml中的部分配置:
1、修改controller镜像地址为 willdockerhub/ingress-nginx-controller:v0.47.0 修改admissionWebhook的地址为jettech/kube-webhook-certgen:v1.5.1 修改defaultbackend地址为mirrorgooglecontainers/defaultbackend-amd64:1.5(文中镜像都是k8s.gcr.io下不能访问,docker官方镜像仓库中找的对应版本,能访问外网的话不用修改镜像)
2、hostNetwork设置为true 、dnsPolicy设置为 ClusterFirstWithHostNet、NodeSelector添加ingress: "true"部署至指定节点、类型更改为kind: DaemonSet、type:loadBalancer 改为ClusterIP
3、不建议ingress controller 布置在master节点,这里就部署一个至node节点,生产建议最少三个,打标签 kubectl label node k8s-node1 ingress=true
4、kubectl create ns ingress-nginx && helm install ingress-nginx -n ingress-nginx .
安装完成后会返回上面的界面,看下ingress-controller部署到node1节点
四、测试
看下集群中创建的资源对象,进行测试
编写ingress yaml文件
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: "nginx"
name: example
spec:
rules: # 一个Ingress可以配置多个rules
- host: k8s.nginx.com # 域名配置
http:
paths: # 相当于nginx的location配合,同一个host可以配置多个path /
- backend:
serviceName: nginx
servicePort: 8888
path: /
因为没有dns解析,需要手动绑定host到宿主机ip