카타코더 - Deploying Canary Releases

1 개요[ | ]

카타코더 - Deploying Canary Releases
카타코더 - Connecting and Controlling Microservices with Istio
# 코스
카타코더 - Traffic Shaping Microservices Connections
카타코더 - Deploying Canary Releases

2 Deploy BookInfo[ | ]

Bookinfo-noistio.svg

master $ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
details-v1-7b5f4fc575-xxj4p      2/2       Running   0          1m
productpage-v1-c86d5ddf9-nltqm   2/2       Running   0          1m
ratings-v1-58d59948f5-nsrnk      2/2       Running   0          1m
reviews-v1-6d9787f845-j7qf4      2/2       Running   0          1m
reviews-v2-84b4476485-4wf8h      2/2       Running   0          1m
reviews-v3-55d6499f7c-7ztwp      2/2       Running   0          1m

3 Deploy V1[ | ]

master $ kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
virtualservice.networking.istio.io/productpage created
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created
virtualservice.networking.istio.io/details created

4 Access V2 Internally[ | ]

samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v1
master $ kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml
virtualservice.networking.istio.io/reviews configured
master $ kubectl get virtualservice
NAME          AGE
bookinfo      6m
details       4m
productpage   4m
ratings       4m
reviews       4m
master $ kubectl describe virtualservice reviews
Name:         reviews
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"networking.istio.io/v1alpha3","kind":"VirtualService","metadata":{"annotations":{},"name":"reviews","namespace":"default"},"spec":{"host...
API Version:  networking.istio.io/v1alpha3
Kind:         VirtualService
Metadata:
  Creation Timestamp:  2019-06-27T06:26:49Z
  Generation:          1
  Resource Version:    2377
  Self Link:           /apis/networking.istio.io/v1alpha3/namespaces/default/virtualservices/reviews
  UID:                 8bb98c44-98a4-11e9-be09-0242ac11000e
Spec:
  Hosts:
    reviews
  Http:
    Match:
      Headers:
        End - User:
          Exact:  jason
    Route:
      Destination:
        Host:    reviews
        Subset:  v2
    Route:
      Destination:
        Host:    reviews
        Subset:  v1
Events:          <none>

5 10% Public Traffic to V2[ | ]

samples/bookinfo/networking/virtual-service-reviews-90-10.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 90
    - destination:
        host: reviews
        subset: v2
      weight: 10
master $ kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-90-10.yaml
virtualservice.networking.istio.io/reviews configured

6 20%[ | ]

samples/bookinfo/networking/virtual-service-reviews-80-20.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1
      weight: 80
    - destination:
        host: reviews
        subset: v2
      weight: 20
master $ kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-80-20.yaml
virtualservice.networking.istio.io/reviews configured

7 Auto Scale[ | ]

master $ kubectl get deployment
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
details-v1       1         1         1            1           12m
productpage-v1   1         1         1            1           12m
ratings-v1       1         1         1            1           12m
reviews-v1       1         1         1            1           12m
reviews-v2       1         1         1            1           12m
reviews-v3       1         1         1            1           12m
master $ kubectl autoscale deployment reviews-v1 --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/reviews-v1 autoscaled
master $ kubectl autoscale deployment reviews-v2 --cpu-percent=50 --min=1 --max=10
horizontalpodautoscaler.autoscaling/reviews-v2 autoscaled
master $ kubectl get hpa
NAME          REFERENCE                TARGETS         MINPODS   MAXPODS   REPLICAS AGE
istio-pilot   Deployment/istio-pilot   <unknown>/55%   1         1         0 12m
reviews-v1    Deployment/reviews-v1    <unknown>/50%   1         10        0 8s
reviews-v2    Deployment/reviews-v2    <unknown>/50%   1         10        0 4s

8 All Traffic to V2[ | ]

samples/bookinfo/networking/virtual-service-reviews-v2.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
master $ kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-v2.yaml
virtualservice.networking.istio.io/reviews configured
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}