DevOps BootCamp/쿠버네티스 12

ArgoCD와 Kustomize를 이용해 kubernetes에 배포

Kustomize + ArgoCD Kustomize Kustomize는 kustomization 파일을 통해 쿠버네티스 오브젝트를 사용자가 원하는 대로 변경하는(customize) 독립형 도구이다. 애플리케이션의 새 버전의 이미지가 배포가 되면 kubernetes 환경에서 새 버전의 이미지로 설정을 변경해서 적용을 시켜야 함. kustomize의 edit set image를 활용하면 이미지 태그만 변경해서 적용할 수 있음. kubernetes의 manifests 수정하는 여러 방법 중에 simple하게 kustomize를 선택. kustomize에 edit set image로 애플리케이션 image의 버전을 수정해서 저장소에 commit 하려고 함. base/kustomization.yaml apiVer..

젠킨스 CI

https://narup.tistory.com/228 [Docker] 도커 안에 젠킨스 설치 (도커 인 도커, Docker In Docker, D in D) 1. 개요 젠킨스와 같이 CI/CD 툴을 컨테이너에 설치하고 젠킨스에서 프로젝트를 생성하고, 프로젝트에서 컨테이너를 관리하는 환경을 구축하고 싶을 때 도커 인 도커라고 불리우는 방법을 사용해 narup.tistory.com 이후 ECR로 업로드 https://velog.io/@suhongkim98/jenkins-docker-build-%ED%9B%84-amazon-ECR%EB%A1%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%97%85%EB%A1%9C%EB%93%9C%ED%95%98%EA%B8%B0 [jenkins] docker b..

helm으로 패키징하기

helm 쿠버네티스 패키지 매니저 : 쿠버네티스 워크로드를 하나로 묶어서 패키지 형태로 만들고, 배포하고, 설치할 수 있는 도구 -> 하나의 애플리케이션 구성이 최소 하나 이상의 파드와 서비스로 구성되어 있음을 생각해 봤을 때, 별개의 워크로드를 하나하나 적용하기보다는, 한 번에 여러 개의 워크로드가 즉시 배포된다면 간편할 것이다 차트, 저장소, 릴리스 helm에서는 패키지를 차트라고 부름 helm에서는 패키지가 저장되어 있는 공간을 저장소라고 부름 차트를 설치하여, 쿠버네티스 클러스터에 구동될 때, 차트의 인스턴스를 릴리스라고 부름 Hands-on: helm으로 Jenkins 설치하기 : Jenkins는 대표적인 설치형 CI 도구 : Jenkins 공식 홈페이지에서도 도커에 이어 두 번째로 쿠버네티스 ..

인그레스

인그레스 > 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 게이트웨이 > 일반적으로 HTTP를 관리하며 로드 밸런서, SSL Termination (클러스터 내에서는 HTTP로만 통신하게 하는 전환 과정), 가상 호스팅을 제공 실습으로 인그레스를 만들고, 적용해 봅시다. 먼저 기존 서비스 타입을 LoadBalancer로 ClusterIP로 바꾸고 적용합니다. ClusterIP는 클러스터 내에서만 접근 가능합니다. 더 이상 EXTERNAL-IP는 사용할 수 없음 인그레스 리소스를 다음과 같이 만들고 적용 kubectl get all,ingresses 3. 인그레스는 인그레스 리소스(정책 그 자체) 외에도 인그레스 컨트롤러(정책을 실행시키는 도구)가 반드시 필요. minikube를 사용하는 경우,..

HealthCheck

[C183] 애플리케이션에 HTTP 500과 같은 에러가 발생한 경우, 컨테이너를 다시 실행해야 할 것입니다. HTTP 에러가 발생했다는 것을 어떻게 알 수 있을까요? 어떻게 해야 쿠버네티스가 에러가 발생한 컨테이너를 자동으로 재시작하게 만들 수 있을까요? (힌트: liveness probe 키워드를 검색하세요) 프로브(Probe)는 컨테이너에서 kubelet에 의해 주기적으로 수행되는 진단(diagnostic)이다. 진단을 수행하기 위해서, kubelet은 컨테이너에 의해서 구현된 핸들러를 호출한다. 핸들러에는 다음과 같이 세 가지 타입이 있다. ExecAction : 컨테이너 내에서 지정된 명령어를 실행한다. 명령어 상태 코드 0으로 종료되면 진단이 성공한 것으로 간주한다. TCPSocketActio..

볼륨과 스테이트풀셋

파드 : Stateless : 파드는 일시적이며, 언제나 삭제될 수 있음을 감안해야 함 -> 파드 그 자체는 Stateless 헤야 함 : 파드의 교체와 배치를 담당하는 것이 디플로이먼트 -> 디플로이먼트는 레플리카셋을 통해 파드를 scale out 하며, 이때 만들어지는 파드들은 상호 대체 가능 파드가 사라져도, 데이터를 남기고 싶다면 : 파드 그 자체에 상태(데이터)를 남겨야만 하는 Stateful 애플리케이션 -> MySQL, mongoDB, redis와 같은 데이터베이스가 있음 : 데이터베이스 애플리케이션이 담긴 파드가 사라질 때, 데이터가 함께 사라지도록 두어서는 안 될 것 -> 쿠버네티스에도 영속적인(Persistence) 데이터(프로그램의 실행이 종료되어도 사라지지 않는 데이터)를 저장하기 ..

새 버전이 망가졌어요! 3.0에서 2.0으로 롤백하기

STEP 1: 파드 파드를 수동으로 만들어볼 것. 하지만 보통 파드는 하나하나 만들지 않으므로, "이렇게 만들 수도 있다"라는 것을 간단하게 배우고 넘어가는 정도의 의미를 갖습니다. sebcontents/cozserver:1.0 이미지를 바탕으로 파드를 만들어봅시다. cozserver-pod.yaml cozserver-pod.yaml 파일 적용 생성한 pods 확인 STEP 2: 디플로이먼트를 이용한 1.0 배포 앞서 개별 파드를 pod.yaml로 작성된 명세를 통해 생성했습니다. 그러나, 파드는 확장성을 바탕으로 가용성을 위해 언제든 대체될 수 있습니다. > 따라서 디플로이먼트로 CozServer를 구성하는 것이 바람직합니다. 1.0 이미지를 바탕으로 파드를 디플로이먼트를 생성해 봅시다. cozserv..

쿠버네티스-선언적 접근

파드 (Pods) > 쿠버네티스의 배포 가능한 가장 작은 컴퓨팅 유닛. 파드는 그 자체로 하나의 논리적인 호스트 파드를 생성하기 위해 파드를 정의할 때 다음과 같은 형태의 YAML 파일을 사용 예시) simple-pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 파드 적용하기 kubectl apply -f simple-pod.yaml 디플로이먼트 (Deployment) > 쿠버네티스에서의 Deployment는 파드의 교체/배치(placement)와 관련된 명세 파드의 진실 - 파드는 일시적이고, 언제나 삭제될 수 있..

쿠버네티스 service 타입의 비교

Q. 서비스의 타입은 ClusterIP, NodePort, LoadBalancer, ExternalName 네 가지가 있습니다. 이들은 어떻게 다른가요? Service 의 type 종류 ClusterIP : 클러스터 내부에서만 접근할 수 있는 IP를 할당 NodePort : 노드의 특정 포트를 사용하여 접근하는 방식, 포트당 하나의 서비스만 사용 가능 LoadBalancer : 노드포트 앞단에 특정 LoadBalancer를 사용하여 접근하는 방식 ExternalName : DNS이름에 대한 서비스를 매핑함 ClusterIP타입 클러스터 내부에서만 접근할 수 있으며, 외부에서는 접근할 수 없으로 port forwarding 또는 proxy를 통해 접근 또한 서비스 타입을 별도 type을 설정하지 않으면 C..

쿠버네티스와 컨테이너 오케스트레이션

쿠버네티스(Kubernetes, k8s)란 오픈소스로 만들어진 컨테이너 오케스트레이션 도구 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링하는 등의 관리 기능을 제공 각기 다른 환경(온프레미스 서버, VM, 클라우드)에 대응 가능 무엇을 오케스트레이션 한다는 것인가? orchestrate는 사전적 의미를 살펴보면 다음과 같음 to plan and organize something carefully and sometimes secretly in order to achieve a desired result Cambridge Dictionary -> 즉 컨테이너 오케스트레이션 도구는, 수십~수백 개의 컨테이너를 관리하고자 할 때 보다 더 잘 관리하기 위한 툴 이는 아키텍처의 트렌드가 모놀리식에서 마이크로서..