후니의 IT인프라 사전

istio 설치 및 구성 본문

Tools/Istio

istio 설치 및 구성

james_janghun 2022. 8. 18. 23:34

1. 설치

  - 공식문서 : https://istio.io/latest/docs/setup/getting-started/

 

Getting Started

Try Istio’s features quickly and easily.

istio.io

 

아래의 명령어로 설치한다.

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