Kubernetes

· Kubernetes
1. 배경 이전 글을 통해 Github action과 ArgoCD를 통해 Spring Cloud 기반의 MSA 애플리케이션의 CI/CD를 구축하였습니다. 하지만 해당 구조는 실제 환경에서 사용하게 부족한 부분이 많습니다. 개발계/운영계가 나누어져 있지 않다. Image의 버전 관리가 되어 있지 않다. 배포 방법에 대한 고려가 되어 있지 않다(Rolling,Blue/Green 등) 롤백 기능이 존재하지 않는다. 이러한 문제점을 해결하여 실제 프로젝트에 적용할 수 있도록 구조를 변경하며, 테스트한 내용을 기록합니다. 2. 환경 분리 우선 개발계/운영계는 각각 다른 쿠버네티스 클러스터입니다. 두 개의 클러스터를 한 개의 파이프 라인을 통해 관리하다 보니 다양한 변수를 고려해야 돼서 초기 구축에 공수가 많이 들..
· Kubernetes
1. 배경 쿠버네티스는 클러스터에 대한 대부분의 정보를 저장하기 위해 키-값 저장소인 ETCD를 사용합니다. ETCD에 문제가 발생하면 클러스터 전체에 장애가 발생할 수 있고, 데이터 유실에 따라 리소스가 변경될 수 있습니다. 그렇기 때문에 클러스터를 안전하게 운영하기 위해서 ETCD의 백업은 필수입니다. 이전에도 대규모 클러스터를 운영하면서, 원인이 파악되지 않는 클러스터 이상이 발생하였을 때도, ETCD백업이 구성되어 있어, 빠른 시간에 복구를 함으로써 이에 대한 중요함을 느낀 적이 있습니다. 이를 위하여 백업과 복구하는 방법에 대해 정리합니다. 테스트를 진행하는 환경은 Ubuntu 서버에 클러스터가 구성되어있는 멀티 마스터 구조입니다. 또한 ETCD는 파드로 설치되어 데몬으로 설치되어있는 환경과는 ..
· Spring Cloud
1. 배경 기존 진행하던 쿠버네티스 프로젝트가 마무리되고, 신규 프로젝트를 맡게 되면서 어떤 언어와 프레임워크를 이용해서 개발을 진행할지 고민을 했습니다. 본인은 Python을 가장 많이 쓰고 익숙하지만, 프로젝트가 완료 됐을 때 내부 회사에서만 사용하는 것이 아닌, 외부에 PaaS(K8S, 컨테이너) 형태로 배포할 수 있기 때문에, 코드를 볼 수 있는 인터프리터 언어라는 점 때문에 배제되었습니다. 그렇기 때문에 컴파일 언어를 사용해야 한다는 점과, 향후 MSA 구조를 도입할 예정이었기 때문에 이를 고려하여 언어 후보를 Golang과 Spring Cloud로 결정하였습니다. 본인은 Kubernets를 주로 해왔고, 계속 하고 싶은 맘이 있었기 때문에 이전부터 Golang에 대해 공부하고 싶은 마음이 있었..
· Kubernetes
1. 배경 쿠버네티스 클러스터 단위의 작업을 진행하기 위해 운영 중인 애플리케이션을 혹시 모를 이슈를 대비하기 위해서 백업을 필수로 진행합니다. 이러한 백업 툴로 가장 많이 사용하는 게 VMware에서 오픈소스로 개발한 Velero입니다. 실제로 운영 과정에서 업그레이드나 인증서 교체 등 클러스터 영역에서 작업할 때 사전에 백업을 진행하기도 하고, 운영 환경에서 발생한 애플리케이션의 에러를 디버깅하기 위하여 Velero를 통해 백업한 후 테스트 환경으로 동일한 이슈 환경을 만들어서 디버깅을 진행하기도 합니다. 이를 위하여 쿠버네티스에서 백업을 하는 방법을 테스트 한 내용을 기록합니다. Velero를 사용하기 위해서는 Snapshot을 저장하기 위하여 S3가 필요합니다. 테스트 환경에서는 AWS와 Mini..
· Kubernetes
이 전 글에서 EFK Stack을 구성하여 로그가 정상적으로 수집되는 것을 확인하였지만, 안정적인 운영을 위해 추가로 설정해야 될 작업이 필요합니다. 사실 이러한 부분이 로깅 스택 구축에서 큰 부분을 차지하고 Elastic이 다소 복잡하기 때문에 현재 시스템에 딱 맞는 설정을 한 번에 하기 힘듭니다. 로그를 원하는 형태로 변형하거나, 필터링하고 , ElasticSearch에서 적절한 정책을 설정하여 데이터 사이즈를 조정하는 등의 정책이 필요합니다. 이번 글에서는 container 로그뿐 아니라 추가로 필요한 로그에 대해 설정하는 과정을 기록하고 다음 글에서 elastic 정책적인 부분에 대해 기록하고자 합니다. 1. Log 정제 및 파싱 이전 글에서 구성한 방법은 Fleunt-bit에서 데이터를 전송하여..
· Kubernetes
1. 배경 쿠버네티스 클러스터를 운영하며 안정적인 관리를 위해 로그 시스템을 구축하기 위해 EFK Stack을 테스트 한 내용을 기록합니다. 멀티 클러스터 환경에서 발생하는 로그를 한 개의 키바나에서 볼 수 있도록 설치합니다. 기본 흐름은 다음과 같습니다. Fluent-bit는 Daemonset으로 생성되어 모든 서버에 생성되어 로그를 전송합니다. Fluentd는 로그를 수집해 적절히 파싱해 ElasticSearch로 보냅니다. ElastciSearch에서 수집한 로그를 Kibana에서 시각화합니다. Fluent-bit 없이 Fluentd만 설치하여 로그를 보낼 수 있지만 규모가 큰 클러스터에서 Fluentd의 작업량이 많아져 부하가 생기기 때문에 로그를 전송하는 역할만하는 Fluent-bit을 따로 설..
· Kubernetes
1. 배경 쿠버네티스 클러스터를 구성하면서 모니터링 시스템으로 주로 프로메테우스를 구축해서 사용하였습니다. 쿠버네티스 위에서 운영하는 서비스의 경우 안정적인 운영을 위해 HA를 구조로 운영하고 있습니다. 프로메테우스는 메트릭을 발생시키는 익스포터에서부터 Pull 해서 데이터를 가져오고, 수집한 메트릭을 TSDB 구조의 Local Disk에 저장하기 때문에(External DB도 사용은 가능) 프로메테우스가 다운되면 복구되는 시간 동안 메트릭이 누락되게 됩니다. 하지만 프로메테우스에서 이러한 HA 구성을 지원하지 않고 이를 타노스를 통해 구성할 수 있습니다. 또한 멀티 프로메테우스 서버를 통합하여 쿼리 할 수 있는 기능을 제공해서 여러 개의 쿠버네티스 클러스터를 운영하고 있는 상황에서 적합한 서비스라고 생..
· Kubernetes
1. Overviews Kubernetes에서 CI/CD를 테스트 한 내용을 기록합니다. 기존 작성한 Kubernetes CI/CD 글의 경우 Jenkins만 이용하였지만, 이번 테스트에서는 일반적으로 많이 사용하는 Jenkins-ArgoCD 조합을 사용하여 파이프라인을 구성하고 Docker build를 위해 Kaniko를 이용합니다. 또한 Github에서 webhook을 설정해 push가 발생하였을 때 trigger가 발생해 자동화가 되도록 설정하였습니다. 전체적인 플로우는 다음과 같습니다. 효율적인 관리를 위해 Source Repo 와 Manifest Repo를 나누어서 관리하였지만 일반적인 경우 charts, 나 mainfests 파일을 만들어 동일한 repository에서 사용하기도 합니다. Je..
· Kubernetes
멀티 클러스터와 많은 서버가 구축되어 있을수록 사용자 접근에 대한 관리가 더욱 어려워집니다. 이에 대하여 효율적인 관리를 위해 Access Management로 Teleport를 사용하기 위해 테스트한 내용을 기록합니다. Teleport는 안정적으로 Infrastructure에 접근하도록 관리해 주는 설루션입니다. Teleport를 이용하여 SSO 인증이나 Two factor 인증을 통해 SSH로 접속하기 위한 Node(서버), Kubernetes Cluster, Database, Web application 등을 관리하며 해당 리소스에 접근할 수 있습니다. 1.Teleport Component Teleport Auth Service: 클러스터 인증기관, 리소스에 접근하기 위해 클라이언트에게 인증서 발급..
· Kubernetes
__ 1. 배경__ 쿠버네티스가 컨테이너 오케스트레이션 도구로 각광을 받은 이유 중 AI 환경에서의 편의성이 높은 점도 있다고 생각합니다. ML Pipeline 환경을 쿠버네티스에서 운영했을 때 학습, 관리, 배포를 모두 운영할 수 있습니다. 이러한 각각의 오픈소스(Notebooks, Katilb 등)를 조합해 플랫폼화 한 것이 Kubeflow입니다. 하지만 Kubeflow는 아직 많은 사례가 없고 사용이 어렵다는 단점이 있습니다(일반적인 AI 엔지니어 입장에서). 또한 Job을 관리하는 기능이 없기 때문에 이번에 Kubernetes를 통해 Job을 생성하는 API를 만드는 작업을 진행하였습니다. 현재 글에서 작성하는 Job은 AI pipeline에서 Model Training 부분에 속합니다. 일반적으..
seokbin
'Kubernetes' 태그의 글 목록