Istio Load balancing to multiple namespaces












1














I have two namespaces hosting different versions of my services, namespace sh-blue hosts one version of each service and sh-green hosts new version of each service. With each new deploy all services are updated to new version. I want to implement canary deployment from current version to new version.



The code below is what I currently have and it's working fine, except it's not obvious what kind of load balancing it is using. When I check ingress-gateway logs it's something like: blue, green, green, blue, green, green, green, red, green, blue, blue, blue, green, green, ...



Is it possible to control the load balancing? And is there a better way to setup this?



apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: sh-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*.something.local"


apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: sh
spec:
hosts:
- "*"
gateways:
- sh-gateway
http:
- match:
- uri:
prefix: /index
route:
- destination:
host: index.sh-blue.svc.cluster.local
port:
number: 8080
weight: 50
- destination:
host: index.sh-green.svc.cluster.local
port:
number: 8080
weight: 50
- match:
- uri:
prefix: /config
route:
- destination:
host: config.sh-blue.svc.cluster.local
port:
number: 8080
weight: 50
- destination:
host: config.sh-green.svc.cluster.local
port:
number: 8080
weight: 50









share|improve this question



























    1














    I have two namespaces hosting different versions of my services, namespace sh-blue hosts one version of each service and sh-green hosts new version of each service. With each new deploy all services are updated to new version. I want to implement canary deployment from current version to new version.



    The code below is what I currently have and it's working fine, except it's not obvious what kind of load balancing it is using. When I check ingress-gateway logs it's something like: blue, green, green, blue, green, green, green, red, green, blue, blue, blue, green, green, ...



    Is it possible to control the load balancing? And is there a better way to setup this?



    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
    name: sh-gateway
    spec:
    selector:
    istio: ingressgateway
    servers:
    - port:
    number: 80
    name: http
    protocol: HTTP
    hosts:
    - "*.something.local"


    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
    name: sh
    spec:
    hosts:
    - "*"
    gateways:
    - sh-gateway
    http:
    - match:
    - uri:
    prefix: /index
    route:
    - destination:
    host: index.sh-blue.svc.cluster.local
    port:
    number: 8080
    weight: 50
    - destination:
    host: index.sh-green.svc.cluster.local
    port:
    number: 8080
    weight: 50
    - match:
    - uri:
    prefix: /config
    route:
    - destination:
    host: config.sh-blue.svc.cluster.local
    port:
    number: 8080
    weight: 50
    - destination:
    host: config.sh-green.svc.cluster.local
    port:
    number: 8080
    weight: 50









    share|improve this question

























      1












      1








      1







      I have two namespaces hosting different versions of my services, namespace sh-blue hosts one version of each service and sh-green hosts new version of each service. With each new deploy all services are updated to new version. I want to implement canary deployment from current version to new version.



      The code below is what I currently have and it's working fine, except it's not obvious what kind of load balancing it is using. When I check ingress-gateway logs it's something like: blue, green, green, blue, green, green, green, red, green, blue, blue, blue, green, green, ...



      Is it possible to control the load balancing? And is there a better way to setup this?



      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
      name: sh-gateway
      spec:
      selector:
      istio: ingressgateway
      servers:
      - port:
      number: 80
      name: http
      protocol: HTTP
      hosts:
      - "*.something.local"


      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
      name: sh
      spec:
      hosts:
      - "*"
      gateways:
      - sh-gateway
      http:
      - match:
      - uri:
      prefix: /index
      route:
      - destination:
      host: index.sh-blue.svc.cluster.local
      port:
      number: 8080
      weight: 50
      - destination:
      host: index.sh-green.svc.cluster.local
      port:
      number: 8080
      weight: 50
      - match:
      - uri:
      prefix: /config
      route:
      - destination:
      host: config.sh-blue.svc.cluster.local
      port:
      number: 8080
      weight: 50
      - destination:
      host: config.sh-green.svc.cluster.local
      port:
      number: 8080
      weight: 50









      share|improve this question













      I have two namespaces hosting different versions of my services, namespace sh-blue hosts one version of each service and sh-green hosts new version of each service. With each new deploy all services are updated to new version. I want to implement canary deployment from current version to new version.



      The code below is what I currently have and it's working fine, except it's not obvious what kind of load balancing it is using. When I check ingress-gateway logs it's something like: blue, green, green, blue, green, green, green, red, green, blue, blue, blue, green, green, ...



      Is it possible to control the load balancing? And is there a better way to setup this?



      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
      name: sh-gateway
      spec:
      selector:
      istio: ingressgateway
      servers:
      - port:
      number: 80
      name: http
      protocol: HTTP
      hosts:
      - "*.something.local"


      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
      name: sh
      spec:
      hosts:
      - "*"
      gateways:
      - sh-gateway
      http:
      - match:
      - uri:
      prefix: /index
      route:
      - destination:
      host: index.sh-blue.svc.cluster.local
      port:
      number: 8080
      weight: 50
      - destination:
      host: index.sh-green.svc.cluster.local
      port:
      number: 8080
      weight: 50
      - match:
      - uri:
      prefix: /config
      route:
      - destination:
      host: config.sh-blue.svc.cluster.local
      port:
      number: 8080
      weight: 50
      - destination:
      host: config.sh-green.svc.cluster.local
      port:
      number: 8080
      weight: 50






      kubernetes istio






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 11 hours ago









      Rok

      184210




      184210
























          1 Answer
          1






          active

          oldest

          votes


















          0














          You can specify load balancing configuration within Istio DestinationRule traffic management resource . It requires trafficPolicy to be included for the mesh service in order to control load balancing policy.



          apiVersion: networking.istio.io/v1alpha3
          kind: DestinationRule
          metadata:
          name: bookinfo-ratings-port
          spec:
          host: ratings.prod.svc.cluster.local
          trafficPolicy: # Apply to all ports
          portLevelSettings:
          - port:
          number: 80
          loadBalancer:
          simple: LEAST_CONN
          - port:
          number: 9080
          loadBalancer:
          simple: ROUND_ROBIN


          For more information I do suggest to visit Istio Load Balancer settings overview.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53942670%2fistio-load-balancing-to-multiple-namespaces%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            You can specify load balancing configuration within Istio DestinationRule traffic management resource . It requires trafficPolicy to be included for the mesh service in order to control load balancing policy.



            apiVersion: networking.istio.io/v1alpha3
            kind: DestinationRule
            metadata:
            name: bookinfo-ratings-port
            spec:
            host: ratings.prod.svc.cluster.local
            trafficPolicy: # Apply to all ports
            portLevelSettings:
            - port:
            number: 80
            loadBalancer:
            simple: LEAST_CONN
            - port:
            number: 9080
            loadBalancer:
            simple: ROUND_ROBIN


            For more information I do suggest to visit Istio Load Balancer settings overview.






            share|improve this answer


























              0














              You can specify load balancing configuration within Istio DestinationRule traffic management resource . It requires trafficPolicy to be included for the mesh service in order to control load balancing policy.



              apiVersion: networking.istio.io/v1alpha3
              kind: DestinationRule
              metadata:
              name: bookinfo-ratings-port
              spec:
              host: ratings.prod.svc.cluster.local
              trafficPolicy: # Apply to all ports
              portLevelSettings:
              - port:
              number: 80
              loadBalancer:
              simple: LEAST_CONN
              - port:
              number: 9080
              loadBalancer:
              simple: ROUND_ROBIN


              For more information I do suggest to visit Istio Load Balancer settings overview.






              share|improve this answer
























                0












                0








                0






                You can specify load balancing configuration within Istio DestinationRule traffic management resource . It requires trafficPolicy to be included for the mesh service in order to control load balancing policy.



                apiVersion: networking.istio.io/v1alpha3
                kind: DestinationRule
                metadata:
                name: bookinfo-ratings-port
                spec:
                host: ratings.prod.svc.cluster.local
                trafficPolicy: # Apply to all ports
                portLevelSettings:
                - port:
                number: 80
                loadBalancer:
                simple: LEAST_CONN
                - port:
                number: 9080
                loadBalancer:
                simple: ROUND_ROBIN


                For more information I do suggest to visit Istio Load Balancer settings overview.






                share|improve this answer












                You can specify load balancing configuration within Istio DestinationRule traffic management resource . It requires trafficPolicy to be included for the mesh service in order to control load balancing policy.



                apiVersion: networking.istio.io/v1alpha3
                kind: DestinationRule
                metadata:
                name: bookinfo-ratings-port
                spec:
                host: ratings.prod.svc.cluster.local
                trafficPolicy: # Apply to all ports
                portLevelSettings:
                - port:
                number: 80
                loadBalancer:
                simple: LEAST_CONN
                - port:
                number: 9080
                loadBalancer:
                simple: ROUND_ROBIN


                For more information I do suggest to visit Istio Load Balancer settings overview.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 5 hours ago









                mk_sta

                740128




                740128






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53942670%2fistio-load-balancing-to-multiple-namespaces%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Monofisismo

                    Angular Downloading a file using contenturl with Basic Authentication

                    Olmecas