목록전체 글 (231)
devops
ECR 레포지토리에서 Docker 토큰 인증할때, 아래와 같은 오류가 발생한다. Error saving credentials: error storing credentials - err: exit status 1, out: `status code not OK but 401: {"detail":"Incorrect authentication credentials"}` docker의 설정 json 파일을 삭제하고 다시 입력하면 된다. cd ~/.docker rm config.json 출처 https://stackoverflow.com/questions/64455468/error-when-logging-into-ecr-with-docker-login-error-saving-credentials-not
블루/그린 배포 어플리케이션과 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 동일한 새 버전으로 점진저긍로 이전하는 어플리케이션 릴리스 모델이다. 블루/그린 배포가 필요한 이유는 배포를 자동화할 때 겪는 어려움 중 하나인 Software를 최종 테스트 단계에서 실제 프로덕션 단계로 전환하는 컷오버다. 일반적으로 다운 타임을 최소화하려면 이 작업을 신속하게 수행해야 한다. * 컷오버(Cutover) : 기존에 운영되던 환경을 중단시키고 새 구축환경으로 오픈하는 것 * 다운타임(Downtime) : 시스템을 이용할 수 없는 시간 블루/그린 배포의 장점 동일하게 구성된 환경을 추가하여 서비스 가동 중단 시간을 최소화할 수 있다. 서비스되고 있는 환경(blue or green)에 문제 발생 시 ..
배포 자동화 배포 자동화는 한 번의 클릭, 명령어 입력을 통해서 전체 배포 과정을 자동화하는 것을 말한다. - 수동적이고 반복적인 과정을 자동화시켜 시간을 절약할 수 있다. - 휴먼 에러(Human Error)를 방지할 수 있다. 배포 자동화 파이프라인 소스 코드의 관리부터 실제 서비스로의 배포 과정을 연결하는 구조를 파이프라인이라고 한다. 파이프라인은 전체 배포 과정에서 여러 단계로 분리한다. 각 단계는 파이프라인 안에서 순차적으로 실행되며, 단계마다 주어진 작업을 수행한다. 1. Source 단계 : 원격 저장소에 관리되는 소스코드에 변경 사항이 일어나게 되면 이를 감지하여 다음 단계로 전달하는 작업을 한다. 2. Build 단계 : Source 단계에서 전달받은 코드를 컴파일, 빌드, 테스트하여 가..
CI / CD 지속적 통합(Continuous Integration) Code : 개발자가 코드를 코드 저장소에 Push한다. Build : 코드 저장소로부터 코드를 가져와서 유닛 테스트 후 빌드한다 Test : 코드 빌드의 결과물이 다른 컴포넌트와 잘 통합되는지 확인한다. 지속적 통합의 장점 버그를 일찍 발견할 수 있다. 테스트가 완료된 코드에 대해 빠른 전달이 가능하다. 지속적인 배포가 가능해진다. 지속적 전달(Continuous Delivery) Operate : 서비스에 생길 수 있는 현황을 파악하고 문제를 감지한다. Deploy : 프로비저닝을 진행하고 서비스를 사용자에게 노출한다. Release : 배포 가능한 소프트웨어 패키지(artifact)를 작성한다. 유용한 CI 도구 Jenkins 별..
컨테이너를 만드는 3 요소 Dockerfile - Copy files, Install dependencies, Set environment variables, Run setup scripts Image - Appication(Setting file) Snapshot (변경불가) Container Dockerfile 작성 예시 FROM node:16-alpine WORKDIR /app //WORKDIR는 리눅스에서 CD와 같은 역할, 디렉토리를 생성하거나 해당 디렉토리로 이동 COPY package.json package-lock.json ./ RUN npm ci // install을 한다면 최선버전이 설치되기 때문에 프로젝트 개발버전과 설치버전이 달라질 수 있음 그래서 ci를 사용 COPY index.j..
YAML 구조를 가진 데이터 표현 양식의 종류 중 하나다. 데이터는 다양한 형태로 표현될 수 있다. JSON과 XML도 같은 종류의 표현 양식이다. 이 양식을 활용하는 이유는 데이터를 주고 받을 때 쉽게 이해하기 위해서다. YAML은 최근 많이 사용하는 데이터 형식으로 사람이 읽고 이해하기 쉽다. DevOps에서 다양한 설정 파일들을 YAML 형식으로 많이들 사용한다. 파일 확장자는 .yml .yaml 을 사용한다. YAML의 문법 1) 데이터 정의 key: value 형태로 데이터를 정의한다. 이때 콜론 : 뒤에 키와 값을 구분하기 위해서 공백이 필요하다. 사용가능한 데이터 타입은 Number, String, Boolean이 있으며 문자열 String에 \n, @와 같은 특수문자가 포함된 경우엔 " "..
docker create ecs 후에 모든 context 명령어를 쳐도 'context requires credentials to be passed as environment variables' 에러가 나온다면 default로 전환하여 해결할 수 있다. $ docker --context default context use default 위 명령어를 치자.
마이크로서비스 아키텍처 빠른개발속도 : 개발 언어 선택의 자유로움, 서비스팀의 역량으로 가능 빠른 배포 속도와 병렬 배포 : 마이크로서비스간 독립적 배포 (CI/CD) DevOps팀과 통합된 운영 : 서비스에 대한 오너쉽 확장성과 가용성 : 비즈니스 도메인과 밀접하게 연결 : Lean 사이클 EC2 (Amazon Ec2 Container Service) 별도의 어플리케이션이 필요없는 컨테이너 운영 매니지먼트 모든 규모의 컨텡너 관리 유연한 컨테이너 배치 AWS 플랫폼과 통합 ECS 구성요소 클러스터 : 작업이 실행되는 EC2 인스턴스의 함대 클러스터 관리 엔진 : 클러스터 리소스 및 작업 상태 관리 작업 정의 : 작업에 대한 컨테이너 및 환경의 정의 스케쥴러 : 클러스터 상태를 고려한 작업 배치 작업 :..
Command Docker 정보 docker -v, docker --vesion : 설치된 도커의 버전 확인 docker version docker system info Image 명령어 docker image pull [option] [:tag] ex) docker image pull nginx:latest (최신 버전 nginx 이미지를 다운로드) docker image ls : 도커 이미지 리스트 확인 docker image inspect [:tag] : 도커 이미지 상세 정보 ex) docker image inspect nginx:latest docker search [option] : 도커 허브에 있는 이미지 검색 docker container commit [option] : 해당 컨테이너를 이..
Docker Registry, Repository, Tag 레지스트리(Registry) - 도커 이미지를 관리하는 공간 - 도커 허브를 기본 레지스트리로 설정되어 있다. - 레지스트리는 Docker hub, Private Docker Hub, 회사 내부용 등으로 나뉜다. 레포지토리(Repository) - 레지스트리 내에 도커 이미지가 저장되는 공간 - 이미지 이름이 사용되기도 함 - Github의 레포지토리와 비슷한 역할 태그(Tag) - 같은 이미지지만 버전 별로 내용이 다름 - 해당 이미지를 설명하는 버전 정보를 주로 입력 - 되도록 latest 태그가 붙인 최신 버전을 사용 Docker Copy과 Volume CP(Copy) : Host와 Container 사이에 파일을 복사(Copy) Volum..