Overview
Local 환경에서 개발 및 테스트를 진행할 때 많이 사용하는 Minikube에서 istio를 addons로 제공한다.
minikube 공식 문서를 살펴보면 minikube addons enable istio-provisioner
, minikube addons enable istio
명령어로 활성화 시키라는 설명밖에 없어서 addon을 파악하고 사용하기에는 가이드 라인이 부족하다.
이 문서에서는 istio control plane을 minikube의 addon으로 설치하는 방법에 대해 알아본다.
설치 방법 요약
minikube addons enable istio-provisioner --images="IstioOperator=istio/operator:1.18.1" # reference for supported istio version for kubernetes: https://istio.io/latest/docs/releases/supported-releases/
minikube addons enable istio
addons 살펴보기
Istio-provisioner
먼저 istio-provisioner부터 살펴보자.
Github source: istio-operator.yaml.tmpl
istio-operator를 배포하는 manifest 파일이 포함되어 있다.
정의된 리소스 종류는 아래와 같다.
- Namespace
- CustomResourceDefinition
- ServiceAccount
- ClusterRole
- ClusterRoleBinding
- Service
- Deployment
즉, istiod를 설치하기 전에 쿠버네티스가 kind: istioOperator를 인지할 수 있도록 하는 역할을 담당한다.
istio-provisioner addon을 활성화 시키면 istio-operator Pod을 포함해 여러 리소스들이 생성된다.
yaml 내용을 보면 docker.io/istio/operator:1.12.2
이미지를 사용했음을 알 수 있는데 IstioOperator의 기본 이미지가 1.12.2버전이기 때문이다.
여기서 주의할 점은 istio 버전과 kubernetes 버전의 호환성을 맞춰주어야 한다는 것이다.
istio와 kubernetes 버전 호환이 맞지 않으면 crashBackOff를 발생시키며 shutdown
아래 표는 istio와 kubernetes의 호환 버전을 보여준다.
현재 테스트로 진행하고 있는 쿠버네티스 버전은 아래와 같기 때문에 istio/operator
이미지 버전을 1.19로 맞춰주어야 한다.
아래 명령어를 이용해 addon을 활성화 시키면 기본 이미지가 아닌 지정한 이미지로 addon을 사용할 수 있다.
minikube addons enable istio-provisioner --images="IstioOperator=istio/operator:1.18.1"
활성화 시킨 후 minikube addons enable istio
로 istio control plane 리소스들을 간편하게 설치할 수 있다.
addons 활성화 시 image 또는 registry 변경 관련 내용은 아래 페이지를 참고
Istio
Github source: istio-default-profile.yaml.tmpl
istio-system
namespace를 생성한 후 IstioOperator
리소스를 생성한다.
이때 주의할 점은 기본 프로필이 default로 설정되어 있다는 것이다.
Profile 설정
profile은 istio control plane과 data plane 사이드카의 사용자 정의를 제공해준다.
istio가 제공하는 profile 종류는 다음과 같다.
- default
- demo
- minimal
- remote
- empty
- preview
- ambient
각 profile 별 자세한 설명은 아래 페이지에서 확인 가능
default 프로필로 addon을 활성화 시키면 아래처럼 istio-ingressgateway
와 istiod
가 설치되는 것을 확인 할 수 있다.
만약 default가 아닌 다른 프로필이 필요할 경우 다음 명령어를 이용하여 프로필 변경이 가능하다.
kubectl patch iop example-istiocontrolplane -n istio-system --type='json' -p='[{"op": "replace", "path": "/spec/profile", "value":"원하는 프로필 이름"}]'
istioOperator에 추가할 수 있는 다른 옵션들은 아래 페이지에서 확인 가능
addons 원리
어떻게 addons를 활성화 시키는 것만으로 설치가 가능한지 알아보자.
Istio Operator Install 공식 문서를 보면 istio operator로 설치하는 방법을 확인할 수 있다.
istioctl operator init 명령을 통해 CRDs와 deployment, service, role 등을 배포 하는데, 이 명령은 istio-provisioner addon과 같은 manifests를 패키징 한 것임을 알 수 있다.
Install istio with the operator 챕터를 보면 istio addon과 동일한 내용으로 프로필을 이용해 controle plane 배포를 하고 있다.
즉, Istio operator를 이용해 배포하는 방식을 addon으로 만들어 controle plane 설치가 가능하도록 만들었다는 것을 알 수 있다.
'Istio' 카테고리의 다른 글
istio deep dive: Sidecar Traffic Intercepting & Routing Process (0) | 2024.01.04 |
---|---|
Istio ingress gateway VS API Gateway (istio ver. 1.19) (0) | 2024.01.03 |
Traffic Management (1) | 2024.01.03 |
Canary deployment using Istio (1) | 2024.01.03 |
Envoy 기초 (0) | 2023.12.27 |