k8s无脑系列(九)- Ingress
1.了解下Ingress
1.1 Ingress的流量走向
图中所出现的内容,在配置文件中均有体现
流量基本的流向图所示,LoadBalancer可以是云服务所提供,也可以是一个Nginx/HAProxy/istio,甚至“它”不存在都可以。
糙一点可以直接让IngressService拿外网IP提供服务,本文就这么干的!
1.2 Ingress组件依赖
1.3 基础术语与关系
术语 | 作用 | 关联 |
---|---|---|
IngressController | Ingress控制器,内置的是ingress-nginx, 可以认为是真正运行流量分发的地方。k8s系统 自带的是Nginx |
Ingress |
IngressService | 就是个Service,但它是IngressController的前端 | IngressController |
Ingress | 相当于Nginx的主机配置文件 | IngressController |
ingress annotations | 通过注解详细配置主机 | Github Ingress Doc |
2.部署前的基础描述
- Ingress可以有很多种Controller,Ingress-nginx只是其中一个
- Ingress在一个命名空间中工作
- Ingress运行时需要操作resource,所以涉及到rbac,Service Account,Role等配置
2.1 部署ingress-nginx
-
准备ingress-nginx的镜像地址
registry.cn-beijing.aliyuncs.com/smokelee/nginx-ingress-controller:0.30.0
-
下载部署用的yaml
地址会因为项目不停的开发而变化,到Ingress-Nginx Github去看一眼会拿到新链接
$wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml
-
编辑mandatory.yaml
镜像地址调整为registry.cn-beijing.aliyuncs.com/smokelee/nginx-ingress-controller:0.30.0
私有仓库有密码的情况,在ingress-nginx的命名空间中加一个secret,并在yaml中增加 imagePullSecrets配置该文件作用
- 权限声明Role、ClusterRole、Binding、ServiceAccount
- 命名空间声明ingress-nginx
- 3个ConfigMap
- Deployment(部署nginx-controller),也就是说部署了一个nginx意味着它需要一个Service
-
准备上面需要的Service来公布服务
kind: Service apiVersion: v1