自2023年02月28日起,容器服务ACK Serverless将下线SLB Ingress,您将无法通过集群安装和管理SLB Ingress Controller组件,并不再提供SLB Ingress技术支持。建议您尽快将SLB Ingress迁移到ALB Ingress。本文介绍如何从SLB Ingress迁移到ALB Ingress。
背景信息
由于SLB对7层支持能力较弱,例如,不支持HTTP标头改写、重定向、重写、限速等,并且需要您自行运维实例规格,导致SLB Ingress使用受到了很多限制。因此我们推出了专门面向7层的ALB Ingress网关,该网关提供更为强大的Ingress流量管理方式。
ALB Ingress基于阿里云应用型负载均衡ALB(Application Load Balancer)。相比于SLB Ingress,ALB Ingress具备处理复杂业务路由(支持Header、Cookie)和证书自动发现的能力,支持HTTP、HTTPS和QUIC协议,更好地满足在云原生应用场景下七层流量处理能力的需求。关于ALB与SLB功能对比,请参见负载均衡SLB产品家族介绍。
迁移流程
迁移示例
本文使用以下Ingress,并将Ingress的端点解析到域名demo.ingress.vip,以此为例进行迁移介绍。
在浏览器地址栏中输入demo.ingress.vip,浏览器显示Welcome to nginx!。
步骤一:创建ALB Ingress
安装ALB Ingress Controller组件。具体操作,请参见管理ALB Ingress Controller组件。
创建ALBConfig。
使用以下内容,创建albconfig.yaml。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet zoneMappings: - vSwitchId: vsw-wz9e2usil7e5an1xi**** - vSwitchId: vsw-wz92lvykqj1siwvif**** listeners: - port: 80 protocol: HTTP
zoneMappings:设置ALB Ingress交换机ID,您需要至少指定两个不同可用区交换机ID,且交换机必须与集群属于同一VPC。
执行以下命令,创建ALBConfig。
kubectl apply -f albconfig.yaml
执行以下命令,查看ALB实例是否创建成功。
kubectl get albconfig <albconfig的名称>
预期输出:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb-demo alb-eeee6gtqbmrm19**** alb-eeee6gtqbmrm19****.cn-shenzhen.alb.aliyuncs.com 27s
创建IngressClass。
使用以下内容,创建ingressclass.yaml。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo
parameters.name:ALBConfig名称,用于绑定ALBConfig。
执行以下命令,创建IngressClass。
kubectl apply -f ingressclass.yaml
创建ALB Ingress。
使用以下内容,创建albingress.yaml。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo-ingress-alb namespace: default spec: ingressClassName: alb rules: - host: demo.ingress.vip http: paths: - backend: service: name: nginx port: number: 80 path: / pathType: Prefix
name:Ingress名称,与SLB Ingress的名称不能相同。
ingressClassName:IngressClass的名称。
执行以下命令,创建ALB Ingress。
kubectl apply -f albingress.yaml
执行以下命令,获取ALB Ingress的端点。
kubectl get ing
预期输出:
NAME CLASS HOSTS ADDRESS PORTS AGE demo-ingress slb demo.ingress.vip 120.79.**.** 80 35m demo-ingress-alb alb demo.ingress.vip alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 80 10m 46s
从返回结果中获取ALB Ingress的端点,例如本文为alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com 。
执行以下命令,使用ALB Ingress访问Nginx。
curl -H "Host: demo.ingress.vip" http://alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com
预期输出:
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> .............
步骤二:切流到ALB Ingress
将demo.ingress.vip绑定的SLB端点修改为ALB的端点,实现使用ALB Ingress访问Nginx服务。
登录云解析控制台。
在域名解析页面,全部域名页签下,单击域名名称。
在解析设置页面,单击目标解析记录操作列下的修改。
在修改记录对话框将记录值修改为ALB Ingress的端点(本文为alb-eeee6gtqbmrm1****.cn-shenzhen.alb.aliyuncs.com),然后单击确定。
在浏览器地址栏中输入demo.ingress.vip。
浏览器显示Welcome to nginx!,说明使用ALB Ingress访问Nginx服务成功,从SLB Ingress切流到ALB Ingress成功。
步骤三:删除SLB Ingress
删除SLB Ingress。
在集群管理页左侧导航栏,选择 。
在路由页面上方,选择命名空间,在SLB Ingress右侧操作列,选择 。
在弹出的对话框,单击确定。
卸载SLB Ingress Controller。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在组件管理页面,单击其他页签,在SLB Ingress Controller卡片,单击卸载。
在弹出的对话框,单击确定。
FAQ
SLB Ingress是否支持平滑迁移到ALB Ingress?
由于ALB与SLB属于不同的负载均衡网关,不支持平滑迁移。