클라우드 공부

문제 제기 Git Action을 사용하는 도중, 브랜치 별로 다른 설정을 해야 할 일이 생겼습니다. 정확히는 main 브랜치에 push가 들어올 경우에만 review를 받은 후 action을 동작시켜야 했습니다. 팀에서 해결 방법을 찾지 못해 똑같은 파이프라인 yaml 파일을 두 개(ci-prd.yaml, ci.yaml) 만들어 사용했습니다. 한 파일은 main 브랜치에 push가 들어왔을 때, 다른 파일은 dev, stg 브랜치에 push가 들어왔을 때. 이러면 코드를 수정할 때 두 파일을 모두 수정해주어야 하고, 이로 인해 휴먼에러가 생기겠다 싶었습니다. 처음엔 브랜치 별로 job을 나눠서 job을 두 개 돌릴까도 생각해봤는데, 그러면 똑같은 코드를 두 번 써야하는 건 마찬가지라 패스했습니다. env..
0. IaC(Infra as a Code)의 사용 이유 사람은 한정적인데 운영해야 할 서버가 많아짐 → 반복되는 일이 늘어남 버전 관리 가능 리뷰 및 테스트 가능 휴먼 에러 감소 테라폼 사용에 대한 공부와 기존 인프라가 이미 있을 경우 통합시키는 수고 필요 1. 기본 동작 방식 1.1 Init: 실행을 위한 준비 작업(초기 setting) 테라폼 상태 파일 확인 provider 플러그인 다운로드 모듈 다운로드 1.2 apply: 작성된 코드를 기반으로 인프라 구성 테라폼이 자동으로 의존성(dependency)을 구성하고 병렬로 인프라를 구성한다. 수동으로 의존성을 걸 수 있지만 테라폼이 의존성을 구성하는 과정에서 꼬일 수 있어 사용하지 않는 것을 권장 어떤 리소스가 생성/수정/삭제 되는지 확인하는 pla..
테라폼 전체 코드https://github.com/su-mmer/AWSCodeDeployT..
목적Git Action과 AWS CodeDeploy 스택이 필요해서 직접 사용해보려고 합니다. Git Action으로도 CI/CD를 모두 진행할 수 있는데 왜 그렇게 하지 않는지도 생각해보았습니다. 제가 찾은 Git Action 배포 방식은 워크플로우에서 서버에 접속하여 수동으로 배포하는 방법 뿐 입니다. 그런데 워크플로우에서 실행시킨 프로세스는 워크플로우 종료와 함께 모두 종료시키는 것이 워크플로우의 원칙입니다. 실제로 Git Action에서 nohup으로 프로세스를 실행시키는 명령을 주더라도 워크플로우가 종료될 때 프로세스도 함께 종료됩니다. 임의로 뭔가를 건드려서 종료시키지 않을 수도 있지만 그러라고 만든 게.. 아니니까 다른 방법을 쓰는 것이 맞다고 생각합니다. 제가 Git Action을 사용하는..
서버(server) [서버의 사전적 정의] 1. 식당에서 음식과 음료를 가져오는 사람, 웨이터 또는 웨이트리스 2. 네트워크를 통해 다른 컴퓨터에서 사용되는 파일과 서비스를 제공하는 메인 컴퓨터 3. 테니스, 배구 등의 경기에서 공을 서브함으로써 경기를 시작하는 선수 출처: Merriam Webster's Learner's Dictionary 서버는 serve(제공하다)+er(~을 하는 사람)의 합성어이다. 무언가를 제공하는 것(컴퓨터)이다. 서버라는 용어는 원래 '특정 역할에 특화된 것'을 의미한다. 레스토랑의 웨이터를 서버라고도 한다. 웨이터의 역할은 주문 접수나 음식을 내오는 것에 특화돼 있으며 요리는 하지 않는다. 서버라는 용어는 컴퓨터 자체(하드웨어)를 가리키는 경우도 있고, 컴퓨터에서 동작하고..
의도 [테라폼으로 시작하는 IaC] 책의 246페이지 실습에 대한 내용이다. 한 가지 변수 값만 다른 instance를 반복문을 사용해 3개 생성해야 한다. 모듈을 쓰자니 너무 복잡하고 count를 쓰자니 instance 참조 방식을 인덱스로 하는게 맘에 안 들어서 for_each를 택했다. # aws_instance.hashicat["kitten"] will be created + resource "aws_instance" "hashicat" { 이런 식으로 aws_instance.hashicat["kitten"] 형태로 참조하고 싶었다. count를 사용하면 aws_instance.hashicat[0] 의 형태로 참조해야 한다. 결과 코드 locals { map_placeholder = { "kitt..
AWS AK/SK를 EXPORT로 사용하거나, 파일에 저장하거나, 코드에 직접 넣기엔 보안적으로 너무나 안 좋다고 생각한다. 그래서 찾은 방법이 AWS의 profile을 사용하는 것이다. hh@DESKTOP-4UIU15G:~$ aws configure --profile hh AWS Access Key ID [None]: ****** AWS Secret Access Key [None]: ****** Default region name [None]: ap-northeast-2 Default output format [None]: hh@DESKTOP-4UIU15G:~$ aws s3 ls --profile hh aws configure --profile [profile_name] 명령으로 profile을 등록한..
윈도우에 테라폼을 직접 설치하면 설정이 조금 불편해져서 WSL에 설치하려고 한다. 모든 사항은 테라폼 공식 문서를 따라간다. https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli Install Terraform | Terraform | HashiCorp Developer Install Terraform on Mac, Linux, or Windows by downloading the binary or using a package manager (Homebrew or Chocolatey). Then create a Docker container locally by following a quick-start tutoria..
파드는 생성과 삭제를 반복하는데, 이때 중요한 데이터는 따로 저장해두어야 한다. 또한 데이터를 여러 파드가 공유할 수도 있다. 쿠버네티스에서는 다양한 형태의 볼륨을 제공한다. PV(PersistentVolume) 볼륨을 사용할 수 있게 준비함 apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv spec: capacity: storage: 100Mi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain nfs: server: 192.168.1.10 path: /nfs_shared 여기서 선언한 storage는 단순히 레이블의 의미만 가지며 실제로 사용량을 제한하지 않는다. access..
가상머신에서 로컬 클러스터를 사용했다. Service 파드는 클러스터 내에서 유동적이기 때문에 새로 생길 때마다 접속 정보가 변경된다. 이에 내/외부에서 파드 접속을 안정적으로 할 수 있게 도와주는 것이 쿠버네티스에서 서비스의 역할이다. 파드가 생성될 때 부여되는 IP를 가지고 연결한다. NodePort yaml에 NodePort type 선언하기 [root@m-k8s ~]# cat _Book_k8sInfra/ch3/3.3.1/nodeport.yaml apiVersion: v1 kind: Service metadata: name: np-svc spec: selector: app: np-pods ports: - name: http protocol: TCP port: 80 targetPort: 80 node..
su-mmer
'클라우드 공부' 카테고리의 글 목록