Kubernetes

isto (Microservice opensource)

아르비스 2017. 7. 26. 05:37

isto 설치

microservcie 로 되어 있는 open source이다.

https://github.com/istio/istio

다음과 같은 components 로 구성되어 있다.

  • Envoy : microservice control
  • Mixer : Central component, ACL, rate limits, quotas, authentication
  • Pilot : 응답가능한 실시간 configuring Proxy
  • Galley : 응답가능한 , 분산된 isto configuration state.
  • Broker : opensource broker API

isto는 우선은  Kubernetes만 지원한다.. 나중에 확장 예정이라는데..

Multiple github repository를 가지고 있으며, 상세 주소는 위 isto url에서 확인 바람.

1. 사전 설치

다음 항목을 미리 설치해야  한다.

  • Go
  • Bazel
  • Docker
  • access Token (SSH)

1) go 설치

go homepage 방문

http://golang.org/dl

mac 용 (혹은 windows)버전을 받아서 설치함.

환경변수(~/.bash_profile)에 GOPATH를 export함

export GOPATH=/usr/local/go 

2) Bazel 설치

https://docs.bazel.build/versions/master/install.html 

2-1) JAVA JDK 8이상 설치

2-2) Homebrew가 설치되어 있어야 한다.

2-3) brew를 통해서 bazel 설치

brew install bazel 

3) Docker 설치

https://docs.docker.com/engine/installation/


4) Mixer fork

git clone https://github,com/${USER}/mixer.git

5) Build

go 관련 환경변수

export GOROOT=/usr/local/go

export GOPATH=$HOME/go

export GOBIN=$GOPATH/bin

export ISTIO=${GOPATH}/src/istio.io

export GITHUB_USER=${yourID}


export PATH=$PATH:$GOBIN 

go는 의외로 환경 변수 설정이 어렵다. 

go 설치 파일은 /usr/local/go  에 설치되고(자동 path 추가됨)

go 그외 추가 package는

/Users/{account}/go 에 설치되므로, 두가지 Path가 필요하다.

 - GOROOT 는 기본적으로 설치 폴더 (root permission)

 - GOPATH 는 추가 설치 패키지와 소스코드 ( user permission) 설치 경로

/usr/local/go 밑에 설치할 경우,  Permission 문제로 설치가 안되어 문제가 발생할 수 있다.

* 자주 쓰는 go명령어 도구 

$ go get golang.org/x/tools/cmd/... 

이 command를 통해서 추가되는 코드 

  • goimports: 자동으로 import 경로를 추론하여 소스 코드의 상단에 추가해주는 도구

    gofmt: 소스 코드의 Format을 맞춰주는 도구

    godoc: Go 프로그램의 문서를 볼 수 있는 도구

    Oracle: 소스 코드에 대해 여러가지를 알려주는 강력한 도구(보통 다른 툴과 연계해서 사용)

    Vet: 소스 코드 검사 도구

    Fix: deprecated된 API호출 등을 자동으로 고쳐주는 도구

    Test: 테스트를 수행하는 도구 

go 실행시 "executable file not found" 라는 문구가 보일 경우, 

$ gometalinter        // 부족한 file 찾기

$ gometalinter --install    // 자동 설치 

-----------------------

Istio 소스를 보다가 점점... 암흑의 장막이 조금씩 사라지는 듯...

그런데 아무리 오픈소스지만 이렇게 대놓고 써도 되나 싶다..

(지금까지 확인된 사항만 이니... 틀렸다고 뭐라하지 말기..~~!!)

1. Istio와 Envoy 연관성이 없다..

   - Envoy는 lyft(리프트)의 'L7 proxy and communication bus' 이다.

   - istio는 Envoy Proxy의 버전을 받아서 inbound와 Outbound의 proxy로 사용한다.

 

2. istio 는 Envoy의 Config data, Policy check, Certs 를 지원한다.

Architecture는 이렇게 생겼다.


이건 뭐하는 녀석이지??

실제 중요한건 Envoy가 다하는데?...