通过cce使用k8s-奇异果体育app竞彩官网下载
ingress是kubernetes提供的一种7层流量接入方式,它通过连接外部负载均衡与容器内部服务的方式对流量进行管理。相比loadbalancer service,ingress可以简化主机对外开放端口的管理,同时利用外部负载的能力提供更完善的路由和安全规则,详情参考奇异果体育app竞彩官网下载官网说明:。
ingress主要由两部分组成:
- ingress资源对象:提供ingress kubernetes对象,能够通过yaml进行创建和更新,将服务与域名对应起来。
- ingress controller:部署在集群中的公共组件,将ingress资源对象的配置转化成外部负载均衡的配置,对负载均衡器进行管理和更新。
cce提供了基于百度智能云负载均衡服务的cce ingress controller的实现,用户在使用ingress的同时将会联动创建和配置管理百度智能云负载均衡(应用型blb)和弹性公网ip(eip),从而实现对集群外部流量的接入和管理。ingress的使用方式与原生的kubernetes保持一致,用户可以通过百度智能云控制台或者yaml创建和管理ingress。
创建 ingress
创建ingress需要进入ingress控制台,配置ingress的基本信息、证书、转发规则、高级配置,并确认资源创建ready。
进入ingress控制台
打开 cce 控制台,在左侧“流量接入”子菜单中找到“ingress”。
点击ingress列表中的“新建ingress”。
配置基本信息
在新建ingress页面,首先填写基本信息部分:
- ingress名称:按需填写。
- 命名空间:选择ingress所在的命名空间。ingress只能向所在命名空间的service转发流量。
- 负载均衡器:cce ingress使用blb服务提供负载均衡功能。nginx类型请参考。
- 访问类型:“公网”类型将为ingress分配eip,而“内网”类型不分配eip。
- 指定blb:可选新建或指定已有的应用型blb。注意,一个blb只能用于一个ingress,不能复用。
- 指定eip:可选新建或指定已有的eip。注意,一个eip只能用于一个ingress,不能复用。
- 指定vpc子网:选择当前ingress关联创建的blb所在的子网。如果不是新建blb而是指定了已有blb,该选项不会生效。
- 如果所选集群是第一次部署cce ingress,需要勾选“同意在集群中安装cce ingress controller组件”选项。
配置证书
如果创建ingress时,选择的监听端口包括https:443,则需要在创建ingress时选择证书。
点击“添加证书”,可以将证书上传。需要填写证书名称,证书内容和私钥。请点击“查看参考样例”获取证书内容和私钥的填写示例。
如果还有更多问题,请点击右下方链接进入“证书管理”的说明文档。
配置http/https转发规则
为每一条新增的规则,选择转发的协议类型、域名、uri,服务名称、服务端口:
- 监听协议:http和https规则是互相独立的,如果需要在http和https上都支持,需要分别在http和https监听协议上都创建一次。
- 监听端口:跟随监听协议,http为80,https为443。
-
域名:请按照格式约束填写域名。
- 限制长度<100;
- 通配符仅支持*;
- 通配符*可出现0次或1次;
- 通配符*可匹配0-n个字符;
- 仅支持前缀匹配,即只可出现在域名的开头,如:*.baidu.com。
-
uri:请按照格式约束填写uri。
- 限制长度<100;
- 通配符仅支持*;
- 通配符*可出现0次或1次;
- 通配符*可匹配0-n个字符;
- 支持前、中、后缀匹配,即可出现在匹配规则的任意位置。
- 服务名称:目前仅支持nodeport或loadbalancer类型的service,必需和ingress处于同一命名空间。
- 服务端口:选择service暴露的端口。
高级配置
cce ingress还支持一些高级配置:
- 超时时间:配置ingress等待后端服务器响应的超时时间。
- http重定向:是否打开http重定向,将http请求转发到https端口上。该选项仅在勾选https后出现。
- k8s标签:为当前ingress资源添加一些k8s label。
- 注释:为当前ingress资源添加一些k8s annotation。cce定义的annotation请参考
等待部署完成
完成上述配置后,即可点击“完成”按钮完成创建。
刚刚创建的ingress,详情页和转发规则页都会显示“notready”:
等待几分钟之后,ingress完成配置,将会显示为“ready”状态,此时ingress已经可以使用了:
ingress使用示例
在“部署”页面和“服务”页面分别以下yaml内容创建示例deployment和service资源:
apiversion: apps/v1
kind: deployment
metadata:
name: ingress-nginx-deployment
labels:
app: ingress-nginx
spec:
replicas: 2
selector:
matchlabels:
app: ingress-nginx
template:
metadata:
labels:
app: ingress-nginx
spec:
containers:
- name: nginx
image: hub.baidubce.com/cce/nginx-ingress
ports:
- containerport: 80
---
kind: service
apiversion: v1
metadata:
name: hello-service
spec:
selector:
app: ingress-nginx
type: nodeport
ports:
- protocol: tcp
port: 8000
targetport: 80
---
kind: service
apiversion: v1
metadata:
name: world-service
spec:
selector:
app: ingress-nginx
type: nodeport
ports:
- protocol: tcp
port: 9000
targetport: 80
2.创建名为helloworld的ingress对象:
3.配置ingress转发规则:
- www.cce-ingress.com/hello/* -> hello-service:8000/hello/
- www.cce-ingress.com/world/* -> world-service:9000/world/
service对应后端服务必须支持转发策略的uri,如果要支持所有情况,建议设置为/*,这里对uri的路径要求很严格注意“/”,设置如下所示:
4.修改本地/etc/hosts,将www.cce-ingress.com指向eip(例如:106.12.52.80):
5.访问测试: