日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過AlbConfig配置ALB實例

AlbConfig是由ALB Ingress Controller提供的CRD資源,ALB Ingress Controller使用AlbConfig配置ALB實例和監聽。本文介紹如何創建、修改、更新AlbConfig以及開啟日志服務等操作。

功能索引

分類

鏈接

ALB實例配置

監聽配置

前提條件

注意事項

  • 推薦優先使用kubectl edit命令直接修改、更新資源的配置。如果必須使用kubectl apply命令來修改、更新資源,請在執行kubectl apply命令之前先執行kubectl diff命令預覽變更點,確保變更符合預期,然后再執行kubectl apply命令將變更應用到Kubernetes集群。

  • 低版本Nginx Ingress Controller無法識別Ingress資源中的spec:ingressClassName字段。如果集群中同時存在Nginx Ingress和ALB Ingress,會存在Ingress資源被低版本Nginx Ingress Controller調諧的風險。因此,請及時升級Nginx Ingress Controller版本,或通過Annotation注解項指定ALB Ingress對應的ingressClass。具體操作,請參見升級Nginx Ingress Controller組件ALB Ingress服務高級用法

創建AlbConfig

一個AlbConfig對應一個ALB實例,如果您需要使用多個ALB實例,可以通過創建多個AlbConfig實現。創建AlbConfig操作如下。

重要

如果您在安裝ALB Ingress Controller組件時,為ALB云原生網關實例來源選擇了新建使用已有選項,Controller會自動創建一個名為“alb”的AlbConfig和名為“alb”的IngressClass資源。

  1. 創建并拷貝以下內容到alb.yaml文件中,用于創建AlbConfig。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 替換為您的虛擬交換機的ID
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
      listeners:
        - port: 80
          protocol: HTTP

    參數

    說明

    spec.config.name

    表示ALB實例的名稱。

    spec.config.addressType

    表示負載均衡的地址類型。取值如下:

    • Internet(默認值):ALB實例會擁有公網IP地址,DNS域名被解析到公網IP,因此可以在公網環境下訪問。

    • Intranet:ALB實例將只擁有私網IP地址,DNS域名被解析到私網IP,因此只能在其所在的VPC內被訪問。

    重要

    addressType參數僅在創建AlbConfig時被解析,后續更新AlbConfig不產生效果。

    spec.config.zoneMappings

    用于設置ALB Ingress使用的虛擬交換機ID。在多個可用區的地域中,您至少需要指定兩個處于不同可用區的交換機。對于只包含單個可用區的地域,指定一個交換機ID即可。指定的交換機必須在ALB當前所支持的可用區內,且與集群處于同一VPC。關于ALB Ingress支持的地域與可用區,請參見ALB支持的地域與可用區

    重要
    • 在多個可用區的地域中,您至少需要指定兩個處于不同可用區的交換機。

    • zoneMappings參數僅在創建AlbConfig時被解析,后續更新AlbConfig不產生效果。

    為集群安裝ALB Ingress Controller組件時,可以選擇創建默認的AlbConfig。AlbConfig的配置參數除vSwitchID外,其他參數將會按照以下的默認配置創建。

    展開查看AlbConfig的默認配置

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb # AlbConfig名稱。
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # 在AlbConfig中,可以通過addressAllocatedMode參數指定ALB實例IP模式,可取值為Dynamic(動態IP模式)和Fixed(固定IP模式)。
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:
        - vSwitchId: #...
        - vSwitchId: #...
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. 執行以下命令,創建AlbConfig。

    kubectl apply -f alb.yaml

    預期輸出:

    AlbConfig.alibabacloud.com/alb created
  3. 執行以下命令,查看AlbConfig資源。

    kubectl get AlbConfig

    預期輸出:

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
    說明

    創建HTTPS監聽并為其配置證書后,PORT&PROTOCOLCERTID中才會顯示內容,內容為空是正常現象。

復用已有ALB實例

如果您希望復用已有ALB實例,需要在創建AlbConfig時指定ALB實例ID,且已有的ALB實例必須是通過應用型負載均衡ALB控制臺創建的標準版或WAF增強版實例。不支持復用基礎版ALB實例。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: **** # 通過ALB控制臺創建的標準版或WAF增強版ALB實例ID。
    forceOverride: false
    listenerForceOverride: false

參數說明如下:

參數

說明

