1. 배경 쿠버네티스는 클러스터에 대한 대부분의 정보를 저장하기 위해 ETCD를 사용합니다. 그렇기 때문에 클러스터를 안전하게 운영하기 위해서 ETCD의 백업은 필수 입니다. 이전에도 대규모 클러스터를 운영하면서, 원인 모를 클러스터 이상이 발생하였을 때도, ETCD백업이 구성되어 있어, 빠른 시간에 복구를 함으로서 이에 대한 중요함을 느낀 적이 있습니다. 이를 위하여 백업과 복구하는 방법에 대해 정리합니다. 테스트를 진행하는 환경은 Ubuntu 서버에 클러스터가 구성되어있는 멀티 마스터 구조입니다. 또한 ETCD는 파드로 설치되어 데몬으로 설치되어있을 때와 파일의 경로가 다를 수 있습니다. 2. ETCDCTL 설치 및 초기 설정 ETCD가 데몬으로 설치되어있을 경우 기본적으로 ETCDCTL은 같이 설치..
전체 글
쿠버네티스와 하이브리드 클라우드 기반 개발을 진행하고 있습니다. Mail: bini1050@naver.com1. 배경 해당 글은 서비스 메쉬에 대해 조사하며 Linkerd의 블로그를 읽고 서비스 메쉬에 대해 이해하기 좋은 거 같아 해당 글을 번역하고 추가로 조사하며 글을 작성하였습니다. 그렇기 때문에 Linkerd를 기준으로 서비스 메쉬를 설명합니다. 현재 많은 기업에서 서비스 메쉬를 도입하고 적용하려고 하지만, 이에 대한 많은 사례가 없어 어려움을 겪고 있습니다. 하지만 서비스 메쉬(Linkerd)의 전체 아키텍처를 크게 보면 간단합니다. 서비스 메쉬의 역할을 단순히 말하면 각 서비스에 사이드카 패턴을 사용해 프록시를 추가하여 서비스 간 통신 하도록 하고, 이러한 기능에 중점을 둡니다.(Proxy, Reverse Proxy의 역할) 이러한 영역을 Data Plane이라 하며, 데이터 플레인이 잘 동작하도록 ..
1. 배경 쿠버네티스 파드는 한 개 이상의 컨테이너로 이루어져 있습니다. 메인 컨테이너 기동 전에 초기 설정을 도와주는 init-container, 로그/메트릭 수집 등 보조 역할을 하는 사이드카 컨테이너 등 한 개의 파드에 여러 개의 컨테이너가 있습니다. 이러한 여러 컨테이너는 서로 localhost로 통신이 가능합니다. 도커로 컨테이너를 여러 개 생성할 경우에는 localhost로 통신이 불가한데, 파드 내부에서는 어떻게 이러한 동작이 가능한지 확인합니다. 2. Pod 생성 및 확인 한 개의 파드에 두개의 노드 서버 컨테이너를 다른 포트를 설정해 생성합니다. apiVersion: v1 kind: Pod metadata: name: multiple-web spec: containers: - image:..
1. 배경 쿠버네티스를 운영하다 보면 PV,PVC 등의 퍼시스턴트 볼륨을 관리하는 일이 필수적으로 발생합니다. 일반 hostPath, EmptyDir 등의 볼륨은 기본적으로 사용할 수 있지만, 볼륨의 한계는 명확합니다. 데이터의 지속성, 컨테이너 간의 데이터 공유, 백업의 한계 등, 하지만 퍼시스턴트 볼륨을 사용하게 되면 하나의 쿠버네티스 리소스로 관리되어 라이프사이클을 갖게 되며, 동적 프로비저닝, 외부 스토리지 사용 등의 볼륨의 한계를 넘어 사용할 수 있어 대부분의 운영 단계에서 권장되어 사용됩니다. 이러한 퍼시스턴트 볼륨을 관리하면서 외부 스토리지를 사용하여(예를 들어 Weka Storage,NFS,AWS EBS 등) Persistent Volume를 만들고 관리하기 위해서는 CSI Driver(c..
1. 배경 이전 글을 통해 Github action과 ArgoCD를 통해 Spring Cloud 기반의 MSA 애플리케이션의 CI/CD를 구축하였습니다. 하지만 해당 구조는 실제 환경에서 사용하게 부족한 부분이 많습니다. 개발계/운영계가 나누어져 있지 않다. Image의 버전 관리가 되어 있지 않다. 배포 방법에 대한 고려가 되어 있지 않다(Rolling,Blue/Green 등) 롤백 기능이 존재하지 않는다. 이러한 문제점을 해결하여 실제 프로젝트에 적용할 수 있도록 구조를 변경하며, 테스트한 내용을 기록합니다. 2. 환경 분리 우선 개발계/운영계는 각각 다른 쿠버네티스 클러스터입니다. 두 개의 클러스터를 한 개의 파이프 라인을 통해 관리하다 보니 다양한 변수를 고려해야 돼서 초기 구축에 공수가 많이 들..
API Gateway 배포 후 주소는 다음과 같은 형식으로 생성됩니다. [api-id].excute-api.[region].amazonaws.com/[stage] 해당 주소로 사용 시 기억하기 힘들어 custom domain을 설정해서 사용자에게 제공해야 됩니다. 1. Custom Domain 설정 커스텀 도메인을 생성하기 위해 APIGatewy console에서 Create domain name 탭에서 도메인을 입력합니다. 이후 ACM Certificate를 추가해야 되는데, 이미 ACM을 통해 생성한 인증서가 있을 경우 선택하고, 없으면 새롭게 인증서를 생성합니다. ACM 콘솔에서 Request Certificate를 통해 인증서를 생성하고, 위에서 입력한 전체 도메인을 입력합니다. 다만 인증 방법에..
최근 API Gateway와 Lambda를 이용하여 간단한 API를 만드는 테스트를 진행하며, API Gateway의 기본적인 사용 방법과 일반적으로 같이 사용하는 Lambda 통합 방법에 대해 정리하고자 합니다. 1. Lamda 함수 생성 사실 Lambda 함수를 생성하는 방법은 크게 어렵지 않습니다. Create Function 선택 후 원하는 언어를 선택하면 코드를 입력할 수 있는 화면이 나옵니다. 해당 화면에서 언어를 선택한 후 개발 코드를 작성하면 됩니다. 다만 제가 작성하고자 하는 함수는 API Gateway에서 전송받은 HTTP 헤더정보를 활용하여 로직을 작성 해야기 때문에 기본적으로 제공하는 함수 정의에서 사용되는 event 파라미터를 활용해야합니다. 예를 들어 다음과 같이 API Gate..
1. Aria AutomationOrchestrator Workflow Orchestrator의 기능인 Workflow/Action을 이용하면 Aria automation에서 관리되는 리소스를 조작하는 작업을 수행할 수 있습니다. 일종의 Function처럼 특정 기능을 정의하고, 리소스가 배포되기 전, 후 등 적절한 위치에 배치시켜 실행 시 킬 수 있습니다. 다음과 같이 설치 시 기본적으로 내장되어 있는 Workflow를 볼 수 있습니다. 하지만 모든 workflow가 바로 실행시킬 수 있는 것은 아니고, 실행되기 위한 플러그인이나, 패키지 설치 등이 필요할 수 있습니다. 저는 Workflow를 이용하여 가상머신에 설치 된 DB에 접근해, 쿼리를 동작시키기 위해 JDBC 태그로 저장되어 있는 Workfl..
1. 배경 쿠버네티스는 클러스터에 대한 대부분의 정보를 저장하기 위해 키-값 저장소인 ETCD를 사용합니다. ETCD에 문제가 발생하면 클러스터 전체에 장애가 발생할 수 있고, 데이터 유실에 따라 리소스가 변경될 수 있습니다. 그렇기 때문에 클러스터를 안전하게 운영하기 위해서 ETCD의 백업은 필수입니다. 이전에도 대규모 클러스터를 운영하면서, 원인이 파악되지 않는 클러스터 이상이 발생하였을 때도, ETCD백업이 구성되어 있어, 빠른 시간에 복구를 함으로써 이에 대한 중요함을 느낀 적이 있습니다. 이를 위하여 백업과 복구하는 방법에 대해 정리합니다. 테스트를 진행하는 환경은 Ubuntu 서버에 클러스터가 구성되어있는 멀티 마스터 구조입니다. 또한 ETCD는 파드로 설치되어 데몬으로 설치되어있는 환경과는 ..
1. 배경 쿠버네티스 배포 및 관리 기능을 구현하기 위하여, 어떤 플랫폼을 이용할지 조사하는 과정에 있습니다. 대표적으로 멀티 클라우드 기반에서 쿠버네티스를 관리하는 툴로는 Rancher, KubeSphere 등이 있지만, Vmware의 Aria automation을 통해 멀티 클라우드에서의 Iaas 리소스 (Virtual Machine, Volue, Network 등) 배포/관리가 가능하기 때문에, 이러한 기능을 바탕으로 쿠버네티스 까지 관리 가능하다면 큰 강점이 있는 플랫폼이라고 생각하였습니다. 이에 따라 Aria에서 쿠버네티스 관리 기능을 살펴보고 리뷰하고자 합니다. 검토를 진행하며 기능 위주의 요구사항 중 필수적인 최소 항목은 다음과 같습니다. 쿠버네티스 클러스터 정보(쿠버네티스 버전, Healt..