Ingress-nginx

ingress代理架构图_LI.jpg

安装

  1. # 获取nginx-ingress镜像
  2. docker pull siriuszg/nginx-ingress-controller:0.26.1
  3. # 重新打tag
  4. docker tag siriuszg/nginx-ingress-controller:0.26.1 10.0.0.70:5000/nginx-ingress-controller:0.26.1
  5. # 推送到本地仓库
  6. docker push 10.0.0.70:5000/nginx-ingress-controller:0.26.1

使用步骤

1. 创建控制器

  1. # 获取控制器配置文件,访问
  2. https://github.com/kubernetes/ingress-nginx/blob/master/deploy/static/mandatory.yaml
  3. # 拷贝内容到 mandatory.yaml
  4. vi mandatory.yaml
  5. #----
  6. image: 10.0.0.70:5000/nginx-ingress-controller:0.26.1
  7. #----
  8. # 创建控制器
  9. kubectl apply -f mandatory.yaml
  10. # 查看是否创建
  11. kubectl get pods -n ingress-nginx

2. 创建pod

  1. # nginx服务部署文件
  2. vi deploy-demo-nginx.yml
  3. apiVersion: apps/v1
  4. kind: Deployment
  5. metadata:
  6. name: nginx-deploy-demo
  7. spec:
  8. replicas: 3
  9. selector:
  10. matchLabels:
  11. app: deploy-demo
  12. release: canary
  13. template:
  14. metadata:
  15. labels:
  16. app: deploy-demo
  17. release: canary
  18. spec:
  19. containers:
  20. - name: deploy-demo
  21. image: nginx:1.13-alpine
  22. ports:
  23. - name: http
  24. containerPort: 80
  25. # 部署pod资源
  26. kubectl apply -f deploy-demo-nginx.yml

3. 创建pod的service

# pod的service文件
vi svc-deploy-demo.yml
apiVersion: v1
kind: Service
metadata:
    name: svc-nginx-deploy-demo
    namespace: default
spec:
   selector:
     app: deploy-demo
     release: canary
   ports:
   - port: 80
     targetPort: 80
     protocol: TCP

# 部署服务
kubectl create -f svc-deploy-demo.yml

4. 创建ingress资源

# service的ingress资源
vi ingress-nginx.yml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: ingress-nginx
    namespace: default
spec:
  rules:
  - host: ohmy.k8s
    http:
     paths:
     - path: /
       backend:
         serviceName: svc-nginx-deploy-demo
         servicePort: 80

# 创建ingress资源
kubectl create -f ingress-nginx.yml

5. 创建ingress的service

# nodePort文件
vi service-nodeport.yml
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
      nodePort: 30080
      protocol: TCP
    - name: https
      port: 443
      targetPort: 443
      protocol: TCP
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

---

# 创建service
kubectl create -f service-nodeport.yml

测试访问

将主机IP与域名绑定,访问

Ingress-tomcat