IBM Cloud Container Service에서 Istio를 tokyo 리전에서 사용해 보세요.
이 항목은 Kubernetes2 Advent Calendar 2017 20 일째 기사입니다.
(8 일 늦었습니다 ...)
처음 Istio
발표되었을 때부터 궁금했던 Istio.
OpenShift나 다른 k8s 제품도 모두 채용하기 시작해 드디어 무시할 수 없는 존재가 되어 왔습니다.
IBM도 Istio의 개발에 협동하고 있는 것 같습니다.
그렇다고는 해도 기다릴 수 없기 때문에 이번은 IBM Cloud의 k8s로 Istio를 사용해 보겠습니다.
IBM Cloud Container Service 사용하기
이번 튜토리얼에서는, Istio를 사용해 외부에 서비스 공개를 실시하기 위해,
k8s 클러스터의 라이트 플랜에서는 사용할 수 없습니다.
이번은 Pay-As-You-Go plan로, 최소의 2CPUs 4GB RAM(u2c.2x4) 19엔/시간의 1노드로 무서워 무서워 시험해 봅니다.
리전은 2017년 12월부터 서비스를 시작한 도쿄 리전을 사용합니다. (이것도 자신은 첫 도전입니다)
목적으로 이번에는 Istio를 넣어보고, 굉장히-라고 외치는 토코까지로 합니다.
사전 준비
이번 튜토리얼에서는, Istio를 사용해 외부에 서비스 공개를 실시하기 위해,
k8s 클러스터의 라이트 플랜에서는 사용할 수 없습니다.
이번은 Pay-As-You-Go plan로, 최소의 2CPUs 4GB RAM(u2c.2x4) 19엔/시간의 1노드로 무서워 무서워 시험해 봅니다.
리전은 2017년 12월부터 서비스를 시작한 도쿄 리전을 사용합니다. (이것도 자신은 첫 도전입니다)
목적으로 이번에는 Istio를 넣어보고, 굉장히-라고 외치는 토코까지로 합니다.
사전 준비
이번에는 클러스터 이름 "tokyo-istio"로 배포했습니다.
2CPUs 4GB RAM(u2c.2x4) 19엔/시간 노드수 1 k8s버전은 최신의 1.8.4_1502를 이용
실제로 해보자
도쿄 리전의 k8s에 접속하려면 2017년 12월 현재 한 궁리 필요합니다.
MahoTakara의 IBM Cloud k8s의 도쿄 지역 전환 방법
를 참고로 했습니다.
paid 클러스터를 배포할 때의 주의
IBM Cloud의 IaaS 부분에서 k8s를 가상 인스턴스에서 실행하려면 globalIP가 필요합니다.
Portable Public IP의 8IP 주소가 자동으로 지급되며 월 $16이 별도로 소요됩니다.
이 근처는 월말당이라면 일할수록 되는 것 같습니다.
로그인
$ bx login -a api.ng.bluemix.net
k8s 클러스터에 연결
$ bx cs init --host https://ap-north.containers.bluemix.net
Using user provided API endpoint: https://ap-north.containers.bluemix.net
OK
$ bx cs clusters
OK
Name ID State Created Workers Datacenter Version
tokyo-istio eba98d2f51834bcaac0*****4862d391 normal 9 hours ago 1 tok02 1.8.4_1502
$ bx cs cluster-config tokyo-istio
$ export KUBECONFIG=/Users/sakaigawa/.bluemix/plugins/container-service/clusters/tokyo-istio/kube-config-tok02-tokyo-istio.yml
istio 설치
istio 배포는 매우 간단합니다.
curl에서 실행 쉘은 git clone하므로 적절한 폴더를 만들고 그 안에서 실행합시다.
$ mkdir istio-ibmcloud
$ cd istio-ibmcloud/
$ ls
$ curl -L https://git.io/getLatestIstio | sh -
$ export PATH=$PWD/istio-0.3.0/bin:$PATH
$ cd istio-0.3.0/
$ ~/kubectl apply -f install/kubernetes/istio.yaml
완성 된 포드를 확인하십시오.
$ ~/kubectl get svc -n istio-system
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingress 172.21.13.199 161.202.106.115 80:31859/TCP,443:30568/TCP 25s
istio-mixer 172.21.241.240 <none> 9091/TCP,15004/TCP,9093/TCP,9094/TCP,9102/TCP,9125/UDP,42422/TCP 33s
istio-pilot 172.21.53.126 <none> 15003/TCP,443/TCP 26s
$ ~/kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-ca-555bbff478-d5hr4 1/1 Running 0 42s
istio-ingress-57b544fd9c-tjpgp 1/1 Running 0 43s
istio-mixer-6c67558b4c-jkph5 3/3 Running 0 51s
istio-pilot-5655764fbb-7nls2 2/2 Running 0 43s
네. 이것으로 끝납니다.
BookStore App 샘플 애플리케이션 배포
Istio 패키지에는 샘플 애플리케이션이 함께 제공됩니다.
Istio 패키지를 설치하는 데 사용한 방법은 다소 다르지만,
다음 명령으로 설치해 봅니다.
$ ~/kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)
$ ~/kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details 172.21.60.75 <none> 9080/TCP 11s
kubernetes 172.21.0.1 <none> 443/TCP 9h
productpage 172.21.184.247 <none> 9080/TCP 10s
ratings 172.21.128.12 <none> 9080/TCP 11s
reviews 172.21.58.62 <none> 9080/TCP 10s
$ ~/kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-5776b48b4d-q9l2g 2/2 Running 0 1m
productpage-v1-fd64558b8-tstqx 2/2 Running 0 1m
ratings-v1-5f8f9f5db4-cz2bm 2/2 Running 0 1m
reviews-v1-c96f558c6-8l82g 2/2 Running 0 1m
reviews-v2-b5d8745bd-4mgtw 2/2 Running 0 1m
reviews-v3-79d8ff97d8-nv6ts 2/2 Running 0 1m
Istio의 서비스 주소 받기
여기에서는 k8s Ingress의 주소를 얻어 외부 공개하고 있는 IP 주소를 찾습니다.
$ ~/kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
gateway * 161.xxx.106.115 80 2m
BookStore App 실행 결과
서비스 주소를 확인한 후 http://{gatewayのアドレス}/productpage
가 열리면 Istio를 사용하여 응용 프로그램이 게시됩니다. ta
Service Graph 소개
istio의 addon-yaml에서 제공하는 Service Graph를 도입해 보겠습니다.
이 응용 프로그램은 서비스를 호출하는 경로와 응답 시간 통계를 볼 수 있습니다.
실운용으로 여러가지 부하가 걸리면 더 재미있는 표시가 된다고 생각합니다.
Generating a Service Graph
$ ~/kubectl apply -f install/kubernetes/addons/servicegraph.yaml
deployment "servicegraph" created
service "servicegraph" created
$ ~/kubectl -n istio-system port-forward $(~/kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 &
Forwarding from 127.0.0.1:8088 -> 8088
Forwarding from [::1]:8088 -> 8088
servicegraph 실행 결과
요약
Istio를 Tokyo Region에 배포해 볼 수 있었습니다.
Istio의 에코시스템을 앞으로 공부하려고 하기 때문에, 사경적인 느낌이 되어 버렸습니다만,
blue green 배포나, zipkin, prometheus, grafana 주위를 우선은 사용해 보고 싶으므로, 앞으로도 공부해 가고 싶습니다.
Reference
이 문제에 관하여(IBM Cloud Container Service에서 Istio를 tokyo 리전에서 사용해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ssakaigawa/items/c3ec0fda237202914a83
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ bx login -a api.ng.bluemix.net
$ bx cs init --host https://ap-north.containers.bluemix.net
Using user provided API endpoint: https://ap-north.containers.bluemix.net
OK
$ bx cs clusters
OK
Name ID State Created Workers Datacenter Version
tokyo-istio eba98d2f51834bcaac0*****4862d391 normal 9 hours ago 1 tok02 1.8.4_1502
$ bx cs cluster-config tokyo-istio
$ export KUBECONFIG=/Users/sakaigawa/.bluemix/plugins/container-service/clusters/tokyo-istio/kube-config-tok02-tokyo-istio.yml
$ mkdir istio-ibmcloud
$ cd istio-ibmcloud/
$ ls
$ curl -L https://git.io/getLatestIstio | sh -
$ export PATH=$PWD/istio-0.3.0/bin:$PATH
$ cd istio-0.3.0/
$ ~/kubectl apply -f install/kubernetes/istio.yaml
$ ~/kubectl get svc -n istio-system
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingress 172.21.13.199 161.202.106.115 80:31859/TCP,443:30568/TCP 25s
istio-mixer 172.21.241.240 <none> 9091/TCP,15004/TCP,9093/TCP,9094/TCP,9102/TCP,9125/UDP,42422/TCP 33s
istio-pilot 172.21.53.126 <none> 15003/TCP,443/TCP 26s
$ ~/kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-ca-555bbff478-d5hr4 1/1 Running 0 42s
istio-ingress-57b544fd9c-tjpgp 1/1 Running 0 43s
istio-mixer-6c67558b4c-jkph5 3/3 Running 0 51s
istio-pilot-5655764fbb-7nls2 2/2 Running 0 43s
Istio 패키지에는 샘플 애플리케이션이 함께 제공됩니다.
Istio 패키지를 설치하는 데 사용한 방법은 다소 다르지만,
다음 명령으로 설치해 봅니다.
$ ~/kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/kube/bookinfo.yaml)
$ ~/kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details 172.21.60.75 <none> 9080/TCP 11s
kubernetes 172.21.0.1 <none> 443/TCP 9h
productpage 172.21.184.247 <none> 9080/TCP 10s
ratings 172.21.128.12 <none> 9080/TCP 11s
reviews 172.21.58.62 <none> 9080/TCP 10s
$ ~/kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-5776b48b4d-q9l2g 2/2 Running 0 1m
productpage-v1-fd64558b8-tstqx 2/2 Running 0 1m
ratings-v1-5f8f9f5db4-cz2bm 2/2 Running 0 1m
reviews-v1-c96f558c6-8l82g 2/2 Running 0 1m
reviews-v2-b5d8745bd-4mgtw 2/2 Running 0 1m
reviews-v3-79d8ff97d8-nv6ts 2/2 Running 0 1m
Istio의 서비스 주소 받기
여기에서는 k8s Ingress의 주소를 얻어 외부 공개하고 있는 IP 주소를 찾습니다.
$ ~/kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
gateway * 161.xxx.106.115 80 2m
BookStore App 실행 결과
서비스 주소를 확인한 후
http://{gatewayのアドレス}/productpage
가 열리면 Istio를 사용하여 응용 프로그램이 게시됩니다. taService Graph 소개
istio의 addon-yaml에서 제공하는 Service Graph를 도입해 보겠습니다.
이 응용 프로그램은 서비스를 호출하는 경로와 응답 시간 통계를 볼 수 있습니다.
실운용으로 여러가지 부하가 걸리면 더 재미있는 표시가 된다고 생각합니다.
Generating a Service Graph
$ ~/kubectl apply -f install/kubernetes/addons/servicegraph.yaml
deployment "servicegraph" created
service "servicegraph" created
$ ~/kubectl -n istio-system port-forward $(~/kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 &
Forwarding from 127.0.0.1:8088 -> 8088
Forwarding from [::1]:8088 -> 8088
servicegraph 실행 결과
요약
Istio를 Tokyo Region에 배포해 볼 수 있었습니다.
Istio의 에코시스템을 앞으로 공부하려고 하기 때문에, 사경적인 느낌이 되어 버렸습니다만,
blue green 배포나, zipkin, prometheus, grafana 주위를 우선은 사용해 보고 싶으므로, 앞으로도 공부해 가고 싶습니다.
Reference
이 문제에 관하여(IBM Cloud Container Service에서 Istio를 tokyo 리전에서 사용해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ssakaigawa/items/c3ec0fda237202914a83
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(IBM Cloud Container Service에서 Istio를 tokyo 리전에서 사용해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ssakaigawa/items/c3ec0fda237202914a83텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)