第七章 helm 轻松完爆 nginx-ingress

网友投稿 268 2022-10-31

第七章 helm 轻松完爆 nginx-ingress

注意:可在我 百度网盘 直接下载 helm、minio 以及修改好的 gitlab 资源包本系列文章:第一章:helm 一分钟轻松完爆第二章:helm 轻松完爆公共仓库第三章:helm 轻松完爆私有仓库第四章:helm 轻松完爆 chart第五章:helm 轻松完爆 release第六章:九析带你轻松完爆 helm gitlab第七章:九析带你轻松完爆 helm nginx-ingress第八章:九析带你轻松完爆 helm gitlab nfs第九章:九析带你轻松完爆 helm nexus第十章:九析带你轻松完爆 helm3 heapster第十一章:九析带你轻松完爆 helm3 kubernetes-dashboard

目录

1 版本说明

2 介绍 nginx-ingress

3 下载 nginx-ingress

4 配置 nginx-ingress

5 安装 nginx-ingress

5.1 修改 deployment version

5.2 添加 deployment selector

6 nginx-ingress 组成

7 创建 tomcat 微服务

8 创建 ingress

9 访问 tomcat

9.1 配置 hosts

9.2 确定 nginx-ingress 的服务端口

1 版本说明

k8s:v1.16.3;helm:v3.0.0;nginx-ingress:0.9.5。

2 介绍 nginx-ingress

nginx-ingress 是 k8s 入口,负责将客户端请求路由到 k8s 内部微服务上。如果说 k8s 是一个监狱,那么 nginx-ingress 就是监狱大门。

3 下载 nginx-ingress

选择阿里云的 helm chart 仓库。

下载 nginx-ingress:

helm pull stable/nginx-ingress

4 配置 nginx-ingress

修改 values.yaml 文件:

1) hostNetwork: false 改为 true2)type: LoadBalancer 改为 NodePort3)rbac:            create: false 改为 true

5 安装 nginx-ingress

## 第一个 nginx-ingress 是 release 名。第二个 nginx-ingress 是 chart 解压目录。helm install nginx-ingress nginx-ingress

5.1 修改 deployment version

Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"

如果有如上报错,需要修改 nginx-ingress deployment 文件的 apiVersion。

grep -irl "extensions/v1beta1" nginx-ingress | grep deploy | xargs sed -i 's#extensions/v1beta1#apps/v1#g'

5.2 添加 deployment selector

Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec

如果有如上报错,需要在 deployment 文件添加 selector:

vi nginx-ingress/templates/default-backend-deployment.yaml

修改后再次执行,安装成功:

6 nginx-ingress 组成

kubectl get pods -n nginx-ingress

1)nginx-ingress-controller:nginx-ingress 控制器,负责 nginx-ingress pod 的生命周期管理。nginx-ingress pod 本质就是 nginx。用来处理请求路由等功能。这也是为什么称 nginx-ingress pod 是集群流量入口的缘故。

2)nginx-ingress-default-backend:默认后端。如果你没有配置路由或路由配错了,将会由此 pod 兜底,一般会显示 404 给你。

7 创建 tomcat 微服务

nginx-ingress已经创建完毕,相当于nginx已经就绪。下面我们在k8s集群中创建一个名为 myweb-svc 的 tomcat 服务。

## 启动并暴露 tomcat 服务kubectl run myweb --image=tomcatkubectl expose deployment myweb --port=8080 --name=myweb-svc

8 创建 ingress

刚创建完 nginx-ingress,现在又创建 ingress。是不是会有点迷,到底两者的区别是什么?你可以这么来理解,nginx-ingress 是 nginx,而 ingress 则相当于 nginx 里面的一段配置信息。例如下面的 ingress 文件,就是创建从 nginx 路由到 tomcat 的配置。

ingress 文件如下:

apiVersion: extensions/v1beta1kind: Ingressmetadata: name: server-jiuxi-ingress annotations:   kubernetes.io/ingress.class: "nginx"spec: rules: - host: zcy.jiuxi.org      paths: /     - path:       backend:         serviceName: myweb-svc         servicePort: 8080

翻译成 nginx 的配置就是:

server {    server_name zcy.jiuxi.org    location / {        proxy_pass ingress,生成 nginx 到 tomcat 的路由规则:

kubectl apply -f server-jiuxi-ingress.yaml

9 访问 tomcat

上面创建了 nginx-ingress(nginx)、又创建了 tomcat 微服务、又生成了从 nginx 路由到 tomcat 的规则(ingress)。那么下一步我们就可以通过设置好的 ingress 来访问 tomcat 微服务了。但是访问前,还需要再做2点配置。

9.1 配置 hosts

因为 ingress 中设置了域名 zcy.jiuxi.org,所以需要在浏览器所在的机器上设置 dns。我的IP是10.110.101.98。个人根据实际情况修改。

## windows 用户。编辑 C:\Windows\System32\drivers\etc\hosts 文件## linux   用户。编辑 /etc/hosts 文件

9.2 确定 nginx-ingress 的服务端口

kubectl get svc

浏览器中输入 轻松完爆了 nginx-ingress。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java调用C++程序的实现方式
下一篇:把阿里巴巴的核心系统搬到云上,架构上的挑战与演进是什么?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~