相比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地址。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在服务页面顶部,设置命名空间为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}