ingress-nginx部署

ingress-nginx部署

1、部署nginx-ingress-controller

ingress-nginx github

当前最新版本:NGINX: 0.25.0

镜像地址:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0

特点之一:Migration from NGINX to OpenResty 1.15.8

本处选择前一版本:NGINX: 0.24.1

镜像地址:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.24.1

安装:

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/mandatory.yaml
kubectl apply -f mandatory.yaml

验证:

kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watch

验证当前安装的版本

POD_NAMESPACE=ingress-nginx
POD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}')
kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version

2、部署ingress-nginx service

通过ingress-controller对外提供服务,现在还需要手动给ingress-controller建立一个service,接收集群外部流量。方法如下:

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.24.1/deploy/provider/baremetal/service-nodeport.yaml

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

3、部署后端服务

参考:

4、部署ingress

vim ingress-myapp.yaml

apiVersion: extensions/v1beta1      #api版本
kind: Ingress       #清单类型
metadata:           #元数据
  name: ingress-eureka    #ingress的名称
  namespace: default     #所属名称空间
  annotations:           #注解信息
    kubernetes.io/ingress.class: "nginx"
spec:      #规格
  rules:   #定义后端转发的规则
  - host: eureka.jinyue.centos7    #通过域名进行转发
    http:
      paths:       
      - path:       #配置访问路径,如果通过url进行转发,需要修改;空默认为访问的路径为"/"
        backend:    #配置后端服务
          serviceName: eureka-service-internal
          servicePort: 8761

kubectl apply -f ingress-eureka.yaml              

验证:

kubectl get ingress

kubectl describe ingress ingress-eureka

kubectl get pods -n ingress-nginx

进入nginx-ingress-controller进行查看是否注入了nginx的配置

kubectl exec -n ingress-nginx -it nginx-ingress-controller-6bd7c597cb-6pchv -- /bin/bash

修改hosts

vim /etc/hosts

192.168.50.200    eureka.jinyue.centos7    #增加
192.168.50.201    eureka.jinyue.centos7    #增加
192.168.50.202    eureka.jinyue.centos7    #增加

在本机浏览器打开地址:http://eureka.jinyue.centos7:30080/

upload successful

总结

从前面的部署过程中,可以再次进行总结部署的流程如下:

①下载Ingress-controller相关的YAML文件,并给Ingress-controller创建独立的名称空间;

②部署后端的服务,如eureka,并通过service进行暴露;

③部署Ingress-controller的service,以实现接入集群外部流量;

④部署Ingress,进行定义规则,使Ingress-controller和后端服务的Pod组进行关联。

构建TLS站点(eureka没开启https访问,本处无效,其他开启https访问的服务没问题)

openssl genrsa -out tls.key 2048

openssl req -new -x509 -key tls.key -out tls.crt -subj /C=CN/ST=Beijing/L=Beijing/O=DevOps/CN=eureka.jinyue.centos7

kubectl create secret tls eureka-ingress-secret --cert=tls.crt --key=tls.key

kubectl describe secret eureka-ingress-secret

cp ingress-eureka.yaml ingress-eureka-tls.yaml

vim ingress-eureka-tls.yaml
apiVersion: extensions/v1beta1 
kind: Ingress  
metadata:           
  name: ingress-eureka-tls    
  namespace: default     
  annotations:           
    kubernetes.io/ingress.class: "nginx"
spec:      
  rules:   
  - host: eureka.jinyue.centos7    
    http:
      paths:       
      - path:       
        backend:    
          serviceName: eureka-service-internal
          servicePort: 8761

kubectl apply -f ingress-eureka-tls.yaml

kubectl get ingress

kubectl describe ingress ingress-eureka-tls

访问测试:https://eureka.jinyue.centos7:30443


   转载规则


《ingress-nginx部署》 Midas Li 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Arcgis Engine for Linux安装 Arcgis Engine for Linux安装
ESRI文档 repoquery命令,可以用于查询某个lib的程序提供方: repoquery --nvr --whatprovides SDL-devel基础包安装yum groupinstall "Compatibility
2019-08-20
下一篇 
Eureka迁移至Kubernetes Eureka迁移至Kubernetes
Eureka迁移至Kubernetes新建Eureka-Server新建过程参考:centos7搭建Eureka-Server注册中心集群 不同之处: 只需创建1个配置文件,采用yml文件格式,不用创建3个配置文件 配置文件applic
2019-08-14
  目录