一、背景
1.1需求
我们有这样的一个需求,就是把豆荚集群升级为https,目前的办法就是要么每个容器配置https,然后前端通过服务进行调度,但是这样配置起来会比较麻烦,以及每个容器的建立都通过https,也增加了建立连接的负担。
我们需要一种这样的改造,就是客户端连接到服务是通过https,而服务向后端Pod的调度通过http,这样可以极大的优化我们的集群,这里我们就需要用到Kubernetes的另外一种资源入口。
1.2入口
入口就是一个负载均衡的应用,它和服务的不同之处在于,服务只可以支持4层的负载均衡,而入口是支持7层的负载均衡,支持http和https,包括通过主机名的访问已经路径访问的过滤。
那为什么不直接使用Nginx ?这是因为在k8集群中,如果每加入一个服务,我们都在Nginx中添加一个配置,其实是一个重复性的体力活,只要是重复性的体力活,我们都应该通过技术将它干掉。
入口就可以解决上面的问题,其包含两个组件<代码>入口控制器代码>和<代码>入口代码>:
-
<李> <强>入口:强>将Nginx的配置抽象成一个入口对象,每添加一个新的服务只需写一个新的入口的yaml文件即可,李>
<李> <强>入口控制器:强>将新加入的入口转化成Nginx的配置文件并使之生效,包含轮廓,F5, HAProxy, Istio,香港,Nginx, Traefik,官方推荐我们使用Nginx。李>
1.3环境介绍
我们是采用了三台服务器的一个集群,部署文档请查看我之前的博文。
知识产权 角色 192.168.1.200 k8s-master 192.168.1.201 k8s-node01 192.168.1.202 k8s-node02<代码> [root@master ~] # kubectl得到节点 姓名身份角色年龄版本 主人主人117年代v1.13.0做好了准备 node01准备& lt; none>52年代v1.13.0 node02准备& lt; none>42年代v1.13.0 代码>
二、安装部署
我们这里只针对上面架构图中的域名www.wzlinux.com <代码> 代码>改造成https。
我们将以官方的标准脚本为基础进行搭建,参考请戳官方文档。官方文档中要求执行如下命令:
<代码> kubectl应用- f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml 代码>
2.1,创建后端舱应用
我们创建一个控制器<代码> wzlinux-deploy.yaml> 代码,内容如下:
<代码> apiVersion:扩展/v1beta1 :部署 元数据: 名称:wzlinux-dep 规范: 副本:3 模板: 元数据: 标签: 运行:wzlinux 规范: 容器: ——名称:wzlinux 图片:wangzan18/mytest: v1 港口: - containerPort: 8080 代码>
创建好之后查看如下:
<代码> [root@master入口)# kubectl吊舱 重启名字就绪状态的年龄 wzlinux -大- 78 d5d86c7c fj8f5 1/1运行0 53米 wzlinux -大- 78 d5d86c7c hr6gd 1/1运行0 53米 wzlinux -大- 78 d5d86c7c jqf59 1/1运行0 53 m 代码>
2.2创建后端Pod服务
测试好豆荚一些正常之后,我们为这一组群创建一个服务,文件<代码> wzlinux-svc.yaml> 代码内容如下:
<代码> apiVersion: v1 类型:服务 元数据: 名称:wzlinux-svc 规范: 选择器: 运行:wzlinux 港口: 端口:80 发送:8080 代码>
这个服务并不是我们用了代理访问Pod的,只是用来<代码> ingress-controller> 代码来进行选择控制使用的,所以上图描述为虚线。
<代码> [root@master入口)# kubectl svc 名字类型集群ip外部ip端口(年代) kubernetes ClusterIP 10.96.0.1 & lt; none>443/TCP 58米 wzlinux-svc ClusterIP 10.106.219.230 & lt; none>8080/TCP 50米 [root@master入口)# 10.106.219.230:8080旋度 你好Kubernetes训练营!|运行alt=" Kubernetes使用入口配置https集群(十五)">
Kubernetes使用入口配置https集群(十五)