Kiali UI 수정
기존에 설치한 것들
Kubernetes
- version: v.1.15.0
Istio
version: 1.2.0
helm
으로 설치하였고 설치할 때 다음의 옵션을 주어 설치하였다.## istio-1.2.0/install/kubernetes/helm/istio/values.yaml grafana: enabled: true prometheus: enabled: true tracing: enabled: true kiali: enabled: false
Go lang
- version: 1.12.6
구성
- Master-node: 1대
- Slave-node: 2대
istio
문서의Bookinfo
예제를 올려놓음.
수정한 내용
kiali
와kiali-ui
는 따로 분리되어 있어서 이것을 로컬 환경에서 수정할 수 있도록 셋팅해야 한다.https://github.com/kiali/kiali에서
Running A Locally Built UI Inside the Core
부분을 참조한다./source/kiali/kiali/src/github.com/kiali/kiali
에서Makefile
파일을 수정한다. 다른 설정 값들을 잘 확인해야 한다.NAMESPACE
의 디폴트 값은istio-system
임을 확인하자.CONSOLE_VERISON ?= local
만일 Kiali 프로젝트의
GOPATH
가/source/kiali/kiali
이라면 Kiali UI를/source/kiali/kiali-ui
로 복사하자.CONSOLE_LOCAL_DIR
을 설정할 필요가 없다. (이미 Makefile에 작성되어 있다)
위의 과정을 거치고 바로
CONSOLE_VERSION=local make docker-build
를 실행하면 오류가 발생한다. 왜냐하면kiali-ui
에서 빌드를 하지 않았기 때문이다. (Makefile을 살펴보면 kiali-ui의build
를 참조하는 스크립트가 있다)/source/kiali/kiali-ui
로 가서 build를 하자./source/kiali/kiali-ui/src/page/Login/LoginPage.tsx
파일을 수정한다.
(나는 "Login in Kiali"를 "Login in MyKiali"로 변경했다)- https://github.com/kiali/kiali-ui를 참고하여 build를 진행한다.
npm
,yarn
등 필요로 하는 것들을 모두 설치하고 나서yarn build
를 통해kiali-ui
를 빌드한다.
(npm
,yarn
설치 시 많은 Warning이 발생했지만 문제 없이 진행됐다)
kiali-ui
빌드 과정을 진행한 뒤에$GOPATH/src/github.com/kiali/kiali
에서 다음의 명령어를 실행한다.
(Glide
는 이미 설치되었다고 가정한다)$ CONSOLE_VERSION=local make docker-build
위의 명령어를 실행하면 Kiali 컨테이너 이미지, Kiali Operator 이미지가 생성된다. 이 이미지들은
kiali-ui
의 변경사항들이 반영된 이미지들이다.다음은 아래의 명령어를 실행하여
kiali-operator
를 생성한다.$ cd $GOPATH/src/github.com/kiali/kiali/operator $ make operator-create
kubectl get pods -A -o wide
명령을 통해 제대로 생성됐는지 확인한다.kiali
파드를 생성하기 전에 나만의kiali_cr_jyk.yaml
파일을 만들어 이것을 적용하여 파드를 생성한다.## $GOPATH/src/github.com/kiali/kiali/operator/deploy/kiali/kiali_cr_jyk.yaml apiVersion: kiali.io/v1alpha1 kind: Kiali metadata: name: kiali annotations: ansible.operator-sdk/reconcile-period: "0s" spec: auth: strategy: "anonymous" deployment: image_version: "dev" namespace: "istio-system" service_type: "NodePort"
이렇게 하고 다음 명령어를 통해
kiali
파드를 생성한다.$ kubectl apply -n kiali-operator -f deploy/kiali/kiali_cr_jyk.yaml
여기까지 왔으면 거의 다 온 것이다. 위와 같이 진행한 뒤 포트 포워딩으로 UI를 확인하면 UI 변경사항이 반영되지 않았음을 알 수 있다. 화가 난다. 무엇이 문제인고?
$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=kiali -o jsonpath='{.items[0].metadata.name}') 20001:20001
kubectl get pods -A -o wide
명령을 통해 현재kiali
파드가 어느 노드에 위치하는지 확인해보자. 그리고 해당 노드로 가서docker images | grep kiali
명령어를 해보면 도커 이미지의 태그가 어떻게 나오는가?Master-node의 docker images
## Master-node quay.io/kiali/kiali-operator dev 8340d73396cb 2 hours ago 610MB kiali/kiali dev 9a20cde58caa 2 hours ago 353MB quay.io/kiali/kiali dev 9a20cde58caa 2 hours ago 353MB
kiali
파드가 올라간 Slave-node의 docker imageskiali/kiali v0.21.0 16a5be717921 12 days ago 346MB quay.io/kiali/kiali v0.20 6ec37872298d 5 weeks ago 344MB
차이를 알겠는가? 우선 도커 이미지의 tag가 다르다.
(master-node안의 도커 이미지 태그는dev
인 반면 slave-node안의 도커 이미지 태그를v.0.21.0
이다.)Master-node
는dev
태그를 가진 키알리 이미지를 올린다고operator/Makefile
에 명시해놓았다.KIALI_IMAGE_VERSION ?= dev
) 그런데 정작kiali
파드가 올라간Slave-node
에는dev
태그를 가진 도커 이미지가 없다. 그저v0.21.0
으로 명시되어 있을 뿐이다.다시 정리해보면,
Slave-node
에서kiali
파드를 올려야하는데dev
태그와 동일한 도커 이미지가 없어 기존에 있는 것을 올려버린다. 그러므로 UI는 변경되지 않는다.
변경된 UI로 빌드한 도커 이미지를 Slave-node에 옮기는 방법
따라서 우리는
Master-node
에서 빌드한 도커 이미지를Slave-node
에 전달해야 한다. 전달 방법은 아래와 같다.## Master-node $ docker save --output latestversion-1.0.0.tar kiali/kiali:dev $ scp latestversion-1.0.0.tar slaveuser@slave-node1:~ (scp 파일 계정@서버주소:목적경로)
scp
를 사용하여Slave-node
에 도커 이미지를 전송한다.Slave-node
는 아래와 같이 명령어를 입력하여 도커 이미지를 로드한다.
## Slave-node $ docker load -i latestversion-1.0.0.tar
docker images | grep kiali
를 실행하면Master-node
로 부터 전송된 도커 이미지가 있을 것이다. 이 이미지로 다시kiali
파드를 생성하면 변경된 UI를 확인할 수 있다.## 기존 kiali pod delete $ kubectl delete -n kiali-operator -f deploy/kiali/kiali_cr_jyk.yaml ## kiali pod 재생성 $ kubectl apply -n kiali-operator -f deploy/kiali/kiali_cr_jyk.yaml
안되는 경우
kiali-operator
를 다시 생성해서 진행해보자.
'오픈 소스 > Kiali' 카테고리의 다른 글
[Kiali] Kiali Image Update with Docker Hub (0) | 2019.07.01 |
---|