1. 程式人生 > >Kubernetes Ingress Nginx使用

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配置