Kubernetes에 Istio Control Plane을 Helm template 으로 설치하는 방법


docker engine 18.06.2-ce, kubernetes 1.13.4, Istio 1.1.1, minikube v0.35.0 , macOS Mojave 10.14.4(18E226)

Kubernetes에 Istio Control Plane를 설치 하는 방법 중에서 Helm template을 활용하여 설치하는 방법을 수행해 봅니다.

공통 준비작업


  • 클러스터 준비 (minikube)
$ minikube delete
$ minikube start --cpus 4 --memory 8192
  • Helm 설치 및 초기화
$ brew install kubernetes-helm
$ helm init
  • Istio 다운로드 및 압축해제
$ wget https://github.com/istio/istio/releases/download/1.1.1/istio-1.1.1-osx.tar.gz
$ tar -vxzf istio-1.1.1-osx.tar.gz
$ cd istio-1.1.1
  • 네임스페이스 생성
$ kubectl create namespace istio-system
  • CRDs 등록
  • kubectl apply 에 사용할 Istio Custom Resource Definitions (CRDs) 을 등록해준다. 잠시후 Kubernetes APi Server 에 반영
$ helm template install/kubernetes/helm/istio-init --name istio-init --namespace istio-system | kubectl apply -f -
$ kubectl get crds | grep 'istio.io'

Case 별 구성 방법


#1. Default 구성

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl apply -f -

#2. 설치옵션이 저정된 Custom yaml을 지정하여 구성

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--values install/kubernetes/helm/istio/values-istio-minimal.yaml \
| kubectl apply -f -
  • [Profile(values yaml)별 설치 첨포넌트] (https://istio.io/docs/setup/kubernetes/additional-setup/config-profiles/) 참조

#3. 설치옵션을 직접 지정하여 구성

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
--set gateways.istio-ingressgateway.type=NodePort \
| kubectl apply -f -
  • 세부 설치옵션 참조

  • Istio의 ingressgateway는 기본적으로 LoadBalancer 로 설치된다. 이때 minikube에 설치 처럼 LoadBalancer 를 활용할 수 없는 환경에서는 LoadBalancer 대신 NodePort 를 사용하도록 합니다.

#4. Template을 이용한 구성

install/kubernetes/helm/istio/charts/gateways/templates/service.yamlgateways.istio-ingressgateway.type 옵션을 변경하여 override하여 적용하는 예제

$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system \
-x charts/gateways/templates/service.yaml \
--set gateways.istio-ingressgateway.type=NodePort \
| kubectl apply -f -

Uninstall


$ helm template install/kubernetes/helm/istio --name istio --namespace istio-system | kubectl delete -f -
$ kubectl delete namespace istio-system

posted at 2019/04/10 15:05