Kubernetes 이야기

code-server로 개발하기 본문

Kubernetes/devops

code-server로 개발하기

kmaster 2022. 3. 30. 23:29
반응형

Code-Server는 브라우저 통해 어디에서나 개발할 수 있는 환경을 제공할 수 있는 WEB-IDE 도구이다.

 

이 Code-server를 Kubernetes에 배포하여 테스트해 보자.

 

설치

설치는 아래와 같이 helm chart로 쉽게 설치가 가능하다.

(code-server에서 사용할 수 있는 values는 https://coder.com/docs/code-server/latest/helm 을 참고한다.)

# git clone https://github.com/coder/code-server
# cd code-server
# kubectl create ns code-server
# helm upgrade --install code-server ci/helm-chart --set persistence.enabled=true -n code-server

 

설치가 완료되었으면 아래와 같이 설치된 내역이 보인다.

# kubectl get all -n code-server
NAME                               READY   STATUS    RESTARTS   AGE
pod/code-server-7cb9f49b65-54dj4   1/1     Running   0          12s

NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
service/code-server   ClusterIP   10.96.64.215   <none>        8080/TCP   12s

NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/code-server   1/1     1            1           12s

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/code-server-7cb9f49b65   1         1         1       12s

 

plugin 설치

code-server helm chart에는 2가지의 Container 를 추가할 수 있는 방법을 제공한다. 첫번째는 docker-dind 처럼 code-server container에 연관된 container를 추가할 수 있는 "extraContainers"가 있다. 

또 다른 하나는 사전에 golang이나 python 같은 확장모듈을 사전에 설치할 수 있는 "extraInitContainers" 이다.

 

그럼 vs-code에 python을 개발할 수 있는 모듈을 사전에 추가하는 방법을 알아보자.

 

처음 git clone 받은 소스에서 helm-chart로 이동해 보자.

# cd ci/helm-chart
# ls
Chart.yaml  templates  values.yaml

 

values.yaml 맨 마지막 라인에 아래와 같이 추가한 후 helm chart를 다시  update 해 보자.

# vi values.yaml
...
extraInitContainers: |
  - name: customization
    image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
    imagePullPolicy: IfNotPresent
    env:
      - name: SERVICE_URL
        value: https://open-vsx.org/vscode/gallery
      - name: ITEM_URL
        value: https://open-vsx.org/vscode/item
    command:
      - sh
      - -c
      - |
        code-server --install-extension ms-python.python
    volumeMounts:
      - name: data
        mountPath: /home/coder

아래와 같이 helm chart를 upgrade해 보자.

# helm upgrade --install code-server .  -n code-server -f values.yaml

 

다시 생성 된 pod를 확인해 보면 아래와 같이 initContainer에 추가된 것을 볼 수 있다.

# kubectl edit pod -n code-server code-server-5f4d5c6b75-dvw7m
...
  initContainers:
  - command:
    - sh
    - -c
    - |
      code-server --install-extension ms-python.python
    env:
    - name: SERVICE_URL
      value: https://open-vsx.org/vscode/gallery
    - name: ITEM_URL
      value: https://open-vsx.org/vscode/item
    image: codercom/code-server:4.2.0
    imagePullPolicy: IfNotPresent
    name: customization
    resources: {}
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    volumeMounts:
    - mountPath: /home/coder
      name: data
    - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-hxtq9
      readOnly: true
...

 

서비스를 호출하면 아래와 같은 화면이 나타난다.

 

패스워드는 code-server라는 secret에 base64로 encoding되어 있다. 로그인 후 extenstions을 확인하면 아래와 같이 python 이 설치된 것을 볼 수 있다.

 

 

아래와 같이 간단한 python 출력을 해보자.

반응형
Comments