k8s部署ingress-nginx的方法步骤
前言
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

3、安装
kubectl apply -f mandatory.yaml

#稍等片刻,使用下列命令查询 kubectl get namespace kubectl get pods -n 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

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

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

此时报错的原因是因为没有生成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

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

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

二、使用https
1、创建k8s证书(要注意和后端的pod使用相同的namespace)
kubectl -n default create secret tls ingress-test --key /home/centos/cert/cash432.key --cert /home/centos/cert/cash432.crt
2、创建ingress规则
注意namespace的相同性,要不然证书无法生效
vim ingress-myapp-cash432.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.cash432.xyz
secretName: ingress-test
rules:
- host: myapp.cash432.xyz
http:
paths:
- path:
backend:
serviceName: myapp
servicePort: 80
#应用配置
kubectl apply -f ingress-myapp-cash432.yaml
浏览器访问

到此这篇关于k8s部署ingress-nginx的方法步骤的文章就介绍到这了,更多相关k8s部署ingress-nginx内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
nginx出现500 Internal Server Error错误的解决方法
这篇文章主要介绍了nginx出现500 Internal Server Error错误的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或工作有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-09-09
OpenResty中实现按QPS、时间范围、来源IP进行限流的方法
OpenResty是一个基于Nginx与Lua的高性能Web平台,它通过LuaJIT在Nginx中运行高效的Lua脚本和模块,可以用来处理复杂的网络请求,并且支持各种流量控制和限制的功能,这篇文章主要介绍了OpenResty中实现按QPS、时间范围、来源IP进行限流,需要的朋友可以参考下2024-02-02
Nginx HttpHeader增加几个关键的安全选项问题小结
本文给大家介绍Nginx HttpHeader增加几个关键的安全选项问题小结,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧2024-12-12
PHP(FastCGI)在Nginx的alias下出现404错误的解决方法
这篇文章主要介绍了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法,涉及nginx平台的相关配置技巧,需要的朋友可以参考下2016-05-05


最新评论