CopyPastor

Detecting plagiarism made easy.

Score: 1; Reported for: Exact paragraph match Open both answers

Possible Plagiarism

Plagiarized on 2022-05-10
by Harsh Manvar

Original Post

Original - Posted on 2020-11-02
by Jakub



            
Present in both answers; Present only in the new answer; Present only in the old answer;

You can use the **HTTP rewrite** with the virtual service before sending traffic further
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - match: - uri: prefix: /ratings rewrite: uri: /v1/bookRatings route: - destination: host: ratings.prod.svc.cluster.local subset: v1
Read more at official document : https://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPRewrite
If you don't want to use your domains as a virtual service hosts I would say the only options here would be to
- use rewrite in your virtual service. - use custom headers

There is an example about rewrite from istio documentation.

>**HTTPRewrite** > >HTTPRewrite can be used to rewrite specific parts of a HTTP request before forwarding the request to the destination. Rewrite primitive can be used only with HTTPRouteDestination. The following example demonstrates how to rewrite the URL prefix for api call (/ratings) to ratings service before making the actual API call.

apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: ratings-route spec: hosts: - ratings.prod.svc.cluster.local http: - match: - uri: prefix: /ratings rewrite: uri: /v1/bookRatings route: - destination: host: ratings.prod.svc.cluster.local subset: v1
---
There is an example for 2 nginx deployments, both serving on `/`.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx1 spec: selector: matchLabels: run: nginx1 replicas: 1 template: metadata: labels: run: nginx1 app: frontend spec: containers: - name: nginx1 image: nginx ports: - containerPort: 80 lifecycle: postStart: exec: command: ["/bin/sh", "-c", "echo Hello nginx1 > /usr/share/nginx/html/index.html"] --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx2 spec: selector: matchLabels: run: nginx2 replicas: 1 template: metadata: labels: run: nginx2 app: frontend spec: containers: - name: nginx2 image: nginx ports: - containerPort: 80 lifecycle: postStart: exec: command: ["/bin/sh", "-c", "echo Hello nginx2 > /usr/share/nginx/html/index.html"] --- apiVersion: v1 kind: Service metadata: name: nginx labels: app: frontend spec: ports: - port: 80 protocol: TCP selector: app: frontend --- apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: comp-ingress-gateway spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: nginxvirt spec: gateways: - comp-ingress-gateway hosts: - '*' http: - name: match match: - uri: prefix: /a rewrite: uri: / route: - destination: host: nginx.default.svc.cluster.local subset: v1 port: number: 80 - name: default match: - uri: prefix: /b rewrite: uri: / route: - destination: host: nginx.default.svc.cluster.local subset: v2 port: number: 80 --- apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: nginxdest spec: host: nginx.default.svc.cluster.local subsets: - name: v1 labels: run: nginx1 - name: v2 labels: run: nginx2 trafficPolicy: tls: mode: ISTIO_MUTUAL

And a test with curl.

curl -v xx.xxx.xxx.x/a HTTP/1.1 200 OK Hello nginx1

curl -v xx.xxx.xxx.x/b HTTP/1.1 200 OK Hello nginx2
---

There is an [example][1] about custom headers in istio documentation.

[1]: https://istio.io/latest/docs/tasks/traffic-management/request-routing/#route-based-on-user-identity

        
Present in both answers; Present only in the new answer; Present only in the old answer;