ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Istio] gateway 사용법
    인프라&운영체제/Istio 2022. 1. 29. 14:51

    istio-ingressgateway는 아래에서 설명할 gateway와는 다른 개념이다.

     

    istio-ingressgateway는 Cluster의 entry point가 된다.

     

    쿠버네티스에서 nginx ingress controller와 동일하게 ingress controller 역할을 수행한다.

     

    로드밸런서 역할을 수행하며 pod로서 동작한다.


    istio 공식 사이트에 설명이 잘 나와있긴 하지만, 일단 정리해둔다.

     

    istio에서는 gateway virtual service를 통해 트래픽을 컨트롤 한다.

     

    virtual service로 패턴에 맞춰 어느 호스트 또는 서비스로 라우팅할지, 트래픽 비중(weight)을 어느정도로 할지 룰을 지정하고, gateway는 단어처럼 어느 호스트의 요청, 포트 등을 처리할지 gateway 역할을 수행한다.

     

    virtual service는 자신이 사용할 gateway를 지정하여 사용한다.

    gateway는 특별한 케이스가 없다면 기본인 istio-ingressgateway를 사용하면 된다.

     

    아래는 gateway, virtual service를 예시.

    book-gateway.yaml
    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
      name: book-gateway
      namespace: book # 원하는 네임스페이스로 지정
    spec:
      selector:
        istio: ingressgateway # use istio default controller
      servers:
      - port:
          number: 80
          name: http
          protocol: HTTP
        hosts:
        - "book-store.zorba.com"
      - port:
          number: 443
          name: https
          protocol: HTTPS
        tls:
          mode: SIMPLE # enables HTTPS on this port
          credentialName: zorba-com-credential # fetches certs from Kubernetes secret
        hosts:
        - "book-store.zorba.com"
     
     

    해당 명령어로 gateway를 생성.

    $ kubectl apply -f book-gateway.yaml

     

    확인

    $ kubectl get gateway -n book

     

    gateway에 대해 더 많은 설정을 보고 싶다면, Click

     

    gateway tls 설정방법은 여기를 참고.


    아래는 virtual service 예시

    book-virtualservice.yaml
    apiVersion: networking.istio.io/v1alpha3
    kind: VirtualService
    metadata:
      name: book-virtualservice
      namespace: book # 원하는 네임스페이스로 지정
    spec:
      hosts:
      - "book-storm.zorba.com"
      gateways:
      - book/book-gateway # book 네임 스페이스 밑에 있는 book-gateway를 사용
      http:
        - match:
            - uri:
                prefix: /
          route:
            - destination:
                host: book-store-svc # 라우팅할 서비스
                port:
                  number: 80
     

    해당 명령어로 virtual service를 생성.

    $ kubectl apply -f book-virtualservice.yaml

     

    확인

    $ kubectl get vs(또는 virtualservice) -n book

    virtual service에 대해 더 많은 설정을 보고 싶다면, Click


    등록한 호스트를 istio-ingressgateway에서 사용하는 LB의 IP를 연결해주고 curl 요청을 날려보면 확인이 가능하다.

    $ curl -v book-store.zorba.com

     

    tls를 사용해서 요청방법

    $ curl -v book-store.zorba.com --cacert /etc/ssl/cert.pem "https://book-store.zorba.com"
Designed by Tistory.