일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Pulumi
- Kopf
- Argo
- nginx ingress
- MLflow
- gitops
- xdp
- operator
- opensearch
- seldon core
- Continuous Deployment
- 오퍼레이터
- argocd
- serving
- keda
- Model Serving
- Kubeflow
- Kubernetes
- kubernetes operator
- CI/CD
- opentelemetry
- mlops
- Litmus
- knative
- Kubernetes 인증
- tekton
- blue/green
- eBPF
- CANARY
- 카오스 엔지니어링
- Today
- Total
Kubernetes 이야기
code-server로 개발하기 본문
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 출력을 해보자.
'Kubernetes > devops' 카테고리의 다른 글
Kubernetes의 Replica를 0으로 확장 (KEDA) (0) | 2022.04.27 |
---|---|
OWASP ZAP 을 Kubernetes 환경에서 사용하기 (0) | 2022.04.02 |
Kubernetes에서 Gitea 사용하기 (0) | 2022.03.23 |
(docker) PMD 사용하기 (0) | 2022.03.22 |
Argo workflow 를 활용하여 CI/CD 구축하기 (기본설치) (0) | 2022.03.06 |