오픈 소스/Kiali

[Kiali] Kiali User Interface 수정

benjykim 2019. 6. 28. 00:02
반응형

Kiali UI 수정

기존에 설치한 것들

  1. Kubernetes

    • version: v.1.15.0
  2. 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
  3. Go lang

    • version: 1.12.6
  4. 구성

    • Master-node: 1대
    • Slave-node: 2대
    • istio 문서의 Bookinfo 예제를 올려놓음.

수정한 내용

  • kialikiali-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 images

      kiali/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-nodedev 태그를 가진 키알리 이미지를 올린다고 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