相比IPv4地址,IPv6地址具有更大地址空間,更高的安全性。本文介紹如何建立IPv6地址的ASM網關,和為已有ASM網關添加IPv6地址。
前提條件
已添加叢集到ASM執行個體。具體操作,請參見添加叢集到ASM執行個體。
方式一:建立IPv6地址的ASM網關
您需要在建立ASM網關時添加service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
註解,聲明該網關使用IPv6地址。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊使用YAML建立。
在建立頁面,設定命名空間為istio-system,在文字框中輸入以下內容,然後單擊建立。
clusterIds
欄位值請配置為實際資料面叢集ID。欄位
說明
service.beta.kubernetes.io/alicloud-loadbalancer-address-type
設定CLB的網路類型。可選:
internet:公網。
intranet:私網。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec
設定CLB規格。可選:slb.s1.small、slb.s2.small、slb.s2.medium、slb.s3.small、slb.s3.medium、slb.s3.large。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
設定值為
"ipv6"
,表示該CLB採用IPv6地址。網關建立成功後,在入口網關頁面,可以看到目標網關的服務地址為IPv6地址。
方式二:為已有ASM網關添加IPv6地址
如果您已建立ASM網關,且該網關使用的是IPv4地址,可以通過建立CLB的方式為已有ASM網關添加IPv6地址。配置後,您既可以使用IPv4地址,也可以使用IPv6地址。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在服務頁面頂部,設定命名空間為istio-system,在右上方單擊使用YAML建立資源。
在建立頁面,設定樣本模板為自訂,將以下內容複寫到模板文字框中,單擊建立。
重要nodePort不能與已有連接埠重複。
欄位
說明
service.beta.kubernetes.io/alicloud-loadbalancer-address-type
設定CLB的網路類型。可選:
internet:公網。
intranet:私網。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec
設定CLB規格。可選:slb.s1.small、slb.s2.small、slb.s2.medium、slb.s3.small、slb.s3.medium、slb.s3.large。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
設定值為
"ipv6"
,表示該CLB採用IPv6地址。建立服務成功後,您可以在服務頁面的External IP列,查看istio-ingressgateway和istio-ingressgateway-2對應的IPv4地址和IPv6地址。這兩個地址即為ASM網關的IPv4地址和IPv6地址。
FAQ
如何擷取用戶端原始IPv6地址?
對IPv6地址關聯的CLB執行個體進行配置,修改80和443連接埠對應的監聽配置,在進階配置下開啟對Proxy Protocol協議的支援。具體操作,請參見通過CLB四層監聽擷取用戶端真實IP。
建立Envoy過濾器模板。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 ,然後單擊建立Envoy過濾器模板。
在建立頁面,輸入模板名稱,單擊添加Envoy過濾器模板適配版本,選擇適配Isito版本,配置如下YAML,然後單擊建立。
apiVersion: networking.istio.io/v1alpha3 kind: EnvoyFilter metadata: name: proxy-protocol namespace: istio-system spec: configPatches: - applyTo: LISTENER patch: operation: MERGE value: listener_filters: - name: envoy.listener.proxy_protocol - name: envoy.listener.tls_inspector workloadSelector: labels: istio: ingressgateway
將上一步建立的Envoy過濾器模板應用到ASM網關,使ASM網關支援Proxy Protocol協議。
在Envoy過濾器模板頁面,單擊目標模板右側操作列下的編輯模板。
在編輯Envoy過濾器模板頁面,單擊綁定工作負載頁簽,然後單擊選定工作負載綁定。
在選定工作負載綁定對話方塊,選擇目標命名空間為istio-system、工作負載類型為Deployment,在未綁定地區,單擊目標網關右側的綁定,然後單擊確定。
在IPv6網路下訪問網關的IPv6 URL,查看對應的網關日誌。
網關日誌樣本如下。
downstream_remote_address
欄位值為用戶端的原始IPv6地址。{"upstream_cluster":null,"bytes_received":0,"downstream_local_address":"[2400:XXXX:1300::12d1]:80","upstream_service_time":null,"FILTER_CHAIN_NAME":null,"path":"/","x_forwarded_for":"2402:XXXX:1800:af00:0:9671:f00f:314b","upstream_host":null,"bytes_sent":0,"requested_server_name":null,"route_name":null,"response_flags":"NR","start_time":"2022-12-28T06:41:57.796Z","upstream_transport_failure_reason":null,"protocol":"HTTP/1.1","authority":"[2400:XXXX:1300::12d1]","LOCAL_REPLY_BODY":"","duration":0,"method":"GET","downstream_remote_address":"[2402:XXXX:1800:af00:0:9671:f00f:314b]:58272","request_id":"fee2b69a-b755-986b-91e4-5d228c81****","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36","trace_id":null,"authority_for":"[2400:XXXX:1300::12d1]","upstream_local_address":null,"istio_policy_status":null,"response_code":404}