본문 바로가기

GitOps

(18)
[Kubernetes] 리소스 리소스기본 개념 및 리소스 종류들은 해당 글에서Manifest file클러스터에서 리소스를 정의하고 관리하는 데 사용되는 구성 파일주로 YAML로 작성됨파드, 서비스, 볼륨 등의 리소스 생성, 수정, 삭제 등의 방법 지시파일 구조apiVersion: API 버전 정보kind: 리소스 종류metadata: 리소스 메타데이터 (이름, 네임스페이스, 레이블 등)spec: 리소스 상세 정보 (컨테이너, 포트 등)pod manifest 예시apiVersion: v1kind: Podmetadata: name: nginx-pod labels: app: nginxspec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 M..
[Kubernetes] 클러스터 생성 ※ 세세한 설정을 생략하기 위해 GCP 환경에서 진행합니다.클러스터 생성 예제탐색 메뉴 - 쿠버네티스 엔진 - API 사용    탐색 메뉴 - 쿠버네티스 엔진 - 클러스터 - 만들기 - STANDARD 클러스터로 전환    위치 유형을 영역 us-central1-c로 지정하고 나머지는 기본값 유지 후 만들기   클러스터 생성 확인 완료 GCP CloudShell 환경 설정 예제우상단 터미널 아이콘 클릭 및 Project ID 복사클러스터 이름 및 위치 확인  # 현재 shell에 프로젝트 등록gcloud config set project # 현재 shell에 클러스터 등록gcloud container clusters get-credentials --region # 클러스터의 노드 확인 (3개 있어야 함..
[Kubernetes] 개념 배포 변화전통적인 배포: 애플리케이션을 물리 서버에서 실행. 고비용가상화된 배포: 단일 물리 서버가 VM으로 여러 개의 애플리케이션을 실행컨테이너 개발: VM과 유사하지만 확장성이 좋고 비용 절감, 속도 측면에서 유리함.쿠버네티스컨테이너화된 워크로드와 서비스를 관리하기 위한 플랫폼사람 대신 MSA의 수많은 컨테이너를 관리하는 플랫폼이미지 다운, 이미지 구동, 로드 밸런서 연결, 상태 유지 관리 등등의 일을 외주한다.YML파일인 Manifest를 명세해서 쿠버네티스에 전달하여 사용 가능쿠버네티스 아키텍처Cluster: Control Plane + Worker Nodes로 구성된 하나의 단위Control Plane(Master Node): 의사 결정. 정적인 개수가 정해져 있음Data Plane(Worker..
[Docker] 도커 네트워크 도커 네트워크기본 개념은 이 글에서docker network는 DNS resolution을 제공하여 컨테이너 이름(및  ID)을 자동으로 IP 주소로 변환함.관련 명령어docker network ls: 네트워크 목록 확인 (표준 설치된 3개의 기본 네트워크가 존재)docker network inspect : 네트워크 구성 세부 정보docker network create --driver : 사용자 지정 네트워크 생성브릿지 네트워크docker run에서 네트워크를 지정하지 않으면 기본적으로 docker0 bridge로 설정브릿지 드라이브로 생성된 모든 네트워크는 linux bridge라고 함네트워크 확인# network 확인docker network ls# linux bridge를 확인하기 위해 bridg..
[Docker] 웹사이트 배포 웹 사이트 배포 예제해당 프로젝트를 fork하여 사용하였습니다. # git으로 프로젝트 clone 및 경로 이동git initgit clone cd linux_tweet_app# 환경 변수로 도커 ID를 저장해서 간편하게 사용 (안해도 됨)export DOCKER_ID=# 프로젝트를 기반으로 이미지 빌드. 이미지 이름은 DockerID/애플리케이션 이름/버전이 관례인듯 함docker image build --tag $DOCKER_ID/linux_tweet_app:1.0 .# -d(--detach)로 생성된 이미지를 백그라운드에서 실행. # -p(--publish)로 외부 네트워크 8080포트에서 들어오는 입력을 내부 컨테이너 80포트로 포트포워딩docker run -d -p 8080:80 --name l..
[Docker] 이미지 이미지기본 개념은 이 글에서관련 명령어docker image tag : 이미지 이름 지정docker container commit : 컨테이너로부터 이미지 생성docker image pull : image를 regstry로부터 pulldocker image ls: 이미지 목록 확인기존 컨테이너로 이미지 생성 예제# 컨테이너 실행docker run -it ubuntu /bin/bash# ubuntu에 figlet 설치 (컨테이너 내부에서 실행하는 명령어)apt-get updateapt-get install -y figletexit# 컨테이너를 통해 이미지 생성docker container commit # 생성된 이미지 태그 지정docker image tag figlet Dockerfile이미지를 빌드하..
[Docker] 컨테이너 컨테이너기본 개념은 이 글에서컨테이너 실행docker engine이 이미지를 로컬에서 탐색있으면 실행하고, 없으면 docker registry 탐색기본 registry인 docker hub에서 동명의 이미지를 내려 받음컨테이너 실행관련 명령어docker container run : 이미지를 컨테이너화하고 명령어를 실행docker container start (or ): 특정 컨테이너를 시작함.docker container ls: 실행 중인 컨테이너 목록 확인docker ps: 위 명령어와 동일docker container ls -a: 실행됐던 모든 컨테이너 목록 확인docker container exec (or ) : 특정 컨테이너에 명령어를 실행참고docker container로 된 명령들은 cont..
[Docker] 개념 Docker의 등장 이유구성 요소 배포가 어려움동일 서비스를 여러 서버에 마이그레이션하는 경우서비스 간 상호작용이 많아 전부 설정해줘야 함. (front, back, db 등)동일 서비스에 대해 HW(운영체제)별로 설치 방식이 다를 수 있어 복잡함도커서비스와 HW 사이에서 규격화된 컨테이너를 제공규격화된 컨테이너로 모든 운영 체제에서 동일한 동작을 보장컨테이너에 모든 종속성이 포함됨동일 호스트의 다른 컨테이너끼리는 OS 커널을 공유하여 가벼움. (VM과의 차이)VM과의 차이동일한 OS 위에서 돌아가는가?VM은 하이퍼바이저 위에서 개별적인 OS를 갖는 머신들이 돌아가므로 무겁다.컨테이너는 하드웨어의 OS 위의 도커 엔진 위에서 돌아가므로 동일한 OS를 공유함. 그러므로 가볍고, 더 많은 가상화가 가능함.추..