전체 글
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - AWS CodeCommit이란?
AWS CodeCommit 우리는 깃을 사용할 떄, 막 브랜치 파서 마스터브랜치에 커밋하는 형식으로 개발했습니다. 하지만 CodeCommit은 이와 비슷한데, IAM인증 유저를 통해 이에 대한 권한을 세세하게 나누었다는 차별점이 있습니다. 앞으로 깃을 사용하지 않고 이를 활용하도록 하겠습니다. 실습 이를 위해서 우선 IAM유저를 하나 만들어 주도록 하겠습니다. 이 서비스의 장점은 IAM유저의 권한을 세부화 해서 관리할 수 있다는 점이기 때문입니다. 그리고 이 외에도 AWS CodeCommit에 대한 자격증명도 해주어야 합니다. 우선 이 키페어를 다운로드 해주겠습니다. 이제 CodeCommit이라는 서비스에 들어가서 레포지토리 하나를 만들어 주도록 하겠습니다. 이제 그냥 만든 EC2에서 하나의 text파일..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS KMS 활용 실습 (SDK 활용)
우선 이번 실습에서는 직접 KMS을 python SDK를 활용해 보겠습니다. 실습 시작 우선 실습을 하기에 앞서 KMS키를 하나 만들어 주도록 하겠습니다. 우선 SYMMETRIC으로 설정해주겠습니다 그리고 키 권한을 제가 이전에 만든 awscli에 관리자 권한을 부여해 주겠습니다. 그리고 사용자 권한도 awscli에 그냥 주겠습니다. 그리고 새로운 EC2인스턴스를 하나 만들어주고 이제 본격적인 실습 진행해 보겠습니다. $sudo apt update $sudo apt install awscli $aws configure $sudo apt install python3-pip $pip install aws-encryption-sdk 이제 필요한 모듈은 다 다운받았으므로 python을 통해서 sdk를 작성해 보..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS KMS 개요
데이터 암호화란? 데이터 암호화는 당연히 VPC안에서 우리의 서버에 들어오지 못하게 막을겁니다. 하지만 만약에 뚫렸을 떄를 가정해서 그 안의 정보들을 보지 못함에 목적이 있습니다. Client-side 암호화란 사용자가 직접 암화화 키를 관리하는 것입니다. 만약 사용자가 서버에 비밀번호를 쳐서 회원가입을 하려고 한다고 해 봅시다. 근데 그 중간과정에서 해커가 비밀번호 순서를 조금 바꾸어서 보내게 된다면, 서버에는 제가 쓴 비밀번호가 아닌 비밀번호가 저장되겠죠, 이러한 상황을 막기 위해, 암호화를 하는 것입니다. 그리고 이렇게 사용자가 직접 암호화 하는 것을 도와주기 위한 서비스가 AWS KMS( Key Management Service )입니다. Server-side 암호화란 AWS가 알아서 서버에 저장..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - ECS-CLI Compose를 활용한 다중 Container 배포2
이번 실습에서는 aws-cli대신에 ecs에 특화된 ecs-cli를 사용해야 합니다. # ecs-cli 설치 $sudo curl -Lo /usr/local/bin/ecs-cli https://amazon-ecs-cli.s3.amazonaws.com/ecs-cli-linux-amd64-latest 그다음에는 이제 ecs상에서 해커들의 공격과 같은것을 막기 위해, 권한을 설정해 주는 곳이 있습니다. 이를 하기 위해서는 gnupg를 깔고 public key를 놓아야 합니다. 이 과정을 진행해 보도록 하겠습니다. $sudo apt-get install $cd keys $vim amazon-ecs-public-key.gpg /amazon-ecs-public-key.gpg -----BEGIN PGP PUBLIC K..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - ECS-CLI Compose를 활용한 다중 Container 배포1
기존의 영상에서는 EC2안에서 Dockerfile2개를 만들고, nginx dockerfile과 django dockerfile을 2개 만들고 그 밖에다가 docker-composer.yml을 만들어 EC2안에서 다 실행을 했었습니다. 하지만 이번에는 EC2안에서 하는게 아니라 이번에는 AWS의 Fargate Service를 이용하여 이를 진행해 보도록 하겠습니다. 이를 사용했을 때의 장점은 EC2를 관리해야한다는 불편함에서 벗어나 오직 Fargate Service하나만 바라보게 할 수 있다는 점입니다. 일단 매번 해주었던 기본 명령어를 아래와 같이 실행해 주겠습니다. $curl -fsSL https://get.docker.com/ | sudo sh $sudo usermod -aG docker $USER..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - AWS CLI를 통한 작업 정의2
우선 저번에 해결하지 못했던 권한문제를 마저 끝내보도록 하겠습니다. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html Task definition parameters - Amazon Elastic Container Service Task definition parameters Task definitions are split into separate parts: the task family, the IAM task role, the network mode, container definitions, volumes, task placement constraints, and launch types...
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - AWS CLI 개요 + AWS CLI를 통한 작업 정의1
우선 기존에 했던 것 처럼 EC2인스턴스를 하나 만들고 Django-Deploy를 깔고 ECR에 django image를 저장하는 과정을 스피디하게 짚고 넘어가도록 하겠습니다. 우선 django image의 빌드는 끝났다고 가정해 봅시다. 여기서의 핵심은 aws cli이니까요 $sudo apt-get install awscli $aws configure $aws ecr get-login --no-include-email --region ap-northeast-2 $docker login -u AWS -p eyJwYXlsb2FkIjoieGdYOVNwM2pNcWxDL3FBdkdhVXBVTVN3akd5UzVYam5Xb0Y0ZlYxWFNwbC9IU0ZwYUUxK2dSMnNUajUwb3EzOFlRcHYxMW9NM..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Docker Compose를 활용한 배포
/docker-compose.yml "docker-compose.yml" 25L, 509B 2,9 All version: '3' services: nginx: container_name: nginx build: ./nginx image: docker-django/nginx restart: always ports: - "80:80" volumes: - ./Django-Deploy:/srv/docker-django - ./log:/var/log/nginx depends_on: - django django: container_name: django build: ./Django-Deploy image: docker-django/django restart: always command: uwsgi --ini uws..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS Fargate을 통한 배포
바로 ECS의 클러스터를 활용하겠습니다. 클러스터라는 것은 어떻게 보면 하나의 구분된 영역이라고 보시면 됩니다. 또한 클러스터를 생성하면 작업을 생성해야 합니다. 그리고 그 아래에 여러개의 컨테이너가 있을 수 있는겁니다. 이번 실습같은 경우는 컨테이너가 하나겠지만 다음 실습부터는 여러개 일 수 있습니다. 간단히 AWS Fargate에 대해서 되짚고 가보겠습니다. AWS Fargate aws fargate fargate는 Amazon EC2인스턴스의 서버나 클러스터를 관리할 필요 없이 컨테이너를 실행하기 위해 AWS ECS에 사용할 수 있는 기술입니다. Fargate를 사용하면 더 이상 컨테이너를 실행하기 위해 가상 머신의 클러스터를 프로비저닝, 구성 또는 조정할 필요가 없습니다. 따라서 서버 유형을 선택..
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS ECR에 컨테이너 업로드
일단 저희가 이전에 만든 django이미지와 nginx이미지를 registry에 등록한다고 해 봅시디. 그리고 ECS은 Elastic Container Service이고 ECR은 Elastic Container Registry인데 ECS안에 ECR이 포함되어 있는 형식입니다. 그러면 ECS가 우리가 registry에 등록해둔 이미지를 다양한 EC2인스턴스에 쏴주는 역할을 하게 됩니다. 이러한 컨테이너 배포방식이 옵션 1입니다. 그리고 우리가 Docker Registry보다 ECR을 사용해야 하는 이유가 ECS호환이 잘 되어 있기 때문입니다. 또한 ECS을 오토스케일링 기능을 지원가능하게 하기 위함입니다. 하지만 이는 매우 고전적인 방식입니다. 그리고 노가다가 매우 들어간다는 관리 이슈가 생기게 됩니다. ..