개발자의 기록장 블로그

만나서 반가워 !
이거 좋아해?

DevOps - CI/CD
·
원론/DevOps
정의CI/CD란 지속적으로 코드를 통합하고 연속적인 배포를 한다는 것으로 빠른 개발과 배포를 하기 위한 운영 기법이다.코드를 짜고, 빌드를 해서 테스트를 하고 배포하는 과정에서 기존에는 개발자들이 수동으로 작업을 해주어야했다.이런 일련의 흐름을 자동화하기 위한 움직임이 DevOps 관점에서 CI/Cd인 것!Git base CI/CD Pipeline Diagramcode commit은 github이고, code build는 깃 액션이다. 뭘 사용하든 상관없다.다만 K8S 배포 파일 ( 구축 레벨의 코드 )와 소스 코드의 레포지토리는 분리해서 관리하자. 개발팀이 코드를 깃저장소에 푸쉬하고, 깃 액션에서 이를 확인해 빌드한다. 빌드를 끝마치면 이미지 파일을 푸쉬함과 동시에 PR요청을 보내고, PR 리뷰팀이 이..
DevOps - K8S
·
원론/DevOps
Why Kubernetes?컨테이너는 가볍고, 빠르고, 휴대성이 좋다는 장점이 있다.이 장점 때문에 많은 수의 컨테이너로 서비스 규모를 키울 수 있고 스케일 아웃을 통해 다중 트래픽 분산 또한 수월하게 할 수 있다. 하지만 이러한 컨테이너 수의 증가는 결국 관리의 어려움을 가져오게 된다.개발자 관점에서는 다양한 이점을 가졌지만 운영자 관점에서는 다양한 문제가 존재하는 것!컨테이너가 외부 호스트 또는 외부 호스트의 컨테이너와 통신하려면 NAT를 거쳐야 함서비스 고가용성과 분산 자동화는 어떻게 할 것인가?자원의 여유가 있는 호스트를 찾고 그 호스트에 컨테이너를 적절하게 배포해야함컨테이너에 문제가 생기면 버리고 새로 생성해주어야 함트레픽의 양에 따라 컨테이너의 양을 자동으로 조절해주어야 함등등등 이런 문제점을..
DevOps - Container
·
원론/DevOps
Why container ?호스트 OS에 프로세스로 배포를 하면 하나의 프로세스의 죽음이 다른 프로세스의 죽음으로 이어질 수 있다.같은 자원을 격리없이 공유하고 사용하기 때문에. 이를 위해 가상화 머신이 등장했고 네임스페이스 등으로 자원을 격리해 어플리케이션을 분리시켰다.하지만 가상 머신에는 GuestOS가 설치돼야 했고, 이는 머신을 무겁게 해 가볍게 사용할 수 없었다.이를 리눅스의 프로세스 격리기술인 컨테이너를 통해서 해결했다.컨테이너 기술의 핵심은 HostOS의 커널을 컨테이너 프로세스로 자원을 분할해 주는 Container Runtime 이다.대표적으로 도커가 컨테이너 런타임이다.컨테이너 기본 구조장점인프라를 의식하지 않고 경량의 컨테이너를 빠르게 수정/삭제/생성/배포 할 수 있다.이미지 기반으로..
DevOps
·
원론/DevOps
DevOps란?백엔드 개발과 프론트 개발을 모두 한다고 데브옵스 개발자는 절대 아니다.나만의 정의DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있는 역량을 향상시키는 문화, 철학, 방식 및 도구를 아우르는 단어이다. 즉 Business Agility 를 확보하기 위함이며 이는 MSA 가 추구하는 지향점을 DevOps가 함께 바라보고 있다는 것이라고 생각한다.영역Product ( Tool / Service )버전 관리컨테이너자동화된 인프라 (Infrastructure as Code )CI/CDProcessAgilePeople / Organization개발 내재화독립적인 팀개발 팀과 운영 팀의 협력CNCF ( Cloud Native Computing Foundation )CNCF 는 DevOp..
Kubernetes v1.30 in Ubuntu 22.04 LTS
·
DevOps/Kubernetes
Kubernetes v1.30 in Ubuntu 22.04 LTS이전에 실습을 진행하던 환경은 kubernetes v1.23.x 버전이였다.당시에도 depreciated였던 버전을 사용한 이유는, v1.24 이후부터 Docker를 기본 CRI에서 제거했기 때문이다. Docker를 쓸 수 없다는 것이 아닌, Docker를 kubernetes의 Container Runtime Interface로 사용하기 위해서는, 수동 작업이 필요하다는 의미이다.Why Ubuntu?Kubernetes는 기본적으로 RHEL과 Debian Linux를 공식 배포 환경으로 채택하고 있다.A compatible Linux host. The Kubernetes project provides generic instructions fo..
쿠버네티스 클러스터 rejoin
·
DevOps/Kubernetes
비용적 이유 때문에 클러스터를 종료할 때 클러스터를 초기화시키거나, 데이터 플레인만을 종료해서 다시 클러스터에 join시키는 방법이 있다. 즉 컨트롤 플레인은 24/7 운영해야 한다.쿠버네티스 클러스터 토큰K8S 클러스터에 join하기 위한 토큰은 아래와 같은 형식이다.kubeadm join :6443 --token \ --discovery-token-ca-cert-hash sha256:token 다시 읽기kubeadm token listTOKEN TTL EXPIRES USAGES DESCRIPTION ..
EC2 쿠버네티스 클러스터 초기화
·
DevOps/Kubernetes
쿠버네티스 클러스터 초기화EC2 인스턴스를 비용 관리를 위해서 중지 할 일이 자주 있는데 클러스터를 초기화해서 다시 연결해야 하는 필요성이 생겼다.본 개시글은 kubeadm init 을 통해 구축한 클러스터에 한 해 작동한다.Control-Plane[root@ip-*********** ~] kubeadm reset#########[reset] Reading configuration from the cluster...[reset] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'W0620 15:22:07.272492 20394 preflight.go:56] [reset] WARN..
[온프레미스-K8S] Argo-CD를 사용한 GitOps 구축
·
DevOps/Kubernetes
GitOps & SSOT프로그램 소스, Kubernetes 리소스 그리고 심지어 인프라까지 코드로 구현될 수 있다. 여러 환경에 흩어져 있는 코드들을 Git을 사용해 한 곳에 보관하고, 현재 운영중인 상태 (Ops) 와 동일하게 맞추는 것이 깃옵스의 의미이다.운영 중의 서비스는 반드시 하나의 버전만을 바라보아야 하며, 이를 단일 진실 원칙 ( SSTO ) 라고 한다. 깃옵스에서 Git Repository가 시스템의 구성과 상태에 대한 단일 진실 원천의 역할을 한다.현재의 운영 상태를 개별 사용자가 임의로 명령어로 변경하거나, 커밋하지 않은 코드로 바꾸는 것을 허용하지 않고 오직 Git Repository의 내용을 운영 환경에 반영하는 것을 목표로 한다. 깃옵스로 시스템의 일관성이 유지돼 모든 시스템과 사..