본문 바로가기

반응형

IT 인프라/DevOps

(9)
Kubernetes란 무엇인가? Kubernetes란? 2014년부터 대규모 컨테이너 운영 노하우를 가진 Google이 개발을 주도하고, 현재는 CNCF(Cloud Native Computing Foundation)에서 관리되고 있는 오픈소스 컨테이너 오케스트레이션 툴 Google, Microsoft, Red Hat, IBM 등에 소속된 다수의 엔지니어들이 개발에 참여하고 있으며, 컨테이너 오케스트레이션 툴 중에서 사실상 표준으로 여겨지고 있다. 비슷한 제품으로 HashiCorp의 Nomad, Docker에 내장된 Swarm, Apache 재단의 Mesos/Marathon이 존재한다. 또한 여러 클라우드 프로바이더(AWS, Azure, GCP 등)들은 Kubernetes를 Managed Service로 제공한다. 특징 서비스 디스커버리..
Kubernetes Secret으로 기밀정보 관리하기 Kubernetes Secret은 ConfigMap과 유사하게 어떠한 정보를 담고 있지만, 다음과 같은 차이점이 있다. : Secret은 API 키, ID/Password, 인증서 등 기밀 정보를 다룬다. 따라서 etcd 안에서 암호화된 상태로 관리된다 Manifest 파일 작성시 key의 value는 base64 인코딩한 값을 입력해야 한다. Secret 생성하기 인증서 같은 기밀 정보 파일을 Secret으로 생성 ### # Secret 생성 # - ConfigMap 처럼 --from-env-file, --from-literal 존재 ### $ kubectl create secret generic {Secret 이름} --from-file={key}={value} ### # 사용 예시 ### $ kub..
Kubernetes ConfigMap으로 설정정보 관리하기 ConfigMap Kubernetes는 설정정보나 환경변수와 같은 정보들을 Docker Image에 포함시키지 않고 별도로 분리하여 관리할 수 있는 방법을 제공한다. 이를 통해 Docker Image는 어플리케이션을 실행시키기 위한 기능만을 담당하고, 각 회사/환경마다 다르게 설정되는 정보들은 ConfigMap을 통해 관리할 수 있다. ConfigMap 생성 ConfigMap은 다음 3가지 방법 중에서 선택하여 생성할 수 있다. $ kubectl create configmap {ConfigMap 이름} --from-file={파일 또는 디렉토리 경로} (옵션) $ kubectl create configmap {ConfigMap 이름} --from-env-file={파일 또는 디렉토리 경로} (옵션) $ ..
Docker 이미지 용량을 줄이는 Tip FromLatest.io 사용하기 FromLatest에서 Dockerfile Lint를 하고, 이미지를 작게 할 수 있는 다양한 팁을 얻을 수 있다. https://www.fromlatest.io/#/ 더 작은 Base 이미지 사용하기 alpine 이미지를 사용하면 이미지 용량을 줄일 수 있다. DockerHub에서 이미지 태그에 alpine이 명시된 것들을 볼 수 있다. https://hub.docker.com/_/alpine/ Application De-Coupling 하기 하나의 컨테이너는 단 하나의 어플리케이션 / 용도로만 사용한다. (객체지향 원칙의 SRP와 같이) 한 이미지에 다수의 애플리케이션/컴포넌트가 들어있다면 이를 각각의 컨테이너로 나눈다. 이를 통해 이미지 사이즈 감소, 더 나은 확장..
나만의 Docker Compose Cheat Sheet Docker Compose 구성 파일 (docker-compose.yml) 일반적으로 어플리케이션은 여러 컴포넌트(웹 서버, 어플리케이션 서버, 캐시, DB 등)와 함께 구동된다. 또한 한 어플리케이션도 다수의 서비스로 분리하고, 이것들이 모여 하나의 어플리케이션으로 역할을 하기도 한다. 각각의 구성요소를 컨테이너로 만들어 개별로 운영하는 것은 매우 번거로울 것 이다. Docker Compose를 이용하면 여러 컨테이너를 일괄 관리하고, 설정하고, 의존성을 관리할 수 있다. Compose 정의 파일은 사용할 Docker Engine에 맞는 Compose File Format Version을 지정해야 한다. 호환되는 버전은 https://docs.docker.com/compose/compose-file/ ..
나만의 Dockerfile Cheat Sheet 명령어 키워드들은 대/소문자를 구분하지는 않지만, 관례적으로 대문자를 사용한다. 주석은 #을 사용한다. 기본 명령어 FROM Base Image를 지정한다. ### # 사용법 ### FROM [이미지명] FROM [이미지명]:[태그명] FROM [이미지명]@[다이제스트] ### # 사용 예시 ### FROM ubuntu:xenial RUN (이미지를 작성하기 위해 실행하는) 명령을 실행한다. ### # 사용법 ### RUN [실행하고 싶은 명령] ### # 사용 예시 : Shell 형식 # - /bin/sh -c를 사용하는 것과 동일 # - 기본 쉘을 변경하려면 SHELL 명령 사용 ### RUN apt-get install -y nginx ### # 사용 예시 : Exec 형식 # - 쉘을 경유하지 않..
나만의 Docker Cheat Sheet 초창기 Docker 명령어들은 docker --help 입력 시 그룹화 없이 쭉 나열해 보여줬다. 때문에 처음 봤을 때 보기 어려울 뿐만 아니라 내가 사용한 명령어임에도 불구하고 기억에 잘 남지 않았다. Docker 개발자들도 이를 인지했는지 Docker 1.13 버전부터 Management Commands라는 것을 발표했다. Docker Command가 제공하는 기능들을 conatiner, image, network, service, volume, system 등으로 Top-Level에서 분류하고, 각 하위 명령어가 관련 명령어들을 포함하는 기능이다. 기존 사용자를 위해 예정 명령어들도 그대로 유지하는 것 같다. 그러나 실제로 사용해보니 Management Commands를 사용한 지 얼마 안 되었음에..
일반 계정으로 docker 명령어 사용하기 콘솔에서 docker 명령어는 root 권한을 가진 사용자만 사용할 수 있습니다. 그래서 docker 명령어 실행시 항상 sudo를 붙여야 합니다. 만약 일반 계정으로 sudo를 붙이지 않고 docker 명령어를 실행하면 다음과 같은 메세지를 출력합니다. Cannot connect to the Docker daemon. Is the docker daemon running on this host? 그러나 docker 그룹을 생성한 후 일반 사용자를 포함하면 일반 계정도 sudo를 붙이지 않고 docker 명령어를 사용할 수 있습니다. $ sudo groupadd docker $ sudo usermod -aG docker ${USER} 또는 sudo gpasswd -a ${USER} docker

반응형