본문 바로가기
Tech/Containers

[K8S] ISTIO GCP GKE에 설치 하기

by 타이호 2018. 10. 16.

Istio는 MSA 기반아래 서비스를 연동하고 지원하는 플랫폼이다.



1. Prerequisites

아래 문서에 있는 것 처럼 Istio를 받고, GKE를 설치 한 다음 Helm Client를 설치 한다.

https://istio.io/docs/setup/kubernetes/helm-install/

  • GKE node는 최소 4개, n1-standard-1 (1 vCPU, 3.75 GB memory) 정도로 생성해야 한다.



2. Install Helm Client


3. Install Istio via Helm

  • helm template install/kubernetes/helm/istio --name istio --namespace istio-system > $HOME/istio.yaml

  • 위와 같이 수행하면 istio.yaml파일이 생성되고 kubernetes 환경 아래 배포를 할 수 있다. 바로 배포하면 에러가 발생하기 때문에 아래와 같이 clusterrolebinding을 생성한다.

$ kubectl create clusterrolebinding cluster-admin-binding \

--clusterrole=cluster-admin \

--user=$(gcloud config get-value core/account)

$ kubectl create namespace istio-system

$ kubectl apply -f $HOME/istio.yaml



4. 설치 완료

설치가 완료되면 아래와 같이 정상적으로 pod가 Running하고 있는 것을 볼 수 있다.



5. Trouble Shooting

Helm을 통해 설치 하면 아래와 같은 에러가 발생 한다. cluster를 생성한 뒤 아래의 rolebinding을 생성한다.

kubectl create clusterrolebinding cluster-admin-binding \

--clusterrole=cluster-admin \

--user=$(gcloud config get-value core/account)


Error from server (Forbidden): error when creating "/home/thkang0/istio.yaml": clusterroles.rbac.authorization.k8s.io "istio-cleanup-secrets-istio-system" is for

bidden: attempt to grant extra privileges: [PolicyRule{Resources:["secrets"], APIGroups:[""], Verbs:["list"]} PolicyRule{Resources:["secrets"], APIGroups:[""], V

erbs:["delete"]}] user=&{thkang0@gmail.com  [system:authenticated] map[user-assertion.cloud.google.com:[ADKE0IDKNfEqSmbTr6LNg334wEzQFQ2dYo0dNzkN0A8V7u/9OQg1iR2dH

ROuBuCDA+r0T93/fpmR+rPsxAZHsu6rEOYvlrKSVv4z26FxYnP8Qe/w1Zp5XRHWctALodDAp+DEsf4yrBd/ppPqOoNYWE4sZX9rW3oTlTzWyojH67VAEjG00rgxOiNWyXMjk5qrjYGeEUDdB0og8VAUNLjn5/9lNu

xS4CysnSvB]]} ownerrules=[PolicyRule{Resources:["selfsubjectaccessreviews" "selfsubjectrulesreviews"], APIGroups:["authorization.k8s.io"], Verbs:["create"]} Poli

cyRule{NonResourceURLs:["/api" "/api/*" "/apis" "/apis/*" "/healthz" "/swagger-2.0.0.pb-v1" "/swagger.json" "/swaggerapi" "/swaggerapi/*" "/version"], Verbs:["ge

t"]}] ruleResolutionErrors=[]









댓글0