温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

k8s部署ingress-nginx的方法是什么

发布时间:2021-12-09 11:12:15 来源:亿速云 阅读:263 作者:iii 栏目:开发技术

本篇内容介绍了“k8s部署ingress-nginx的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、部署配置Ingress

1、获取配置文件

#文件已下载到本地 https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy

2、准备镜像

unzip ingress-nginx-nginx-0.20.0.zip cd ingress-nginx-nginx-0.20.0/deploy/ vim mandatory.yaml     #其他文件的集合 #编辑mandatory.yaml文件,将defaultbackend镜像地址改成阿里云的镜像地址(如下图) image: registry.cn-hangzhou.aliyuncs.com/allinpay/defaultbackend-amd64:v1.5

k8s部署ingress-nginx的方法是什么

3、安装

kubectl apply -f mandatory.yaml

k8s部署ingress-nginx的方法是什么

#稍等片刻,使用下列命令查询 kubectl get namespace kubectl get pods -n ingress-nginx

k8s部署ingress-nginx的方法是什么

4、创建后端pod和service (pod-B、service-B)

vim deploy-demo.yaml apiVersion: v1 kind: Service metadata:   name: myapp   namespace: default spec:   selector:     app: myapp     release: canary   ports:   - name: http     targetPort: 80     port: 80 ---   apiVersion: apps/v1 kind: Deployment metadata:   name: myapp-deploy   namespace: default spec:   replicas: 3   selector:     matchLabels:       app: myapp       release: canary   template:     metadata:       labels:         app: myapp         release: canary     spec:       containers:       - name: myapp         image: ikubernetes/myapp:v2         ports:         - name: http           containerPort: 80 #应用配置 kubectl apply -f deploy-demo.yaml #查看 kubectl get pods

k8s部署ingress-nginx的方法是什么

5、创建service-A

vim service-nodeport.yaml apiVersion: v1 kind: Service metadata:   name: ingress-nginx   namespace: ingress-nginx   labels:     app.kubernetes.io/name: ingress-nginx     app.kubernetes.io/part-of: ingress-nginx spec:   type: NodePort   ports:   - name: http     port: 80     targetPort: 80     protocol: TCP     nodePort: 30080   - name: https     port: 443     targetPort: 443     protocol: TCP     nodePort: 30443   selector:     app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx #应用配置 kubectl apply -f service-nodeport.yaml #查看 kubectl get svc -n ingress-nginx

k8s部署ingress-nginx的方法是什么

在外部浏览器中中访问:ip:30080

k8s部署ingress-nginx的方法是什么

此时报错的原因是因为没有生成ingress-controller关联到service-B的ingress规则;

6、定义ingress规则

定义ingress规则,此间规则会自动注入到ingress-controller(pod)的nginx.conf中;
ingress-controller是直接关联到service-B的,但是中间由ingress来生成各种规则;

vim ingress-myapp.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata:   name: ingress-myapp   namespace: default   annotations:     kubernetes.io/ingress.class: "nginx" spec:   rules:   - host: myapp.magedu.com     http:       paths:       - path:         backend:           serviceName: myapp           servicePort: 80

此时ingress-controller的nginx.conf中会自动生成一个server段的配置,也就是一个nginx的虚拟主机的字段,还包括upstream配置等;
upstream自动代理到后端pod(pod-B),这些都是自动生成,所以就实现了自动生成配置,自动更改配置等;
只需要改此yaml文件即可;

#应用配置 kubectl apply -f ingress-myapp.yaml

k8s部署ingress-nginx的方法是什么

在外部主机上配置好host文件

k8s部署ingress-nginx的方法是什么

然后在浏览器中再访问,发现已经可以访问到后端pod了

k8s部署ingress-nginx的方法是什么

二、使用https

1、创建k8s证书(要注意和后端的pod使用相同的namespace)

kubectl -n default  create secret tls ingress-test --key /home/centos/cert/cash532.key --cert /home/centos/cert/cash532.crt

2、创建ingress规则

注意namespace的相同性,要不然证书无法生效

vim ingress-myapp-cash532.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata:   name: ingress-myapp   namespace: default   annotations:     kubernetes.io/ingress.class: "nginx"     kubernetes.io/secure-backends: "true"     kubernetes.io/ssl-passthrough: "true" spec:   tls:   - hosts:     - myapp.cash532.xyz     secretName: ingress-test   rules:   - host: myapp.cash532.xyz     http:       paths:       - path:         backend:           serviceName: myapp           servicePort: 80 #应用配置 kubectl apply -f ingress-myapp-cash532.yaml

浏览器访问

k8s部署ingress-nginx的方法是什么

“k8s部署ingress-nginx的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI