전체 글
Jenkins, Codedeploy 사용하여 CICD 환경 구축
구축 환경 CI: GitHub, Jenkins CD: Codedeploy Language: Go CI/CD 흐름 1. 개발자가 Git Push를 하게 되면 GitHub에서 Jenkins 서버로 webhook을 발생시킵니다 2. Jenkins가 Push 이벤트가 발생했음을 인지합니다 3. Jenkins가 빌드 및 테스트를 실행합니다 4. build가 성공적으로 마무리되면 애플리케이션 파일과 appspec.yml 파일을 zip으로 압축하여 S3에 업로드합니다 5. Jenkins가 CodeDeploy에게 배포를 요청합니다 6. CodeDeploy는 appspec.yml에 따라서 배포를 수행하며, 배포할 서버내에서 쉘 스크립트를 수행합니다. 구축 순서 1. github repository에 스크립트 파일을 올립..
[AWS] RDS S3에서 복원 기능 버전 문제
MySQL DB를 마이그레이션 하다가 생긴 어이없는 일 때문에 글을 씁니다 2021년 10월 1일 기준으로 MySQL 최신 버전은 8.0.26입니다 하지만 RDS S3복원을 하려고 했을 때 소스 버전은 8.0대 기준으로 8.0.23 버전 밖에 없었습니다 소스가 그 외의 버전이라면 호환 불가 에러가 뜹니다 5.6.51, 5.7.33, 8.0.23 버전이 아니라면 S3복원이 불가능합니다 S3 복원을 하고 싶다면 8.0.23 버전을 사용해야겠군요.... 인간적으로 사용 가능한 버전이 너무 적네요 열심히 일해라 아마존..!! https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/ MySQL.Procedural.Importing.html#MySQL.Proce..
[ECS] Fargate 사용해보기
사전 설치 aws cli docker Fargate 실행 순서 ECR 레포지터리 생성하고 애플리케이션 이미지 Push 합니다 ECS에서 작업 정의를 합니다 클러스터를 구성합니다 1. ECR 레포지터리 생성하고 이미지 Push 먼저 이미지를 올릴 레포지터리를 생성합니다. 레포지터리 이름 형식은 / 이며, 소문자만 가능합니다. 사용자가 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 완전관리형 Docker 컨테이너 레지스트리입니다. 쉽게 얘기하면 Fargate를 포함한 아마존의 컨테이너 서비스에서 사용하기 위한 도커 이미지 저장소입니다. ※ 레포지터리를 퍼블릭으로 생성하니까 접속하는 과정에서 자꾸 아래와 같은 에러가 발생했습니다. 그래서 프라이빗으로 다시 생성했습니다 ;; 이유는..
[EKS] alb-ingress-controller 사용해보기
주의 사항 2022.08.10 수정 해당 블로그에서 설치하는 AWS ALB Ingress Controller는 v1.1 버전으로 deprecated 상태입니다. 최신 버전인 AWS Load Balancer Controller v2.4를 설치하는 것이 권장됩니다. https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/ 테스트 순서 EKS 클러스터 생성합니다 worker node 역할에 추가로 정책을 붙입니다 alb-ingress-controller 배포합니다 ingress, deployment, service 배포합니다 host에 따라 웹페이지가 바뀌는지 확인합니다 1. EKS 클러스터 생성 1 2 3 4 5 6 eksctl create ..
[EKS] nginx-ingress-controller, NLB 사용해보기
테스트 목표 Nginx-ingress-controller 사용하여 AWS NLB 생성합니다 ingress 규칙 사용하여 호스트 foo.bar.com에서 /foo는 nginx-app이 배포된 pod로 요청하고, /bar는 apache-app이 배포된 pod로 요청합니다 service 생성합니다 hostPath 사용하여 node와 pod 간 volume 생성합니다 결과 확인 1. eksctl create cluster 1 2 3 4 eksctl create cluster --name --version 1.18 --region ap-northeast-2 \ --nodegroup-name --nodes 2 \ --ssh-access --ssh-public-key --node-type t3.medium --man..
[AWS] Windows CloudWatch Agent 설치 방법
CloudWatch는 애플리케이션을 모니터링할 수 있도록 해주는 서비스입니다 하지만 memory, disk를 수집하기 위해선 Agent를 설치해줘야 합니다 오늘은 Windows에서 CloudWatchAgent를 설치하는 방법을 포스팅해보겠습니다 역할 만들기 일반 사용 사례에서 EC2를 선택하고, 정책으로 CloudWatchAgentServerPolicy를 넣어서 역할을 만들어야 합니다 만든 역할은 인스턴스에 설정해 주세요(작업 > 보안 > IAM 역할 수정) Windows CloudWatchAgent 설치 1. 제일 먼저 windows 인스턴스에 접속 후 aws configure 설정해주세요 2. 파워쉘에서 CloudWatchAgent 설치 파일 다운로드해주세요 Invoke-WebRequest https..
쿠버네티스(2) - 컨트롤러 ReplicaSet, Deployments
실습환경: 마스터 1개 노드 2개 쿠버네티스 환경을 VM으로 구현함 ReplicaSet 프로덕션에서 Naked Pod를 사용하지 않는 이유는 팟이 고장 났을 때 스스로 살려내지 못하기 때문이다. Replica Set은 팟 상위의 개념으로 몇개의 팟이 항상 동작함을 보장 줌으로써 고가용성을 제공한다. 팟이 크래시가 되면 Replica Set은 새로운 팟을 만들고 원하는 상태로 돌려 놓는다. 2개의 레플리카가 클러스터에서 항상 동작하도록 설정 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # replicaset.yml apiVersion: apps/v1 kind: ReplicaSet # 배포할 오브젝트 종류 metadata: # 배포할 오브젝트의 정보 ..
[AWS] ALB와 NLB 사용 결정
ALB(Application LoadBalancer) L7 계층, 즉 애플리케이션 계층에서 동작하는 로드밸런서입니다 프로토콜: HTTP, HTTPS sticky session 설정이 가능합니다 path-based(경로 기반) 라우팅 지원: 마이크로서비스 구조에서 path별로 각 마이크로서비스로 라우팅이 필요한 api gw는 alb를 사용합니다 sticky session 이란? http cookie 방식을 사용하여 트래픽을 분산합니다 예를 들면, 웹사이트에 로그인을 하면서 session을 서버에서 생성했는데, 또다시 서버에 접속할 때 로드반란서가 다른 쪽으로 서버로 라우팅 시키면 세션이 공유되지 않아 새로 로그인 요청을 하게 됩니다 (무한 로그인 지옥에 빠질 수 있음) sticky session 설정을 하..
[AWS] SSM Parameter Store Version 관련 삽질
명령, API 호출 및 SSM 문서에서 특정 파라미터 버전을 참조하는 방법 ssm:parameter-name:version-number Parameter Store에서 Edit을 하면 버전이 자동으로 증가됩니다 PS C:\Users\Administrator> & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c ssm:cloudwatch-Windows 버전을 안 쓰면 최신 버전이 지정됩니다 PS C:\Users\Administrator> & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-age..
[AWS] DMS - Source MySQL 데이터베이스 설정
DMS란? Data Migration Service 관계형 데이터베이스, 데이터 웨어하우스, NoSQL 데이터베이스 및 기타 유형의 데이터 저장소를 쉽게 마이그레이션할 수 있는 클라우드 서비스입니다. DMS 구성도 소스를 타겟으로 바로 마이그레이션 하는 것이 아니라 복제 인스턴스를 통해 마이그레이션을 합니다 Linux2 인스턴스 Mariadb을 install하고 스키마와 테이블을 생성합니다 보안그룹 포트 3306을 열어줍니다(Source EndPoint에 설정한 포트) 1 2 3 4 5 6 7 8 $ yum install mariadb-server $ service mariadb start $ systemctl enable mariadb.service $ mysqladmin -u root -p passw..