후니의 IT인프라 사전
istio 설치 및 구성 본문
1. 설치
- 공식문서 : https://istio.io/latest/docs/setup/getting-started/
아래의 명령어로 설치한다.
curl -L https://istio.io/downloadIstio | sh -
특정 버전을 설치하려면 아래의 명령어를 입력한다.
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.14.3 TARGET_ARCH=x86_64 sh -
다운 받은 파일의 /bin 파일을 환경변수로 입력하여 항시 istioctl을 사용할 수 있도록 설정한다.
- 만약 export를 안쓸 경우 /usr/local/bin으로 환경변수 설정이 가능하다.
export PATH=$PWD/bin:$PATH
잘 설치가 되면 이처럼 istioctl을 확인할 수 있다.
root@master:~/istio-1.11.3# istioctl
Istio configuration command line utility for service operators to
debug and diagnose their Istio mesh.
Usage:
istioctl [command]
Available Commands:
admin Manage control plane (istiod) configuration
analyze Analyze Istio configuration and print validation messages
authz (authz is experimental. Use `istioctl experimental authz`)
bug-report Cluster information and log capture support tool.
completion generate the autocompletion script for the specified shell
dashboard Access to Istio web UIs
experimental Experimental commands that may be modified or deprecated
help Help about any command
install Applies an Istio manifest, installing or reconfiguring Istio on a cluster.
kube-inject Inject Istio sidecar into Kubernetes pod resources
manifest Commands related to Istio manifests
operator Commands related to Istio operator controller.
profile Commands related to Istio configuration profiles
proxy-config Retrieve information about proxy configuration from Envoy [kube only]
proxy-status Retrieves the synchronization status of each Envoy in the mesh [kube only]
tag Command group used to interact with revision tags
upgrade Upgrade Istio control plane in-place
validate Validate Istio policy and rules files
verify-install Verifies Istio Installation Status
version Prints out build version information
Flags:
--context string The name of the kubeconfig context to use
-h, --help help for istioctl
-i, --istioNamespace string Istio system namespace (default "istio-system")
-c, --kubeconfig string Kubernetes configuration file
-n, --namespace string Config namespace
--vklog Level number for the log level verbosity. Like -v flag. ex: --vklog=9
Additional help topics:
istioctl options Displays istioctl global options
Use "istioctl [command] --help" for more information about a command.
2. istio install을 활용한 profile 구성
istio에서는 profile이라는 개념이 존재하는데 아래 표는 그 profile에 따른 component 설치 구성 표이다.
demo에서는 3가지 component를 모두 설치하지만 default는 egressgateway가 빠졌다.
(https://istio.io/latest/docs/setup/additional-setup/config-profiles/)
- 현업에서는 egressgateway는 크게 중요하지 않기 때문에 default 설정만 해도 충분하다.
istioctl install을 통해서 프로필을 구성할 수 있다. 아무 입력이 없다면 default profile로 생성된다.
istioctl install
만약 config를 수정하려면 set flag를 활용할 수 있다.
istioctl install --set meshConfig.accessLogFile=/dev/stdout
만약 demo profile을 받고싶다면 아래와 같이 수정하면 된다.
istioctl install --set profile=demo
설치가 완료되면 다음과 같이 deploy를 통해서 component 설치여부를 확인할 수 있다.
demo profile은 3가지 컴포넌트를 모두 설치하도록 하기 때문이다.
kubectl -n istio-system get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
istio-egressgateway 1/1 1 1 25s
istio-ingressgateway 1/1 1 1 24s
istiod 1/1 1 1 20s
3. profile config 정보 확인하기
- 해당 프로필에 대한 dump 명령어를 입력하게 되면 자세한 config 정보를 조회할 수 있다.
istioctl profile dump demo
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
components:
base:
enabled: true
cni:
enabled: false
egressGateways:
- enabled: false
name: istio-egressgateway
ingressGateways:
- enabled: true
name: istio-ingressgateway
istiodRemote:
enabled: false
pilot:
enabled: true
hub: docker.io/istio
meshConfig:
defaultConfig:
proxyMetadata: {}
enablePrometheusMerge: true
profile: default
tag: 1.11.3
values:
4. profile과 차이점 정보 확인
- profile 기본 정보와 실제 구성정보의 다른 점을 확인시켜 준다.
istioctl profile diff default demo
이렇게 다른 부분은 + - 형식으로 확인이 가능하다.
resources:
limits:
cpu: 2000m
memory: 1024Mi
requests:
- cpu: 100m
- memory: 128Mi
+ cpu: 10m
+ memory: 40Mi
5. manifest 파일 만들기
istio install 명령어 만으로도 profile 생성이 가능하기 때문에, 별도로 yaml을 필요로 하는 경우 생성할 수 있다.
istioctl manifest generate > $HOME/generated-manifest.yaml
6. 여러 manifest 파일 비교하기
istioctl manifest generate > 1.yaml
istioctl manifest generate -f samples/operator/pilot-k8s.yaml > 2.yaml
istioctl manifest diff 1.yaml 2.yaml
명령어 결과 1.yaml보다 2.yaml이 cpu나 메모리 등의 측면에서 다른 점이 발견되었다.
root@master:~/istio-1.11.3# istioctl manifest diff 1.yaml 2.yaml
Differences in manifests are:
Object Deployment:istio-system:istiod has diffs:
spec:
template:
spec:
containers:
'[#0]':
resources:
requests:
cpu: 500m -> 1000m
memory: 2048Mi -> 4096Mi
Object HorizontalPodAutoscaler:istio-system:istiod has diffs:
spec:
maxReplicas: 5 -> 10
minReplicas: 1 -> 2