Kubernetes Ingress Nginx使用

在此我们不讲述如何部署ingress-controller,只演示如何使用ingress之nginx使用。主要演示如何使用ingress nginx实现我们nginx的多样化配置

案例1:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  namespace: test
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  tls:
  - hosts:
    - nginx-a.gogen.cn
    secretName: gogen.cn
  rules:
  - host: nginx-a.gogen.cn
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-a
          servicePort: 80
      - path: /.*.(txt|css|doc)
        backend:
          serviceName: nginx-b
          servicePort: 80
      - path: /(api|app)/
        backend:
          serviceName: nginx-c
          servicePort: 80
      - path: /api
        backend:
          serviceName: nginx-d
          servicePort: 80

上面我们定义了一个ingress,并指定运行在test名称空间(此名名称空间需要自行创建)。后端我们定义了四组服务,分别为:nginx-a,nginx-b,nginx-c和nginx-d,并指定服务的port为80(这四组服务也需要自行定义)。

然后我们ingress的主要配置里面我们定义了tls证书,并指定可使用的host和需要使用的secret。我们是将证书先导入进secret,然后直接引用secret,导入方法如下:

kubectl create secret tls gogen.cn --cert=1592339__gogen.cn.pem --key=1592339__gogen.cn.key -n test
tls:
- hosts:                        #此为固定项,是一个列表,我们可以有另外的证书对应其它域名
  - nginx-a.gogen.cn            #此为列表,必须为一个域名,一个secret可以对多个域名
  secretName: gogen.cn          #创建secret时指定的名称

annotations配置

# 指定了我们使用后端ingress controller的类别,如果后端有多个ingress controller的时候很重要
kubernetes.io/ingress.class: "nginx"

# 指定我们的rules的path可以使用正则表达式,如果我们没有使用正则表达式,此项则可不使用
nginx.ingress.kubernetes.io/use-regex: "true"

rules配置





猜你喜欢

转载自blog.51cto.com/270142877/2338348