728x90 반응형 Dev.115 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. Terraform: nks resource NCP 와 k8s nks 는 애플리케이션 컨테이너화, 배포, 스케일링 그리고 관리를 자동화하는 오픈 소스 플랫폼이다. kubernetes 환경을 구축하고, 배포 및 관리 그리고 클러스터 자동 확장이 가능하다. # Resource: ncloud_nks_cluster https://registry.terraform.io/providers/NaverCloudPlatform/ncloud/latest/docs/resources/nks_cluster 기본적인 작업을 마치고 plan 하는 과정에서 계속 에러가 발생했는데, NCP 에서 k8s 기능을 사용하려면 우선 동의를 하고 시작해야한다. # error │ Error: Status: 403 Forbidden, Body: {"error":{"errorCode":403.. Dev./Terraform 2023. 9. 23. Kubernetes: ConfigMap Configmap Configmap 은 key - value 쌍으로 기밀이 아닌 데이터를 저장하는데 사용하는 API 오브젝트이다. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 ConfigMap 을 사용할 수 있다. k create configmap fortune-config --from-literal=sleep-interval=15 k get configmap k get configmap fortune-config -o yaml k get configmap fortune-config -o yaml > fortune-config.yaml # fortune-config.yaml : 부수적인 부분들 삭제 후 apiVersion: v1 data: sleep-interval: "15" kind.. Dev./Kubernetes & Helm 2023. 9. 18. Kubernetes: svc - pod 구조 이해 K8S: ingress - svc - pod 구조 이해 Mission: fortune pod 에 대해 서비스를 만들어서, 내부 클러스터 ip 로 호출 우선 서비스를 만든다. # nodeport 로 서비스 생성 fortune-nodeport.yaml apiVersion: v1 kind: Service metadata: name: fortune-nodeport spec: type: NodePort selector: app: fortune ports: # 기본적으로 그리고 편의상 `targetPort` 는 `port` 필드와 동일한 값으로 설정된다. - port: 80 targetPort: 80 k create -f fortune-nodeport.yaml kimminhyeok@Ivans-Mac 0905 % k.. Dev./Kubernetes & Helm 2023. 9. 17. Kubernetes: 서비스, 파드의 관리자 서비스 생성 서비스는 파드 집합에 대한 안정적인 접근을 가능하게 하는 추상화 계층이다. (실행중인 애플리케이션 → 서비스로 노출 feat. selector) 서비스는 동일한 기능을 수행하는 파드들에게 단일 IP 주소와 DNS 이름을 제공하며 로드 밸런싱과 트래픽 라우팅을 관리한다. 그렇기 때문에 클러스터 목표 상태(desired state)와 일치하도록 생성되고 삭제되는 과정에서 동적으로 관리해줄 수 있게 된다. 새로운 디렉토리에 rs yaml 파일 생성 # ㅣion-rs.yaml apiVersion: apps/v1 kind: ReplicaSet metadata: name: lion labels: app: lion spec: replicas: 3 selector: matchLabels: app: lion.. Dev./Kubernetes & Helm 2023. 9. 16. Kubernetes: 리소스 생성해보기 쿠버네티스는 공식문서 한글화가 굉장히 잘 되어 있는 듯 하다. Mission: replication controller / image: teacherssamko/simple-web:v1 / replicas: 3 https://kubernetes.io/ko/docs/concepts/workloads/controllers/replicationcontroller/ # code apiVersion: v1 kind: ReplicationController metadata: name: test spec: replicas: 3 selector: app: test template: metadata: name: test labels: app: test spec: containers: - name: test image: .. Dev./Kubernetes & Helm 2023. 9. 15. 이전 1 2 3 4 5 6 ··· 10 다음 728x90 반응형