DevOps

Github Actions를 통해서 ECS에 배포하는 간단한 CI/CD 파이프라인을 사용하고 있다. QA를 하는 과정에서 1시간에 여러 번의 PR이 머지되면서 여러 번의 Github Actions의 workflow가 실행됐는데, 매번 꽤 빌드 속도가 오래 걸렸다. 확인해 보니 dockerfile 빌드하는 과정에서 캐시가 제대로 안 걸려있었는데, 이번에는 Docker 빌드를 빠르게 할 수 있는 buildkit에 대해서 알아보려고 한다. 사실, 우리가 맥에서 도커 데스크탑을 다운로드해서, 직접 도커를 실행한다면 우리는 이미 buildkit을 쓰고 있는 셈이 된다. BuildKit은 기존의 도커 빌더를 대체하는 새로운 백엔드로, Docker Desktop과 Docker Engine 23.0 버전에서 기본 빌더..
· DevOps/AWS
회사에서 AWS 관련된 설정들을 확인하는 과정에서 가장 눈에 띄는 것은 Data Transfer 비용이었다. 단순하게 리소스를 확인할 수 있는 다른 호스팅 서비스와 다르게, Data Transfer는 AWS의 트래픽 과금 정책에 따라서 지불하는 금액을 말한다. 사실 클라우드라는 것은 어딘가에 있는 온프레미즈이다(!) 한국에는 총 네 개의 AWS 데이터 센터가 있다. 일산? 평촌? 자세한 위치 파악은 힘들었으나, 네 개의 온프레미즈 데이터 센터가 있다. 당연히 그 데이터 센터에서는 네트워크 작업이 철저하게 되어있어. 우리가 AWS 콘솔을 통해서 사용하려고 하면 손쉽게 리소스를 가져다 쓸 수 있도록 되어있다. 우리가 인터넷을 사용하게 되면, 대한민국의 통신사( KT, SKT, LG U+ )를 통해서 트래픽이..
예전에 BI 툴로써 Metabase를 사용한 적이 있었다. BI는 Business Intelligence로 비즈니스 데이터를 의미한다. 데이터베이스에 연결하여 DB의 내용을 토대로 통계를 낼 수 있도록 도와주는 툴이 메타베이스(Metabase)이다. 이러한 BI 툴로써 메타베이스 이외에도 Redash나 Superset 등 다양한 오픈 소스들이 있기 때문에, BI 툴의 도입을 고려하고 있다면 관련해서 다양한 것들을 살펴보는 것이 좋아보인다. 꽤 시간이 지난 레퍼런스지만, 다음과 같이 다양한 부분을 고려해서 도입하는 것이 좋아보인다.[vortechsa] 분석 툴 선택하기 : https://medium.com/vortechsa/choosing-an-analytics-tool-metabase-vs-superse..
최근에 주변 지인이 진행하는 프로젝트의 배포를 돕는 과정에서 Docker의 환경 변수를 주입하는 방법을 이것저것 설명해 주었다. 주된 내용은 빌드 타임의 환경 변수 주입과 런타임의 환경 변수 주입이 다르다는 이야기였는데, 결과적으로는 잘 해결이 되었으나 설명하면서도 살짝 애매한 부분이 있었다. 환경 변수라는 것을 넣어줄 수 있는 부분은 굉장히 많다. (1)Dockerfile에 정의해 줄 수도 있다. ENV나 ARG가 이에 해당한다. 그리고 (2). env 파일을 만들어서 dotenv를 사용해 애플리케이션에서 환경 변수를 끌어다 쓸 수 있게 해 줄 수 있다. 그리고 마지막으로는 (3) 바깥쪽의 오케스트레이션 툴(Kubernetes, docker-compose)도 환경 변수를 주입해 줄 수 있는데, 만약 ..
갑자기 동료 개발자에게 docker에 심각한 버그가 있다는 말을 들었다. 멀웨어 관련 이야기가 나오고 있길래, 우리 도커가 그럴 일이 없다고 생각했지만... 전 세계적인 어뷰징이 발생하고 있었다. 아래와 같은 팝업이 지속적으로 뜨며 개발자를 괴롭힌다. 악성 코드가 차단됨, 'com.docker.vmnetd'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 소프트웨어는 악성 코드를 포함하고 있을 수 있습니다. 이 소프트웨어는 다운로드된 후 수정되었을 수 있습니다. 이 소프트웨어를 실행하면 컴퓨터에 손상을 줄 수 있습니다.악성 코드가 차단됨  'com.docker.socket'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 소프트웨어는 악성 코드를 포함하고 있을 수 있습니다. 이 소프트웨어는 ..
CKA 시험을 보면서 기출 문제가 굉장히 중요하다는 것을 알게 되었다. 인터넷에서 살펴본 기출 문제들에서 다 고만고만하게 나오는 느낌이 있었고 살펴본 결과 약 1~2년 전부터 쓰인 블로그들을 통해서 기출 문제들을 분석했는데, 실제 시험과 비슷하게 나왔다. 나 또한 CKA 시험을 보고 난 후에 기출 문제를 정리함으로써 CKA를 준비하는 사람들에게 많은 도움이 되고자 내용을 정리했다. 본론CKA의 시험 환경은 생각보다 많이 친절하다. 아마도 killer.sh나 Kodekloud를 통해서 mock exam을 본 사람들이 많을텐데, 이에 비해서 엄청나게 친절하다. 키워드들(pod name, path) 등에 복사를 편리하게 해줄 수 있게 클릭으로 복사를 지원하거나, 관련된 문제의 레퍼런스를 직접 달아두어 바로 접..
예전에 선언형과 명령형에 대한 이야기를 한 적이 있다. Kustomize는 선언형으로 쿠버네티스 오브젝트를 사용자가 원하는 대로 변경할 수 있게 도와주는 도구이다. 쿠버네티스의 버전 1.14 이후로, kubetctl에서 kustomize 명령어를 지원하게 되었다. 가장 큰 특징은 overlay 구조로 기본이 되는 구조에 추가적인 오브젝트 설정들을 오버라이딩하여, 다양한 스테이지에 배포할 수 있다는 점이다. base 디렉토리에 기본이 되는 쿠버네티스 리소스를 정의하고, overley를 통해서 환경별(dev, prod, alpha 등) 차이점을 정의하여 여러 가지 환경에 맞게 사용할 수 있게 도와주는 역할을 한다. 이러한 Kustomize가 없다면, 직접 하나하나씩 kubectl apply -f 명령어를 통..
쿠버네티스의 다양한 리소스들에 대해서 다뤄보면 ETCD라는 중요한 요소에 대해서 알 수 있다. ETCD는 키-값으로 데이터를 저장하는 스토리지로 쿠버네티스에서 모든 상태 정보(메타데이터)를 영구적으로 저장하는 역할을 한다. 마스터 노드에 있는 kube-apiserver는 이 ETCD를 참고하여 클러스터 전체의 최신 상태를 일관성 있게 유지하는 역할을 한다.  간단하게 쿠버네티스의 마스터 노드의 컴포넌트에 대한 그림을 그려보면 위와 같다. 여기서 ETCD에 접근할 수 있는 쿠버네티스의 컴포넌트는 kube-apiserver 뿐으로써 etcd는 쿠버네티스 클러스터에 있어 심장과도 같은 중요한 존재이다. 쿠버네티스는 이런 심장과도 같은 etcd를 어떻게 오케스트레이션하는 것인가? 간단하게 스포일러를 하면 etc..
marsboy
'DevOps' 카테고리의 글 목록