ingress

335 阅读1分钟

kubernetes.github.io/ingress-ngi… 官方地址

server相当于四层负载均衡,无法通过域名进行访问,ingress相当于七层的反向代理,可以根据访问的域名调度到不同的server,是提供访问的入口。

1. 部署ingress-controller

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

2.物理机通过nodeport方式访问服务

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

查看ingress的端口

[root@k8s-master ~]# kubectl get svc -n ingress-nginx
NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx   NodePort   10.254.242.80   <none>        80:30852/TCP,443:30751/TCP   43h

创建一个ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
  annotations:
    #nginx.ingress.kubernetes.io/auth-type: basic 开启认证
    #nginx.ingress.kubernetes.io/auth-secret: jenkins-basic-auth user/passwd
    #nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - admin' #提示信息
    nginx.ingress.kubernetes.io/rewrite-target: http://ingress1.xiaobing.com #跳转到ingress1.xiaobing.com
spec:
  rules:
  - host: foo.bar.com #访问的域名
    http:
      paths:
      - path: /foo #访问host/foo 调度到s1的server上
        backend:
          serviceName: s1
          servicePort: 80
      - path: /bar
        backend:
          serviceName: s2
          servicePort: 80
  tls: #https协议
    secretName: tls-secret  创建的secret里有https的证书
  - host: bar.foo.com
    http:
      paths:
      - backend:
          serviceName: s2
          servicePort: 80

创建证书

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj"/CN=nginxsvc/O=nginxsvc"
kubectl create secret tls tls-secret --key tls.key --cert tls.crt