iam을 이용하여 여러 명의 admin 계정을 만들었음. 루트 계정 쓰다가 비밀번호 실수로 틀리면 example.com으로 인증코드 날아가는거 그거 일일이 관리해줄순 없으니까…
github actions
깃허브 태그를 이용해서 ECR에 푸쉬하고 싶다는 생각이 들었다. git tag v0.0.10 이런 식으로 해서 태그를 달고 github action에서 인식하게 해보자
name: my-server-github-actions
on:
push:
tags:
- 'v*.*.*'
jobs:
build:
name: Deploy to ECR
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ECR_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_ECR_SECRET_ACCESS_KEY}}
aws-region: ${{ secrets.AWS_ECR_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Extract version from github tag
id: extract_version
run: |
echo "Tag name : $GITHUB_REF_NAME"
echo "VERSION=$GITHUB_REF_NAME" >> $GITHUB_ENV
- name: Build, tag, and push image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY_NAME }}
IMAGE_TAG: ${{ env.VERSION }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
echo "build image complete : $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "push image complete : $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG"
- name: Set output of completed image uri
id: set-output
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: ${{ secrets.AWS_ECR_REPOSITORY_NAME }}
IMAGE_TAG: ${{ env.VERSION }}
run: echo "IMAGE_URI=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
일단 첫번째로 이렇게 작성해 봤음. github tag를 이용해서 버저닝을 하고 싶었다.
git tag v0.0.~ 를 하고 git push origin —tags 를 사용해서 태그를 알려줬음
태그를 아주 잘 잡는 모습
앗차차… config는 gitignore대상이라 서버에 안 올라가 있다. 그걸 생각을 못했네
https://ji5485.github.io/post/2021-06-26/create-env-with-github-actions-secrets/ 여기를 참고했다
git push origin :v0.0.13 이걸로 원격 저장소 태그 삭제 가능 git tag -d v0.0.13 이걸로 로컬 태그 삭제 가능
- name: Make .env from secret
id: make-envfile
run: |
touch /config/.env
echo "${{ secrets.ENV_A_KEY }}=${{ secrets.ENV_A_VALUE }}" >> /config/.env
echo "${{ secrets.ENV_B_KEY }}=${{ secrets.ENV_B_VALUE }}" >> /config/.env
echo "${{ secrets.ENV_C_KEY }}=${{ secrets.ENV_C_VALUE }}" >> /config/.env
echo /config/.env
요 스탭을 추가했음. env의 key도 숨기고 싶어서 위 방식처럼 했음.
iam role to EC2
ECR에서 이미지를 땡겨올 수 있는 iam role을 하나 만들었음 그전에 도커 먼저 설치하자
sudo yum update -y
sudo yum install docker -y
sudo service docker start
sudo usermod -aG docker ec2-useraws ec2 associate-iam-instance-profile --instance-id {instance-id} --iam-instance-profile Name={iamrole-name}이걸로 ec2 인스턴스에 iam role을 갖다 붙임
aws ec2 describe-iam-instance-profile-associations이걸로 정책 붙은거 확인 이제 EC2 들어가서
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-2.amazonaws.com하면 docker를 ECR에 인증할 수 있다. IAM Role 없으면 aws configure로 직접 로그인 해야됨
https
근데 여기서 막혔다… 하 어떢해야되지 ALB를 쓰면 될거 같긴 한데 돈이 아깝고 public하나에 붙이는건데 너무 오반거 같기도 하고 —> 그렇게 하려면 https://blog.naver.com/sssang97/222913082357 여기 참고하면 될거같긴 하다 나는 traefik을 써보기로 함
