728x90 반응형 Kubernetes22 Kubernetes: 안전하게 업로드하기 by using Kubeseal Sealing helm-chart 로 만든 데이터를 argocd 에서 관리하려면 모든 정보가 담긴 파일들이 git 에 올라가 있어야 한다. 이때 민감한 정보를 어떻게 핸들링 해야하는지 고민이 많았는데, kubeseal 이라는 오픈소스를 사용해보면 어떨까 한다. Sealed Secrets 는 쿠버네티스에서 비밀 정보를 안전하기 관리하기 위한 도구라고 한다. 클러스터 내 컨트롤러와 클라이언트 측 유틸리티인 kubeseal 로 구성되며 kubeseal 이 SealedSecret 이라는 리소스를 생성하여 클러스터 내에서 일반 Secret 으로 사용된다. 스코핑 설정도 가능하고 argocd 와 함께 사용하여 helm chart 를 안전하게 배포할 수 있다고 한다. Installation brew install k.. Dev./Kubernetes & Helm 2023. 10. 14. ArgoCD: Deploy App Deploy app 연결된 원격 저장소에 있는 helm-chart 를 배포 시켜보자. 우선 파일경로의 위계를 지정하고 폴더 경로를 path 에 집어 넣어 배포구조를 만든다. 이 후 사용할 values.yaml 파일을 정한 뒤 배포 이 후 SYNC 로 창을 열어서 SYNCHRONIZE 하면 배포가 잘 된 것을 확인 할 수 있다. Deploy test 배포가 잘 되었는지 확인해보자. local 에서 코드 업데이트 이후 원격 저장소로 push 를 하게 되면 코드에 변동사항이 생겼으니 argoCD 에서 해당 정보를 싱크체크를 하고 다른 점이 있으면 sync status 를 out of 로 변경하게 된다. 다시 SYNC 로 창을 열어서 SYNCHRONIZE 하면 정상적인 상태로 돌아오는 것을 확인 할 수 있다. .. Dev./ArgoCD 2023. 10. 12. ArgoCD: Git repo referencing Argo CD guestbook 이라는 앱을 만들어서 배포를 동작시켜보기 개인 repo 를 가져올 때, github 주소를 가져와서 url 에 넣고 path 로 폴더 경로를 지정해주면 된다. 설정해야하는 부분 애플리케이션 이름 repo URL Path 클러스터 URL 네임 스페이스 replicas 등 등 APP details 로 가서 앱 관련 정보들을 쉽게 수정이 가능하다. replicas: 3 → 2 시각적으로 상태변경에 대해 확인이 가능하다. Private repo 만약, repo 가 public 이 아니라 private 으로 되어 있다면 인증과정을 거쳐야 하는데 인증 방식에는 여러가지가 있으므로 편한 방법을 택하면 된다. # refer to official doc https://argo-cd.rea.. Dev./ArgoCD 2023. 10. 11. ArgoCD: 설치해서 띄워보기 Kubernetest - Helm 으로 CD 구성하기 feat. ArgoCD ArgoCD 는 쿠버네티스 클러스터에 지속적인 배포를 가능하게 하는 도구이다. Git repo 를 레퍼런스로 사용하여 클러스터의 현재 상태와 저장소의 원하는 상태를 동기화한다. # examp apiVersion: argoproj.io/v1alpha1 kind: Application metadata: # app 이름 name: my-app namespace: argocd spec: project: default # git repo 에서 helm 차트가 있는 경로를 찾아서 소싱 source: repoURL: targetRevision: HEAD path: my-chart/ destination: server: namespace: m.. Dev./ArgoCD 2023. 10. 10. Helm: Apply Actual Application App 적용하기 sqlite 버전이 아닌 실제 버전으로 pg DB 와 연결하자 # values.yaml # tag 를 sqlite 이서 일반 버전으로 image: repository: likelion-cr-mh.kr.ncr.ntruss.com/lion-app tag: 0.2.0 pullPolicy: IfNotPresent imagePullSecrets: - name: regcred nameOverride: "" fullnameOverride: "" replicaCount: 1 service: type: LoadBalancer port: 80 targetPort: 8000 # pg 를 쓸 예정이기 때문에 db 용 서비스 value 정의 dbService: type: NodePort port: 5432 co.. Dev./Kubernetes & Helm 2023. 10. 9. Helm: Apply to simple code Apply to Simple code 이미지를 불러와 차트에 적용시켜보자. helm create simple-web # templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }} labels: {{- include "simple-web.labels" . | nindent 4 }} spec: minReadySeconds: 10 replicas: {{ .Values.replicas }} selector: matchLabels: {{- include "simple-web.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- incl.. Dev./Kubernetes & Helm 2023. 10. 6. Helm: 차트 작성 코드로 차트를 작성해 보면서 헬름 차트 작성법을 익혀보자. 내 코드로 작성해보기 values.yaml 파일과 templates 폴더 아래에 있는 모든 내용 삭제하고, 다시 환경별로 코드를 사용하기 위한 작업을 진행해 주자. # templates/configmap.yaml apiVersion: v1 kind: configMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: "Hello World" helm install tiger ./mychart # result kimminhyeok@Ivans-Mac k8s % helm install tiger ./mychart NAME: tiger LAST DEPLOYED: Wed Sep 13 13:36:5.. Dev./Kubernetes & Helm 2023. 10. 5. Helm: 쿠버네티스를 관리하는 툴 Helm 헬름은 복잡한 쿠버네티스 애플리케이션을 편리하게 정의하여 설치하거나 업그레이드 할 수있는 쿠버네티스 관리 툴이다. 홈페이지 MacOS 설치 brew install helm 시작하기 create >> 기본 틀인 차트를 생성 (리소스를 담는 그릇) helm create mychart 헬름은 차트를 구성하게 되는데, 쿠버네티스에서 필요했던 부분들을 차트형태로 표현해주기 때문이다. install >> chat 정보를 이용해서 release helm install mychart ./mychart # result kimminhyeok@Ivans-Mac k8s % helm install mychart ./mychart NAME: mychart LAST DEPLOYED: Wed Sep 13 13:09:24 2.. Dev./Kubernetes & Helm 2023. 10. 4. Kubernetes: 배포 환경 구분 짓기 배포 환경 구분 짓기 DevOps(데브옵스)의 핵심을 나타내는 문구가 “개발과 운영의 벽을 허물어 더 빨리 더 자주 배포하자” 라는 것에 동의한다. 이 개념을 바탕으로 개발 분야에서 DevSecOps, GitOps, AIOps 등의 개념으로 확장해 나아가고 있다. 개발과 운영을 빠르게 하는 부분 개발자가 신경써야하는 부분이 개발 환경이다. 실제 개발환경은 여러 환경들로 구분되어진게 일반적이다. 배포도 각 환경에 맞게 셋팅해서 배포되어야 한다. Staging 과 Production 환경 구분은 가장 기본적인 분리라고 볼 수 있는데, 분리된 환경으로 한번 배포를 구성해보자. 환경 구조로 구분 짓는 방법 my_kubernetes_project/ ├── app/ # 애플리케이션 코드 │ ├── src/ │ └─.. Dev./Kubernetes & Helm 2023. 10. 3. Kubernetes: Deployment, Rolling update Deployment 디플로이먼트는 파드와 레플리카셋에 대한 선언적 업데이트를 제공한다. # simple-deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: web labels: app: web spec: replicas: 3 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: web image: teacherssamko/simple-web:v1 ports: - containerPort: 8000 --- apiVersion: v1 kind: Service metadata: name: web-lb spec: type: LoadB.. Dev./Kubernetes & Helm 2023. 10. 1. Kubernetes: PersistentVolumeClaim DB: PersistentVolumeClaim 지금은 DB 볼륨을 emptyDir 로 만들었기 때문에 파드가 내려질 떄마다 모든 DB 정보가 사라지게 된다. DB와 연결해서 데이터를 저장헀는데 모든 데이터가 계속 초기화 되면 안되지 않을까? 그래서 PVC 형태로 DB 를 저장할 수 있게 셋팅값을 바꿔주고 연결해보자. # db-pod.yaml apiVersion: v1 kind: Pod metadata: name: lion-db labels: app: lion-db spec: imagePullSecrets: - name: regcred containers: - name: lion-db image: postgres:13 imagePullPolicy: Always # 기존의 이미지를 쓰지않고 항상 가져오게 끔.. Dev./Kubernetes & Helm 2023. 9. 27. Kubernetes: ReplicaSet 적용하기 레플리카 셋으로 pod 띄우기 레플리카 셋으로 3개의 파드를 만들어서 하나의 db 에 모든 파드들이 연결되어 있는지 확인해보자 # lion-rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: lion-app labels: app: lion-app spec: replicas: 3 selector: matchLabels: app: lion-app template: metadata: labels: app: lion-app spec: imagePullSecrets: - name: regcred containers: - name: lion-app image: likelion-cr-mh.kr.ncr.ntruss.com/lion-app:latest imageP.. Dev./Kubernetes & Helm 2023. 9. 26. 이전 1 2 다음 728x90 반응형