id

  • 若沒有id字段或id字段為空,表示ALB實例為非復用場景。此時,forceOverride字段與listenerForceOverride字段均不生效。

  • id字段為有效值時,表示ALB實例為復用場景。

    • forceOverride字段為true,將強制覆蓋ALB實例屬性及監聽屬性。

    • forceOverride字段為false,則不會強制覆蓋ALB實例屬性,且根據listenerForceOverride字段決定是否強制覆蓋監聽屬性。

重要

在復用場景下,不建議您手動修改監聽名稱,以免錯誤地將監聽置于或脫離ACK的控制。由AlbConfig創建或更新的監聽由ACK管理,且監聽名稱的默認格式為ingress-auto-listener-{port};其他格式的監聽名稱由ALB控制臺管理。

forceOverride

表示復用模式下是否強制覆蓋ALB實例屬性。

  • true表示強制覆蓋。

  • false表示不覆蓋。不覆蓋場景下編輯AlbConfig將不改變ALB實例屬性。

listenerForceOverride

表示復用模式下是否強制覆蓋監聽屬性。

  • true表示強制覆蓋。

  • false表示不覆蓋。

更新AlbConfig

對于已經通過AlbConfig創建的ALB實例,更改實例配置時推薦使用kubectl edit命令進行更新。更新AlbConfig操作如下。

  1. 執行以下命令,查看AlbConfig名稱。

    kubectl get AlbConfig

    預期輸出:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb        alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
  2. 執行以下命令編輯AlbConfig。

    kubectl edit albconfig <ALBCONFIG_NAME> # <ALBCONFIG_NAME>替換AlbConfig的名稱

    在AlbConfig配置文件中,更新AlbConfig的相關內容。例如,修改spec.config.name字段的參數,將ALB實例的名稱修改為new_alb

    ...
     spec:
       config:
         name: new_alb # 更新后的名稱。
    ...

使用IngressClass關聯AlbConfig與Ingress

ALB Ingress使用Kubernetes原生的IngressClass資源確定AlbConfig與Ingress的關聯。通過在IngressClass資源中填入

  1. 創建并拷貝以下內容到ingress_class.yaml文件中,用于創建IngressClass。

    1.19及之后版本集群

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb # IngressClass關聯的AlbConfig的名稱

    1.19版本之前集群

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb
  2. 執行以下命令,創建IngressClass。

    kubectl apply -f ingress_class.yaml

    預期輸出:

    ingressclass.networking.k8s.io/alb created
  3. 創建并拷貝以下內容到ingress.yaml文件中。通過ingressClassName參數指定名稱為alb的IngressClass關聯AlbConfig。

    1.19及之后版本集群

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb # Ingress關聯的IngressClass的名稱
      rules:
      - http:
          paths:
          # 配置Context Path。
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # 配置Context Path。
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

    1.19版本之前集群

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
      - http:
          paths:
          # 配置Context Path。
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # 配置Context Path。
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  4. 執行以下命令,創建Ingress。

    kubectl apply -f ingress.yaml

    預期輸出:

    ingress.networking.k8s.io/cafe-ingress created

完成上述步驟,就可以使用IngressClass關聯AlbConfig與Ingress。

創建并使用多個ALB實例

如果您希望同時使用多個ALB實例,在Ingress資源中通過spec.ingressClassName指定不同的IngressClass,即可將Ingress關聯到不同的ALB實例。

  1. 創建并拷貝以下內容到alb-2.yaml文件中,用于創建AlbConfig。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2        # ALB實例名稱。
        addressType: Internet  # 負載均衡具有公網IP地址。
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # 虛擬交換機的ID
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. 執行以下命令,創建AlbConfig。

    kubectl apply -f alb-2.yaml

    預期輸出:

    AlbConfig.alibabacloud.com/alb-2 created
  3. 創建并拷貝以下內容到ingress_class2.yaml文件中,用于創建IngressClass。

    1.19及之后版本集群

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2 # IngressClass關聯的AlbConfig的名稱

    1.19版本之前集群

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2 # IngressClass關聯的AlbConfig的名稱
  4. 執行以下命令,創建IngressClass。

    kubectl apply -f ingress_class2.yaml

    預期輸出:

    ingressclass.networking.k8s.io/alb-2 created
  5. 創建并拷貝以下內容到ingress2.yaml文件中。通過ingressClassName參數指定不同的ALB實例。下方的示例中,就通過在ingressClassName字段中填入alb-2,將Ingress關聯到了名為alb-2的IngressClass,以及這個IngressClass所關聯的,名為alb-2的ALB實例。

    1.19及之后版本集群

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # 配置Context Path。
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          # 配置Context Path。
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80

    1.19版本之前集群

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # 配置Context Path。
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # 配置Context Path。
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  6. 執行以下命令,創建Ingress。

    kubectl apply -f ingress2.yaml

    預期輸出:

    ingress.networking.k8s.io/cafe-ingress2 created

