K8S Ingress/Ingress Controller


介紹


Ingress

定義規則

Ingress 是 K8s 所提供的工具,用在定義應用程式如何公開服務


Ingress Controller

實現規則與分流

Ingress Controller 負責監聽 Ingress 管理路由 Nginx 等,Ingress Controller 會根據 Ingress Controler 分配流量到應用程式


實作


建立 Ingress

手上有三個 service

  1. efk-elasticsearch-client
  2. efk-kibana
  3. hl
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: ingress
    annotations:
    kubernetes.io/ingress.class: "traefik"
    traefik.ingress.kubernetes.io/frontend-entry-points: http,https
    #traefik.ingress.kubernetes.io/redirect-entry-point: https
    #traefik.ingress.kubernetes.io/redirect-permanent: "true"
    spec:
    ingressClassName: traefik
    rules:
    - http:
    paths:
    - path: /es
    pathType: Prefix
    backend:
    service:
    name: efk-elasticsearch-client
    port:
    number: 9200
    - path: /kb
    pathType: Prefix
    backend:
    service:
    name: efk-kibana
    port:
    number: 443
    - path: /
    pathType: Exact
    backend:
    service:
    name: hl
    port:
    number: 8080



建立 Ingress Controller

1
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml

一旦更新或刪除 Ingress 資源,Nginx Ingress Controller 會自動響應並相應地更新或刪除相關的路由規則。


參考資料

  • [Kubernetes / K8s]Ingress 和 Ingress Controller 差別
  • Kubernetes - Ingress
  • GitHub marcel-dempers/docker-development-youtube-series