EKS + ArgoCD + CodePipeline 으로 CI/CD 구성 하기
Demo App 생성
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/about")
def hello_world():
return "V1 page"
Dockerfile
FROM python:3.8-alpine
COPY . /app
RUN pip3 install flask
WORKDIR /app
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]
docker image를 build해서 application repo에 이미지를 업로드한다.
EKS cluster 생성
https://github.com/changhyun06/eks-argocd-codepipeline
GitHub - changhyun06/eks-argocd-codepipeline
Contribute to changhyun06/eks-argocd-codepipeline development by creating an account on GitHub.
github.com
앱 소스코드와 도커파일은 위를 참고하면 된다
나머지 eks resource 를 구성하는 매니페스트파일도 위 깃헙을 참고하면 된다
CodeCommit 리포지토리 생성
소스코드, Dockerfile, buildspec.yaml을 업로드 할 리포지토리
ArgoCD에 사용할 매니페스트파일을 저장할 리포지토리
이렇게 두개를 만들어준다
ArgoCD 생성
공식 홈페이지에 있는 설치 명령어로 생성해준다
https://argo-cd.readthedocs.io/en/stable/getting_started/
Getting Started - Argo CD - Declarative GitOps CD for Kubernetes
Getting Started Tip This guide assumes you have a grounding in the tools that Argo CD is based on. Please read understanding the basics to learn about these tools. Requirements Installed kubectl command-line tool. Have a kubeconfig file (default location i
argo-cd.readthedocs.io
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
그 후
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
로드밸런서 타입으로 바꾸면 브라우저로 접속을 할 수 있다
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
초기 비밀번호를 확인하고
로그인을 해준다
그리고 리포지토리 등록을 해준다
등록한 리포지토리로 어플리케이션도 등록 해준다
CodePipeline 생성
CodeCommit은 위에서 생성 했으므로 생략
CodeBuild를 생성 해준다
CodeBuild를 만들 때
buildspec.yaml에서 사용할 환경변수를 만들어준다
구성을 다 해준 후
application code를 업데이트 해주면
몇분뒤에 새로운 application으로 교체되어 실행된다.