使用IPv6地址

在創建ALB實例時,通過在addressIpVersion字段中填入DualStack即可開啟雙棧,同時支持IPv4與IPv6。

重要

addressIpVerison參數僅在創建AlbConfig時被解析,后續更新AlbConfig不產生效果。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    addressIpVersion: DualStack # 開啟雙棧
    ...

指定TLS安全策略

當前AlbConfig配置HTTPS監聽時,支持指定TLS安全策略。TLS安全策略包含自定義策略和系統默認策略,更多信息,請參見TLS安全策略

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1 # 指定的安全策略ID
  #...

開啟日志服務訪問日志

如果您希望ALB Ingress能夠收集訪問日志Access Log,可以在AlbConfig中指定logProjectlogStore

說明
  • 創建集群時,您選擇了自動創建或使用已有日志服務Project。您可登錄容器服務管理控制臺,在左側導航欄選擇集群集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇集群信息然后,在基本信息頁簽,查看集群關聯的日志服務 Project

  • logStore命名需要以alb_開頭,若指定logStore不存在,則會自動創建。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
    #...

您可以在基本信息頁簽單擊日志服務 Project右側的名稱,查看收集的訪問日志。

刪除ALB實例

一個AlbConfig對應一個ALB實例, 因此,如果ALB實例使用AlbConfig創建,則可以通過刪除AlbConfig實現刪除ALB實例。

重要

刪除AlbConfig前,請刪除其關聯的所有Ingress資源。

執行以下命令,刪除AlbConfig。

kubectl delete AlbConfig <AlbConfig_NAME> # <AlbConfig_NAME>替換AlbConfig的名稱

刪除復用ALB實例的AlbConfig

在創建AlbConfig時如果選擇復用已有ALB實例,因為實例并非通過AlbConfig創建,刪除AlbConfig并不會刪除ALB實例。如果您希望刪除復用ALB實例的AlbConfig,請按照以下操作步驟操作。

  1. 使用kubectl edit命令修改AlbConfig,刪除此AlbConfig的所有監聽,即刪除spec.listeners字段下的所有條目。

    重要

    若您集群中安裝的ALB Ingress Controller組件版本為v2.10.0-aliyun.1及以前版本,請執行該操作。否則,請跳過該步驟。

  2. 執行以下命令,刪除AlbConfig。

    重要

    刪除AlbConfig前,請刪除其關聯的所有Ingress資源。

    kubectl delete AlbConfig <AlbConfig_NAME> # <AlbConfig_NAME>替換AlbConfig的名稱

創建監聽

監聽(Listeners)是ALB實例用來處理實際流量的頂層入口。只有創建了監聽,ALB實例才能對外開放端口,接收客戶端的請求。

在AlbConfig中設置portprotocol即可創建對應的監聽。一旦修改了portprotocol以及其他監聽的屬性,系統將會把原有的監聽刪除,然后創建一個新的監聽來替代它。

監聽可以使用三種應用層協議:HTTP、HTTPS、QUIC。

重要

不同協議的多個監聽可以同時使用,但需要在Ingress資源中配置Annotation以保證Ingress同時適用于多個監聽。具體操作,請參見配置自定義監聽端口

創建HTTP監聽

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 80
      protocol: HTTP # protocol的可選項為HTTP、HTTPS、QUIC。
  ...
說明

HTTP協議自動兼容WebSocket,不需要特殊設置即可。

創建HTTPS監聽

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS
  ...
重要

使用HTTPS監聽時,需要配置證書。具體操作,請參見配置HTTPS證書以實現加密通信

創建QUIC監聽

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: QUIC
  ...
重要

使用QUIC監聽可以兼容客戶端使用HTTP/3協議進行訪問。使用QUIC監聽的更多細節,請參見使用QUIC監聽兼容HTTP/3協議

設置監聽連接請求超時時間

