[k8s] minikube 설치 & kubectl 사용하기
·
DevOps/Kubernetes
minikube 설치하기터미널에서 minikube 설치하기기본적으로 docker가 설치되어 있어야함$ brew install minikube # minikube 설치$ orbctl start # docker 실행$ docker ps # docker 실행 중인지 확인$ minikube start # minikube 시작 정상적으로 설치됬는지 확인하기$ kubecl get nodekubectl 명령으로 pod 실행하기다음과 같이 pod의 이름과 대상 이미지를 지정하고 실행하기$ kubectl run nginx --image=nginx:latest$ kubectl get pod describe 명령을 통해 pod를 자세히 확인하면, 기본 디폴트 namespace에 생성되었으며 고유한 IP 주소가 할당..
[AWS] ECS에 컨테이너 배포하기
·
DevOps/AWS
1. 태스크 정의새로운 태스트 정의 생성 태스크 정의 패밀리 이름 지정 인프라 요구 사항 설정시작 유형: AWS Fargate운영체제/아키텍처: Linux/ARM64 (이미지에 맞는 운영체제와 아키텍처 선택)태스크 역할: ecsTaskExecutionRole ECR에 업로드된 이미지 URI 복사하기 컨테이너 설정컨테이너 이름 지정하고, 복사한 이미지 URI 붙여넣기컨테이너 포트는 해당 이미지가 사용하는 포트로 설정 컨테이너 환경 변수로는 DB 접속 정보 입력 (기존에 생성했던 RDS 접속 정보 입력) 나머지는 디폴트로 두고 태스크 정의 생성 생성된 태스크 정의 2. 클러스터 생성클러스터 탭에서 클러스터 생성하기 클러스터 이름 지정하고, 인프라는 AWS Fargate로 해서 생성3. 클러스터에 서비스 생성..
[AWS] ECR에 이미지 업로드
·
DevOps/AWS
1. IAM 사용자 생성 및 aws-cli 설치IAM의 사용자 탭에서 사용자 생성 사용자 이름 입력 직접 정책 연결에서 정책을 추가AmazonElasticContainerRegistryPublicFullAccess 정책 추가 EC2InstanceProfileForImageBuilderECRContainerBuilds 정책 추가 AmazonECS_FullAccess 정책 추가 추가한 정책 확인하고, 사용자 생성 생성한 사용자의 보안 자격 증명 탭에서 엑세스 키 만들기 사용 사례는 CLI 선택 엑세스 키 생성하면, 다음과 같이 엑세스 키와 비밀 엑세스 키가 주어지는데, aws-cli 설정에 필요하니 복사해두기 터미널에서 awscli 설치하기$ brew install awscli 설치 후 기본 설정하기복사해 ..
[Docker] dockerhub에 이미지 업로드
·
DevOps/Docker
dockerhub에 이미지 업로드dockerhub에 새로운 repository 만들기 기존의 이미지에 새로운 태그 추가하기버전은 1.0로 지정$ docker tag polls-front dodo43/polls-front:1.0 docker login 하기해당 url로 접속하고 code 입력$ docker login docker registry에 이미지 업로드$ docker push dodo43/polls-front:1.0 registry 확인해보면 새로운 이미지가 추가됨 이미지 자세히 확인해보면 arm64 아키텍처, 컨테이너 배포시 아키텍처 다르면 구동 안되기 때문에 주의
[Docker] 투표 앱 docker compose로 배포해보기
·
DevOps/Docker
1. Django 이미지 만들기CORS_ALLOWED_ORIGINS와 CSRF_TRUSTED_ORIGINS에 frontend 추가하기 Django 프로젝트 디렉터리에 Dockerfile, .dockerignore 파일 생성하기 Dockerfilepython:3.12-slim이미지 사용가상 환경 설정하고, 종속성 설치 후 서버 실행8000번 포트 노출해서 외부 접근 허용FROM python:3.12-slimWORKDIR /appCOPY ./ /app/# 가상 환경 설정 및 종속성 설치RUN python -m venv .venvRUN pip install -r requirements.txt# 서버 실행ENV DEBUG=TrueEXPOSE 8000CMD ["python", "manage.py", "runser..
[Docker] Multi-stage build
·
DevOps/Docker
Multi-stage buildDockerfile에서 여러 개의 베이스 이미지를 사용하여 이미지를 빌드하는 방법최종 이미지의 크기를 줄이고, 빌드 프로세스를 효율적으로 관리하기 위해 사용FROM을 기준으로 여러 스테이지로 나뉘어 이미지를 빌드하고, 마지막 스테이지에서 생성한 파일과 상태를 기반으로 빌드됨각 스테이지는 독립적으로, 스테이지가 종료되면 해당 스테이지에 생성한 파일은 사라짐COPY --from=을 통해 이전 스테이지에서 생성한 파일을 복사할 수 있음Multi-stage build 예시# Stage 1: BuildFROM node:18-alpine AS builderWORKDIR /appCOPY package.json yarn.lock ./RUN yarn installCOPY . .RUN yar..
[Docker] docker compose
·
DevOps/Docker
docker compose여러 개의 docker 컨테이너를 관리하는 도구docker-compose.yaml 파일에 컨테이너들을 정의모든 컨테이너를 실행하거나 종료할 수 있는 기능을 제공docker compose 명령어docker compose up: 모든 컨테이너를 실행docker compose down: 모든 컨테이너 중지docker compose ps: 실행 중인 서비스 확인docker compose restart : 특정 서비스만 재시작docker-compose.yaml 예시services: app: image: node:18-alpine command: sh -c "yarn install && yarn run dev" ports: - 127.0.0.1:3000:3000 ..
[Docker] Volume
·
DevOps/Docker
Volume도커 컨테이너에서 데이터를 저장하고 관리하는 데 사용되는 지속적인 저장소Volume이 필요한 이유? 컨테이너는 기본적으로 휘발성이기 때문에, 컨테이너가 종료되거나 삭제되면 내부의 파일 시스템 데이터도 사라짐, 볼륨은 컨테이너의 데이터를 영구적으로 유지하거나 컨테이너 간에 공유할 수 있도록 함Volume의 종류bind mount: 호스트 파일 시스템을 사용호스트 파일 시스템의 특정 디렉터리를 컨테이너의 특정 디렉터리와 마운트docker volume: 도커가 관리하는 볼륨볼륨은 호스트 디렉터리의 /var/lib/docker/volumes/에 저장됨볼륨과 컨테이너의 특정 디렉터리를 마운트하여 사용tmpfs mount: 볼륨을 메모리에 저장하는 방식컨테이너 종료 시 저장된 데이터가 사라짐Bind mo..