DevOps
-
CKA 03: 쿠버네티스에서 환경변수 활용DevOps/Kubernetes 2020. 8. 15. 22:50
어떤 도커 컨테이너 이미지가 실행될 때 반드시 실행되는 명령어를 ENTRYPOINT와 CMD를 통해 지정한다. 그 실행될 명령어가 ENTRYPOINT 라면 여기에 기본값을 넣어주는 것이 CMD이다. 그래서 실제로 실행될 때는 ENTRYPOINT + CMD가 붙은 것이 함께 돌아가게 된다. 예를 들어 ENTRYPOINT ['sleep'] CMD ["5"]라고 하면, sleep 5가 기본으로 실행되는 것이다. docker run .... 10이라고 컨테이너 실행시 어떤 인풋을 같이 넣어주게 되면 sleep 10이 실행되는 형태다. K8S에서도 이런 비슷한 역할을 해주는 것이 있는데, command가 ENTRYPOINT 역할이고, args가 CMD 역할이다. 만약 컨테이너 이미지에 ENTRYPO..
-
OPA 와 OPA GatekeeperDevOps/DevSecOps 2020. 8. 7. 17:25
OPA? 모든 조직에는 '정책'이라는 것이 있습니다. 어떤 정책은 거버넌스, 법적 요구사항 때문에 반드시 지켜야 하는 것이라면, 어떤 정책은 아키텍처적인 베스트 프랙티스를 유지하고 조직의 운영 컨벤션(convention) 때문에 필요하기도 합니다. 이런 요건들을 수작업으로 관리하면 휴먼 에러도 발생할 수 있고 무엇보다도 굉장히 따분하고 짜증나는 일입니다. 때때로는 이런 정책을 지키는 것 때문에 어플리케이션 개발의 속도가 늦어진다든지 하는 일이 발생하기도 해서, 정책과 컴플라이언스를 유지하는 것이 소위 말하는 agility와 함께 가기 어려운 것으로 느껴졌습니다. OPA는 정책을 통합하여 적용/관리하도록 도와주는 오픈소스 프로젝트입니다. 컴플라이언스 정책을 선언적(declarative) 언어를 이용해 코드..
-
컨테이너 이미지 스캔 베스트 프랙티스DevOps/DevSecOps 2020. 7. 26. 22:46
이 글은 sysdig에서 작성한, _12 Container image scanning best practices to adopt in production _포스트를 번역했습니다. 번역 과정에서 sysdig 영업 성격의(...) 멘트들은 제하였으며, 이해를 돕기 위해 윤문과 문장 순서 변경 등의 작업을 거쳤습니다. 원본 포스트는 이 곳을 확인해주십시오. 아래 포스트에 포함된 모든 이미지는 sysdig 원본 블로그에서 가지고 왔음을 밝힙니다. Secure DevOps, DevSecOps는 보안과 모니터링을, 개발에서 프로덕션까지 이르는 어플리케이션 라이프사이클에 접목시킵니다. 이를 통해 개발 속도를 해하지 않으면서도 더 안전하고 안정적이고 성능이 더 좋은 어플리케이션을 만들 수 있는 것이죠. 이런 워크플로우..
-
CKA 02: Kubernetes ObjectsDevOps/Kubernetes 2020. 7. 25. 20:15
Pod 쿠버네티스에서는 컨테이너를 결국 배포해서 실행되게 하는 게 목적이지만, 컨테이너를 직접 노드에다가 실행하지 않는다. 대신 Pod라는 최소 단위로 encapsulate 해서 실행한다. 왜 이렇게 하냐고? 보통 하나의 Pod에 하나의 컨테이너가 들어가기는 하지만, 한 Pod에 여러 컨테이너가 들어갈 수도 있음. (예: logging 등을 전담하는 헬퍼 컨테이너) 하나의 파드에 여러 컨테이너가 들어가게 되면, 1) 네트워크 네임스페이스를 공유하기 때문에 localhost: 방식으로 컨테이너 간 통신이 가능함. 2) 스토리지 볼륨 공유 ReplicaSets Pod가 encapsulate 해주는 거는 좋은데, 결국 얘가 하나 죽으면 서비스가 불가한 상황이 된다. 그러니 여러 Pod를 유지하고 싶은데 죽을 ..
-
CKA 01: Kubernetes ArchitectureDevOps/Kubernetes 2020. 7. 25. 16:26
Cluster Architecture 쿠버네티스 클러스터는 컨트롤 플레인 컴포넌트와 '노드'라고 불리는 서버들의 집합이다. Master node: 전체 클러스터의 뇌 역할. 클러스터 내에서 발생하는 이벤트들을 감지하고 파드 스케줄링 등의 의사결정을 한다. Worker node: 컨테이너화 되어 있는 어플리케이션을 실행. Control Plane: Master Nodes kube-apiserver 쿠버네티스 컨트롤 플레인의 프론트엔드 역할. ETCD와 다이렉트로 통신하는 유일한 존재. 나머지 컴포넌트들은 apiserver를 경유하여 etcd와 상호작용. kubectl 명령어가 들어왔을 때? 사용자 인증 > 요청 검증 > 데이터 추출 > etcd 업데이트 > scheduler에 전달 > kub..
-
왜 Cloudwatch의 CPU 사용량과 top 결과가 다를까?DevOps/AWS 2020. 7. 13. 11:48
AWS 클라우드의 모니터링 서비스인 Cloudwatch에서 제공하는 CPU Utilization 의 소스는 무엇일까? AWS는 사용자의 자원에 접근해서 뭔가 볼 수 없다는데, 내 EC2에 들어가서 top 쳐보면 값이 다른 거 보니까 실제로도 그런 것 같은데. 나는 이 두 개의 다른 값 중에서 뭘 믿어야 하는 걸까? CPU와 vCPU에 대하여 이걸 이해하기 위해서는 우선 우리가 사용하는 EC2(가상 서버)가 사용하는 CPU 구조를 이해할 필요가 있다. 우리가 사용하는 가상 서버는, 가상화된 물리 서버의 자원을 가져다 쓴다. 그리고 가상 서버에는 vCPU가 할당된다고 말한다. 이 vCPU는 위 그림에서처럼, 물리 서버의 실제 프로세서 중에서도 core를 기반으로 주어지게 되는 것. 즉 core 당 x 개의 ..