1. 程式人生 > 資訊 >滴滴出行赴美上市,韓國未來資產和 Naver 將獲取 11.46 億元鉅額利潤

滴滴出行赴美上市,韓國未來資產和 Naver 將獲取 11.46 億元鉅額利潤

Ingresss是k8s叢集中的一個API資源物件,扮演邊緣路由器(edge router)的角色,也可以理解為叢集防火牆、叢集閘道器,可以自定義路由規則來轉發、管理、暴露一組Pod。 kubernetes處理這種場景時,涉及到三個元件: 1、反向代理web伺服器 負責攔截外部請求,一般是以Deployment或DeamonSet的方式部署到kubernetes叢集中的Nginx、Apache等 通常以NodePort或HostNetwork方式對k8s之外暴露 由於所在主機IP不確定,因此一般需要新增約束讓其執行在固定的一批主機上,並在上層新增負載均衡 2、Ingress controller 實時感知Ingress路由規則集合的變化,再與apiserver互動,獲取Service、Pod在叢集中的IP等資訊,然後傳送給反向代理web伺服器,重新整理其路由配置資訊 常用ingress controller包括: ①Kubernetes社群釋出的
ingress-nginx
和Nginx公司釋出的kubernetes-ingress 使用nginx作為代理,但貌似nginx和Ingress controller在一個Pod裡 ②Traefik Kubernetes Ingress provider 使用traffic proxy進行代理 還提供了友好的控制面板和監控介面,不僅可以方便地檢視Traefik根據Ingress生成的路由配置資訊,還可以檢視統計的一些效能指標資料,如:總響應時間、平均響應時間、不同的響應碼返回的總次數等。 Traefik還支援豐富的annotations配置,可配置眾多出色的特性,例如:自動熔斷、負載均衡策略、黑名單、白名單 3、Ingress
定義路由規則集合。 示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: name-virtual-host-ingress-no-third-host
spec:
  IngressClassName: xx
  rules:
  - host: first.bar.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: service1
            port:
              number: 80
  - host: second.bar.com
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: service2
            port:
              number: 80
  - http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: service3
            port:
              number: 80
(1)IngressClassName用於指定一個IngressClass:
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: external-lb
spec:
  controller: example.com/ingress-controller
  parameters:
    apiGroup: k8s.example.com
    kind: IngressParameters
    name: external-lb
    namespace: external-configuration
    scope: Namespace/Cluster
將IngressClass的annotation新增ingressclass.kubernetes.io/is-default-class:true,可以將其設定為叢集預設IngressClass,沒有指定IngressClass的Ingress都會使用它 (2)每條rule=host(可選)+IngressRuleValue host必須為域名,即必須通過{域名}:{反向代理伺服器對外暴露的埠}訪問反向代理伺服器 如果沒有DNS,則需要在訪問方的hosts檔案中新增反向代理伺服器所在主機IP-域名的對映關係, host一旦配置為某個域名(或使用如*.foo.com這樣的萬用字元匹配一批域名),則這條rule僅適用於訪問該域名的請求 IngressRuleValue目前只有HTTPIngressRuleValue一種,由若干HTTPIngressPath組成,每個HTTPIngressPath包括:
  • path
  • pathType
path的匹配規則,有以下三種: ImplementationSpecific:對於這種路徑型別,匹配方法取決於 IngressClass。 Exact:精確匹配 URL 路徑,且區分大小寫。 Prefix:基於以 / 分隔的 URL 路徑字首匹配,此時path可以形如“/, /aaa, /aaa/bbb”
  • backend
除了可以是svc,還可以是:
            backend:
              resource:
                apiGroup: k8s.example.com
                kind: StorageBucket
                name: icon-assets
綜上,該Ingress意味著:所有訪問first.bar.com的流量轉向Service1,所有訪問second.bar.com的流量轉向Service2,請求頭裡沒有域名的流量轉向Service3 進行https解除安裝 首先建立Secret:
apiVersion: v1
kind: Secret
metadata:
  name: testsecret-tls
  namespace: default
data:
  tls.crt: base64 編碼的 cert
  tls.key: base64 編碼的 key
type: kubernetes.io/tls
在Ingress中配置tls:
spec:
  tls:
  - hosts:
      - https-example.foo.com
    secretName: testsecret-tls
這樣,ingress與service之間的連線就從https變為了http