728x90 반응형 Dev./Kubernetes & Helm18 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. 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. Kubernetes: nks 에서 서비스 띄우기 NCP k8s 클러스터 에서 서비스 띄우기 nodeport 로 서비스 생성해서 파드와 연결하기 # lion-svc-nodeport.yaml apiVersion: v1 kind: Service metadata: name: lion-svc-nodeport spec: type: NodePort selector: # app 으로 레이블을 달아서 서비스가 해당 레이블 정보를 가진 파드를 관리할 수 있게 한다. app: lion-app ports: # 기본적으로 그리고 편의상 `targetPort` 는 `port` 필드와 동일한 값으로 설정된다. - port: 80 targetPort: 8000 # 8000 포트를 80 으로 이어준다 k get all # result kimminhyeok@Ivans-Mac lion.. Dev./Kubernetes & Helm 2023. 9. 26. Kubernetes: nks IAM 인증 ncp k8s service IAM 인증 NCP 에서 제공하는 Kubernetes Service 를 통해 Kubernetes 환경을 효율적으로 제어하고 관리할 수 있다. 응용프로그램에서 사용하는 인프라 규모를 동적으로 제어하고 운영상황을 모니터링 하여 효율적으로 서비스를 관리할 수 있게 한다. k8s 환경 구축 k8s 배포 및 관리 클러스터 자동확장 서비스를 사용하기 위한 준비 VPC Private Subnet Load balance Subnet NAT Gateway 해당 클러스터에 접속하기 위해서는 IAM 인증을 거쳐야 한다. // ncp-iam-autheticator 설치 https://guide.ncloud-docs.com/docs/k8s-iam-auth-ncp-iam-authenticator //.. Dev./Kubernetes & Helm 2023. 9. 25. Kubernetes: run application via nks lion-app K8S lion-app 을 쿠바네티스로 구동시켜보자. 테스트로 사용하기 위해 기존에 사용하던 도커파일을 sqlite db 와 연결하게 끔 새롭게 만든다. App # test 를 진행하기위해 allowed host 에 와일드 카드 추가 ALLOWED_HOSTS = [ "localhost", "*", "127.0.0.1", # LOCAL_IP, ] FROM python:3.11-alpine LABEL likelion.web.backendauthor="Ivan kim " ARG APP_HOME=/app ENV PYTHONUNBUFFERED 1 ENV PYTHONDONTWRITEBYTECODE 1 WORKDIR ${APP_HOME} COPY ./requirements.txt ./ RUN pip .. Dev./Kubernetes & Helm 2023. 9. 24. 이전 1 2 다음 728x90 반응형