在AlbConfig中可以指定監聽,設置連接請求超時時間(單位為秒,取值范圍為[1,180])。若在超時時間內后端服務器一直沒有響應,ALB實例將放棄等待,給客戶端返回HTTP 504錯誤碼。如果不指定連接請求超時時間,則默認為60秒。YAML示例如下。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40 # 若不填入值,默認超時時間為60秒
  ...

使用數據壓縮功能

開啟該功能后,ALB實例會對某些特定文件類型進行壓縮。gzipEnabled取值如下:

  • true:對特定文件類型進行壓縮。

  • false:不會對任何文件類型進行壓縮。

說明

目前Brotli支持壓縮所有類型,Gzip支持壓縮的類型包括text/xml、text/plain、text/css、application/javascript、application/x-javascript、application/rss + xml、application/atom + xml、application/xml和application/json。

開啟數據壓縮的YAML示例如下:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true
  ...

獲取來訪者客戶端IP

開啟此功能后,ALB實例在轉發請求到后端服務時,在HTTP請求頭中添加客戶端真實IP的字段。XForwardedForEnabled取值如下:

  • true:獲取來訪者真實IP。

  • false:不獲取來訪者真實IP。

重要

僅HTTP和HTTPS監聽支持配置此參數。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # XForwardedForEnabled暫不支持關閉。
  #...

獲取客戶端的端口

開啟此功能后,ALB實例在轉發請求到后端服務時,在HTTP請求頭中添加客戶端端口字段。XForwardedForClientSrcPortEnabled取值如下:

  • true:獲取負載均衡實例客戶端的端口。

  • false:不獲取負載均衡實例客戶端的端口。

重要

僅HTTP和HTTPS監聽支持配置此參數。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
  ...

獲取ALB實例的監聽協議

開啟此功能后,ALB實例在轉發請求到后端服務時,在HTTP請求頭中添加ALB實例使用的監聽協議字段。XForwardedForProtoEnabled取值如下:

  • true:獲取實例的監聽協議。

  • false:不獲取實例的監聽協議。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForProtoEnabled: true
  ...

獲取ALB實例的ID

開啟此功能后,ALB實例在轉發請求到后端服務時,在HTTP請求頭中添加ALB實例的ID字段。XForwardedForSLBIdEnabled取值如下:

  • true:獲取負載均衡實例的ID。

  • false:不獲取負載均衡實例的ID。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBIdEnabled: true
  ...

獲取ALB實例的監聽端口

開啟此功能后,ALB實例在轉發請求到后端服務時,在HTTP請求頭中添加實例的監聽端口字段。XForwardedForSLBPortEnabled取值如下:

  • true:獲取實例的監聽端口。

  • false:不獲取實例的監聽端口。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBPortEnabled: true
  ...

指定可信代理服務器的IP

在AlbConfig中通過XForwardedForClientSourceIpsEnabled配置項允許ALB實例從X-Forwarded-For頭部字段中獲取真實客戶端IP。通過XForwardedForClientSourceIpsTrusted配置項,可以指定一組可信代理服務器的IP。ALB實例將從X-Forwarded-For字段中的IP列表末尾開始向前遍歷,選擇第一個不在可信IP列表的IP作為客戶端的實際IP。

例如,X-Forwarded-For中的值為<客戶端真實IP,代理IP-1,代理IP-2>,您可以在XForwardedForClientSourceIpsTrusted中填入代理IP-1代理IP-2,以此獲取真實的客戶端IP。

重要

僅HTTP和HTTPS監聽支持配置此參數。

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata: 
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true # true表示允許ALB從X-Forwarded-For頭字段中查找真實客戶端IP,此時必須配置XForwardedForClientSourceIpsTrusted寫入格式正確的內容;false表示不允許ALB從X-Forwarded-For頭字段中查找真實客戶端IP。
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16  # 請輸入正確格式的IP或網段,并以 ; 分隔,IP或網段之間無需添加空格。僅在XForwardedForClientSourceIpsEnabled為true時生效。
  ...

設置ACL訪問控制

通過AlbConfig可以為ALB監聽啟用訪問控制功能,通過設置入方向的允許或拒絕規則,對客戶端請求精確控制,管理請求轉發。關于ACL的更多信息,請參見配置ACL實現訪問控制

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
   #...
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White
  #...

字段說明如下:

  • aclType:用于設置監聽的ACL為黑名單或白名單。取值為BlackWhite,分別表示黑名單和白名單。

  • aclEntries:用于設置訪問控制條目IP地址段,例如127.0.0.1/32。