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 방문
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가 다하는데?...