自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,以此為例進行遷移介紹。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: demo-ingress
namespace: default
spec:
ingressClassName: slb
rules:
- host: demo.ingress.vip
http:
paths:
- backend:
service:
name: nginx
port:
number: 80
path: /
pathType: Prefix
在瀏覽器地址欄中輸入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屬于不同的負載均衡網關,不支持平滑遷移。