Kubernetes Ingress Nginx使用
阿新 • • 發佈:2019-01-03
在此我們不講述如何部署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配置