Upgrading v1.3 to v1.8 to Allow VirtualService to Support Delegate Switchover
Scenario
By default, the mesh of v1.8 supports the Delegate function of VirtualService, and the ASM console supports only the VirtualService in Delegate format. The upgrade does not modify your VirtualService, but you cannot maintain the route on the page after the upgrade. Therefore, you need to modify your VirtualService according to this section.
For details about Delegate, see the description in the Istio community.
https://istio.io/latest/docs/reference/config/networking/virtual-service/#Delegate
Constraints
- Delegate can be set only when route and redirect are left blank.
- ASM supports only 1-level Delegate. Multi-level Delegate does not take effect.
- HTTPMatchRequest of Delegate VirtualService must be a subset of root VirtualService.
- The Delegate feature is valid only for HTTP and gRPC protocols.
Procedure
The modification involves two scenarios. The following uses the Tomcat service added to a mesh as an example.
Scenario 1: If no gateway is added to the service before the upgrade, you can skip the following operations after the upgrade.
Scenario 2: If a gateway is added to the service before the upgrade, perform the following operations after the upgrade.
- Configure the kubectl command for the cluster where the mesh is located. For details, see the cluster details on the CCE console.
- Create two VirtualService YAML files in the istio-system namespace.
File name: tomcat-default-gateway.yaml
To be more specific:
- tomcat: name of the service to be modified.
- tomcat-default-gateway: name of the VirtualService. The format is {Service name}-default-gateway.
- tomcat-route: name of the VirtualService to be modified.
- 100.85.219.117: ELB IP address.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: tomcat-default-gateway namespace: istio-system spec: gateways: - istio-system/tomcat-default-gateway hosts: - 100.85.219.117 http: - delegate: name: tomcat-route namespace: default match: - uri: prefix: /test
File name: tomcat-route-default.yaml
To be more specific:
- tomcat: name of the service to be modified.
- tomcat-route-default: name of the VirtualService. The format is {Service name}-route-default.
- tomcat-route: name of the VirtualService to be modified.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: tomcat-route-default namespace: istio-system spec: hosts: - tomcat.default.svc.cluster.local http: - delegate: name: tomcat-route namespace: default match: - uri: prefix: /
Run the following commands to create a VirtualService:
kubectl create -f tomcat-route-default.yaml
kubectl create -f tomcat-default-gateway.yaml
- Run the kubectl -n{namespace} get vs command to obtain the VirtualService of the service and run the kubectl -n{namespace} edit vs tomcat-route command to modify it as follows:
- Delete spec.gateways, spec.hosts, and spec.http.match.uri.
- Replace tomcat-default-gateway.istio-system.svc.cluster.local with istio-system/tomcat-default-gateway.
- Change apiVersion: networking.istio.io/v1alpha3 to apiVersion: networking.istio.io/v1beta1.
- destination.host: The format is {Service name}.{namespace}.svc.cluster.local.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: tomcat-route namespace: default spec: gateways: - tomcat-default-gateway.istio-system.svc.cluster.local - mesh hosts: - tomcat - 100.85.219.117 # spec.gateways and spec.hosts need to be deleted. http: - match: - gateways: - istio-system/tomcat-default-gateway port: 5555 uri: prefix: /test # spec.http.match.uri needs to be deleted. route: - destination: host: tomcat.default.svc.cluster.local port: number: 8080 subset: v1 - match: - gateways: - mesh port: 8080 route: - destination: host: tomcat.default.svc.cluster.local port: number: 8080 subset: v1
- Click External Access URL on the service list page to check whether it can be accessed normally.
- On the Service Gateway page, check whether the service gateway route is displayed properly.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot