본문 바로가기
728x90

분류 전체보기54

Harbor Private Registry 소개 및 설치 Harbor는 CNCF를 졸업한 프로젝트로, 대표적인 사설 레지스트리 (Private Registry) 오픈소스이다. Private Registry 보통 hub.docker.com에서 제공하거나 오픈소스 프로젝트에서 제공하는 컨테이너 이미지는 인터넷이 되는 모든 곳에서 풀을 받아 사용이 가능하다. 이러한 컨테이너 이미지를 제공해주는 레지스트리를 Public Registry라고 한다. 하지만, 회사와 같이 프로젝트가 오픈되지 않아야 하는 환경에서는 회사 환경 내부에서만 접근이 가능해야 하고, 큰 회사의 경우에는 특정 부서에서만 특정 이미지를 푸쉬하거나 풀 할 수 있도록 권한을 제어해야 한다. 이렇게 특정 환경에서만 접근이 가능해야 하는 레지스트리를 Private Registry라고 한다. Harbor Ha.. 2023. 10. 9.
Helm Chart Repository 만들기 (1) - Github 지금까지는 차트를 로컬에서 만들어보고 로컬에 있는 차트를 가지고 배포를 하는 방식을 알아보았다. 그런데 보통 개발자 로컬에서 차트를 개발하지만 실제로 차트를 사용하여 배포하는 곳은 애플리케이션 서버가 될 것이다. 그리고 도커 이미지처럼 개발자 본인 뿐 아니라 여러 개발자들끼리 함께 공유해서 사용할 수 있어야 한다. 그렇다면 개발한 차트는 어떻게 공유할 수 있을까? 가장 간단한 방법으로는 차트를 구성하는 디렉터리 자체를 압축하여 여러 개발자끼리 공유하는 방법이 될 수 있겠지만, 이러한 방식은 너무 번거롭다. 다행히 helm 도구는 도커와 비슷하게 차트 레포지토리라는 개념을 두어서 외부에 저장된 차트를 받아 배포하는 기능을 제공해주고 있다. Chart Repository Helm 공식 홈페이지에서는 Char.. 2023. 10. 9.
Helm Chart 유효성 검증과 문서화 이전 글에서는 Spring boot 애플리케이션을 배포하는 Helm chart를 직접 만들어보았다. 실제로 values.yaml에 특정 값을 잘 넣어서 배포를 해보면 문제는 없어보인다. 하지만 만약 값을 잘못 넣는다면 어떻게 될까? 예를 들어 아래와 같이 probes 부분을 파드의 readinessProbe, livenessProbe 문법에 맞지 않게 값을 넣어버린다면 어떻게 될까? app: name: todo-api replicas: 1 image: beer1/todo-server-kotlin:0.1.0 port: 9000 probes: readiness: a: 1 liveness: b: 2 $ helm install test ./spring-app -f ./spring-app/ci/test.yaml .. 2023. 10. 3.
Helm Chart 만들어보기 이번에는 실제로 마이크로서비스들을 배포하기 위한 helm chart를 직접 만들어보도록 하자. Chart를 만들기 전에, 실제로 어떤 목적으로 패키징할지 고민해봐야 한다. 이번 실습에서는 한국에서 자주 사용하는 Spring Boot 기반 애플리케이션을 배포하기 위한 helm chart를 만들어보자. 실습에 대한 파일들은 Github에 올려두었습니다. https://github.com/beer-one/charts GitHub - beer-one/charts Contribute to beer-one/charts development by creating an account on GitHub. github.com 차트 이름 결정하기 먼저 차트 이름을 결정해야 한다. 일단 차트를 만들 디렉터리를 하나 생성하고,.. 2023. 9. 25.
Spring Cloud Kubernetes [1] 소개 및 PropertySource Spring Cloud 프로젝트에서는 클라우드 기반 분산 시스템에서 필요로하는 일반적은 패턴들을 빠르게 구축할 수 있도록 도구를 제공해준다. 대표적으로는 다음의 기능을 제공한다. (언급된 것 외에도 여러가지 기능을 제공한다.) 구성파일 관리 : Spring Cloud Config 서비스 디스커버리: Spring Cloud Zookeeper 써킷 브레이커: Spring Cloud Circuit Breaker 지능형 라우팅: Spring Cloud Gateway 마이크로서비스 애플리케이션이 클라우드 네이티브하게 구성되려면 12 Factor 를 지켜줘야 하는데, 여기서 환경별로 달라질 애플리케이션의 구성파일을 Spring Cloud Config Server로 관리하며, 스케일 아웃이 자유로운 마이크로서비스 환.. 2023. 9. 23.
Helm Chart 소개 Helm 보통 쿠버네티스에서 리소스 관리는 yaml 파일로 저장하여 관리한다. 그리고 하나의 애플리케이션을 쿠버네티스 환경으로 배포할 때는 Deployment와 같은 워크로드를 생성하는 것이 전부가 아니다. 서비스 디스커버리와 로드밸런싱 기능을 제공하는 Service도 생성해야 하고, 애플리케이션 설정 정보를 담는 ConfigMap, Secret도 추가해야 하고, 애플리케이션 안에서 쿠버네티스 리소스를 참조해야 한다면 Role, RoleBinding, ServiceAccount 등 여러가지 쿠버네티스 리소스가 추가되어야 한다. 이와같이 보통 마이크로서비스를 배포할 때 각 마이크로서비스마다 비슷한 패턴으로 쿠버네티스 리소스를 추가하게 된다. 배포해야 할 마이크로서비스가 적다면 큰 문제는 없겠지만 많아진다면.. 2023. 9. 17.
ArgoCD 소개와 설치 ArgoCD는 쿠버네티스에서 구동되는 대표적인 GitOps 기반의 CD(Continuous delivery) 도구이다. (GitOps에 대한 설명은 아래 포스트에서 정리를 했는데 개념이 생소하다면 참고자료로 봐주시면 감사하겠습니다.) GitOps란 무엇인가? GitOps는 Weaveworks에서 처음으로 정의한 용어이며, Git을 활용하여 쿠버네티스 기반의 클라우드 네이티브 환경에서 소프트웨어 애플리케이션 배포하고 인프라를 관리하는 방식이다. GitOps의 관리 beer1.tistory.com ArgoCD의 기능은 GitOps의 핵심 원칙 중 승인된 변경사항은 자동으로 시스템에 반영을 제공한다고 보면 된다. ArgoCD는 특정 Git 레포지토리에 저장된 매니페스트 파일들을 주기적으로 확인한 후, 변경사항.. 2023. 9. 3.
GitOps란 무엇인가? GitOps는 Weaveworks에서 처음으로 정의한 용어이며, Git을 활용하여 쿠버네티스 기반의 클라우드 네이티브 환경에서 소프트웨어 애플리케이션 배포하고 인프라를 관리하는 방식이다. GitOps의 관리 방식과, 이점 및 실제로 어떤 방식으로 GitOps를 구성하는지에 대해 알아보자. GitOps는 애플리케이션 코드부터 시작해서 인프라, 네트워킹, CI/CD 파이프라인 등 전체적인 애플리케이션 생태계에 대한 구성들을 모두 Git에 저장하여 관리하는 방식이다. 애플리케이션 코드야 보통 Git으로 관리하지만, 인프라 환경과 네트워킹, CI/CD 파이프라인의 구성 등을 어떻게 Git으로 관리할까? 이런 구성들을 모두 Git으로 관리할 수 있는 이유는 쿠버네티스 때문이다. 쿠버네티스는 yaml 파일으로 작성.. 2023. 9. 3.
Encryption at Rest (쿠버네티스 데이터 암호화) 쿠버네티스에서 etcd에 저장되는 모든 API 리소스들은 암호화 기능을 지원한다. 기본적으로는 etcd로 저장될 때는 평문으로 저장되지만 특정 리소스에 대해서 암호화하여 저장하도록 설정할 수 있다. 암호화 하지 않았을 때는 다음과 같이 etcd에 평문으로 저장된다. # middleware 네임스페이스의 mysql 시크릿 조회 $ sudo ETCDCTL_API=3 etcdctl --endpoints=https://localhost:2379 \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ get /registry/sec.. 2023. 8. 27.
728x90