集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤

集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤,定义ingress规则,此间规则会自动注入到ingress-controller(pod)的nginx.conf中ingress-controller是直接关联到service-B的,但是中间由ingress来生成各种规则;此时报错的原因是因为没有生成ingress-controller关联到service-B的ingress规则;目录

  • 前言
  • 一、部署配置Ingress
  • 二、使用https
 
前言
k8s集群服务部署好之后,需要对外提域名访问,这时候就需要ingress-nginx了,今天来给大家分享一下
 
一、部署配置Ingress1、获取配置文件
#文件已下载到本地https://github.com/kubernetes/ingress-nginx/tree/nginx-0.20.0/deploy2、准备镜像
unzip ingress-nginx-nginx-0.20.0.zipcd 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的教程方法,k8s部署ingress-nginx的方法步骤


3、安装
kubectl apply -f mandatory.yaml
集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤


#稍等片刻,使用下列命令查询kubectl get namespacekubectl get pods -n ingress-nginx
集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤


4、创建后端pod和service (pod-B、service-B)
vim deploy-demo.yamlapiVersion: v1kind: Servicemetadata:name: myappnamespace: defaultspec:selector:app: myapprelease: canaryports:- name: httptargetPort: 80port: 80---apiVersion: apps/v1kind: Deploymentmetadata:name: myapp-deploynamespace: defaultspec:replicas: 3selector:matchLabels:app: myapprelease: canarytemplate:metadata:labels:app: myapprelease: canaryspec:containers:- name: myappimage: ikubernetes/myapp:v2ports:- name: httpcontainerPort: 80#应用配置kubectl apply -f deploy-demo.yaml#查看kubectl get pods
集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤


5、创建service-A
vim service-nodeport.yamlapiVersion: v1kind: Servicemetadata:name: ingress-nginxnamespace: ingress-nginxlabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxspec:type: NodePortports:- name: httpport: 80targetPort: 80protocol: TCPnodePort: 30080- name: httpsport: 443targetPort: 443protocol: TCPnodePort: 30443selector:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginx#应用配置kubectl apply -f service-nodeport.yaml#查看kubectl get svc -n ingress-nginx
集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤


在外部浏览器中中访问:ip:30080
集群服务部k8s内安装部署ingress-nginx的教程方法,k8s部署ingress-nginx的方法步骤


此时报错的原因是因为没有生成ingress-controller关联到service-B的ingress规则;
6、定义ingress规则
定义ingress规则,此间规则会自动注入到ingress-controller(pod)的nginx.conf中;
ingress-controller是直接关联到service-B的,但是中间由ingress来生成各种规则;
vim ingress-myapp.yamlapiVersion: extensions/v1beta1kind: Ingressmetadata:name: ingress-myappnamespace: defaultannotations:kubernetes.io/ingress.class: "nginx"spec:rules:- host: myapp.magedu.comhttp:paths:- path:backend:serviceName: myappservicePort: 80
此时ingress-controller的nginx.conf中会自动生成一个server段的配置,也就是一个nginx的虚拟主机的字段,还包括upstream配置等;
upstream自动代理到后端pod(pod-B),这些都是自动生成,所以就实现了自动生成配置,自动更改配置等;
只需要改此yaml文件即可;

推荐阅读