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를 사용하여 응용 프로그램이 게시됩니다. 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.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(IBM Cloud Container Service에서 Istio를 tokyo 리전에서 사용해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ssakaigawa/items/c3ec0fda237202914a83텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)