-
github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 5부AWS 2023. 4. 3. 19:39
4부 링크
github actions + ecr + eks + argoCD + helm + kustomize 4부
3부 링크 https://xodns.tistory.com/103 github actions + ecr + eks + argoCD + helm + kustomize 3부 2부 링크 https://xodns.tistory.com/99 github actions + ecr + eks + argoCD + helm + kustomize 2부 1부 링크 https://xodns.tistory.com/98 github actio
xodns.tistory.com
manifest 레포지토리는 보안 이유로 공유할 수가 없습니다.
Workshop Studio
catalog.us-east-1.prod.workshops.aws
위에 링크를 보고 참고했다.
일단 argoCD를 설치해보자
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
혹시모르니 argoCD CLI도 설치하자.
VERSION=$(curl --silent "https://api.github.com/repos/argoproj/argo-cd/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/') sudo curl --silent --location -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64 sudo chmod +x /usr/local/bin/argocd
argoCD를 밖에서 접근 가능하게 type을 LoadBalancer로 바꿔주자
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
LoadBalancer로 바꿨으므로 ec2에서 로드밸런서 탭에 로드밸런서가 만들어져있고 주소가 나온다.
5분정도 있다가 브라우저로 요청을 해보자.
로그인 아이디는 admin 이고 비밀번호는 아래의 명령어를 통해 얻어야한다.
ARGO_PWD=`kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d` echo $ARGO_PWD
워크샵에서 나온 내용을 보면, k8s의 yaml들을 저장하기 위한 repository를 하나 만들었다.
워크샵에서는 public 이지만, 나는 private 로 만들겠다.
eks cluster에서 해당 private repository로 push 해야하므로 cluster에서 ssh 키를 만들어줘야한다.
ssh-keygen -t rsa -b 4096 -C 깃허브로그인이메일
이렇게 한다음 , id_rsa.pub 파일을 복사해서 github 프로필 누르면 setting이 있는데 거기에서 ssh 키를 등록해주면 된다.
https://velog.io/@loakick/2019-11-19-0011-%EC%9E%91%EC%84%B1%EB%90%A8-2ck34lupye
AWS EC2 Ubuntu 18.04에 Github SSH 설정하기
들어가기 앞서 Gihhub 레포지토리에 push를 하거나, private 레포지토리를 받아오기 위해서는 Github 계정이 필요합니다. 하지만 매번 할 때마다 비밀번호를 입력하기는 귀찮습니다. 그래서 Github ssh key
velog.io
잘 이해가 안된다면 위 블로그를 보자.
이제 만들어준 private repository를 ec2 bastion에서 clone 해보자.
[GitOps]ArgoCD와 Kustomize를 이용해 kubernetes에 배포하기
Kustomize + ArgoCD GitOps를 위해 kustomize와 argocd를 활용한 kubernetes 설정 동기화 환경을 구성해본 내용을 정리하였습니다.
velog.io
스프링 workflow의 build.yaml 에 아래의 설정을 추가한다.
- name: Setup Kustomize uses: imranismail/setup-kustomize@v1 - name: Checkout kustomize repository uses: actions/checkout@v2 with: repository: ${{ secrets.GIT_USERNAME }}/k8s-manifest-repo ref: main token: ${{ secrets.ACTION_TOKEN }} path: k8s-manifest-repo - name: Update Kubernetes resources run: | echo ${{ steps.login-ecr.outputs.registry }} echo ${{ steps.image-info.outputs.ecr_repository }} echo ${{ steps.image-info.outputs.image_tag }} cd k8s-manifest-repo/base kustomize edit set image ${{ steps.login-ecr.outputs.registry}}/${{ steps.image-info.outputs.ecr_repository }}=${{ steps.login-ecr.outputs.registry}}/${{ steps.image-info.outputs.ecr_repository }}:${{ steps.image-info.outputs.image_tag }} cat kustomization.yaml - name: Commit files run: | cd k8s-manifest-repo git config --global user.email "github-actions@github.com" git config --global user.name "github-actions" git commit -am "Update image tag" git push -u origin main
ACTION_TOKEN은 맨위에 첨부한 워크샵 링크에 잘 나와있다.
github.com 로그인 후 User profile > Settings > Developer settings > Personal access tokens 으로 이동 합니다. 그리고 우측 상단에 위치한 Generate new token을 선택 합니다.
Note 에 access token for github action 라 입력 하고 Select scopes 에서 repo 를 선택 합니다. 그리고 화면 아래에서 Generate token 을 클릭 합니다.
이런 방식으로 해서 얻은 다음 넣어주면 된다.
build.yaml 파일을 보면 k8s-manifest-repo의 base폴더로 이동하므로 k8s-manifest-repo 에 base폴더를 만들자.
일단 EC2 내부에서 파일을 만들고, 깃허브에 푸시해보자.
#my-secret.yaml apiVersion: v1 data: username: base64로 암호화 한 값을 넣으세요. password: base64로 암호화 한 값을 넣으세요. url: base64로 암호화 한 값을 넣으세요. kind: Secret metadata: creationTimestamp: null name: my-secret
#backend-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: spring-backend namespace: default spec: replicas: 3 selector: matchLabels: app: spring-backend template: metadata: labels: app: spring-backend spec: containers: - name: spring-backend image: 002838798861.dkr.ecr.ap-northeast-2.amazonaws.com/back-end:9dc1dab1 imagePullPolicy: Always ports: - containerPort: 8080 env: - name: DATASOURCE_URL valueFrom: secretKeyRef: name: my-secret key: url - name: DATASOURCE_USERNAME valueFrom: secretKeyRef: name: my-secret key: username - name: DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: my-secret key: password
#backend-service.yaml apiVersion: v1 kind: Service metadata: name: spring-backend # annotations: # alb.ingress.kubernetes.io/healthcheck-path: "/" spec: selector: app: spring-backend type: LoadBalancer ports: - protocol: TCP port: 80 targetPort: 8080
#kustomization.yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: 002838798861.dkr.ecr.ap-northeast-2.amazonaws.com/back-end newName: 002838798861.dkr.ecr.ap-northeast-2.amazonaws.com/back-end newTag: 8ec13824 resources: - backend-deployment.yaml - backend-service.yaml
이렇게 만들어주고, 위에서 만들어준 깃허브 ssh 키가 있으므로 푸시가 된다.
argocd에서 k8s-manifest-repo private 레포에 접근하기 위해 ssh 키가 또 필요하다.
ssh키를 아래 블로그 통해서 만들고, k8s-manifest-repo 레포지토리에 가서 deploy key에 추가하자.
그리고 아래 블로그 보고 그대로 깃허브 ssh로 추가하면 된다.
https://malwareanalysis.tistory.com/415
ArgoCD 6편 - Private Repository
안녕하세요. 이 글은 Argo CD가 private git repo를 어떻게 관리하는지 설명합니다. private repo관리 기능은 버전이 낮은 Argo CD에 버그가 있습니다. 높은 버전 Argo CD를 사용하시길 바랍니다. 영상: https://yo
malwareanalysis.tistory.com
이렇게 하고 우리의 소스코드가 있는 레포지토리에서 아무거나 푸시를 하고 기다리면 이미지 태그가 변경되면 k8s-manifest-repo 에 커밋+푸시를 하고, argocd는 해당 레포를 3분에 1번씩 보고있어서 변경되면 3분뒤에 반영된다.
이때 우리는 kustomization.yaml이 있으므로 argocd는
kustomize build | kubectl apply -f
해당 명령어를 실행해서 배포하게 되므로 deploy의 이미지 값이 변경되는 것이다.
우리가 만든 서비스가 https 가 붙어있지 않으므로, 로드밸런서랑 route53 이랑 certification manager을 사용해서 https를 붙여보겠다. 실패했는데, 인증서는 ingress alb로 해야 작동하는건지 다음에 해보겠다.
지금은 spring+rds 조합인데, 다음에는 클러스터 내부 db와 연동해보겠다.
아래글을 읽어보자.
https://kingofbackend.tistory.com/194
[EKS] AWS EKS로 k8s 클러스터 생성 후 ALB로 배포하기
이번 글을 진행하려면 먼저 선행되어야 할 작업이 있습니다. 또한 aws, k8s에 대한 기초 지식이 없으면 어려울 수 있습니다. -k8s 1.19버전 -aws cli 설치 후 aws에 액세스 하기 -eksctl 설치 -아래와 같은 v
kingofbackend.tistory.com
AWS EKS에서 Service 타입 별 / Ingress 테스트
Kubernetes Network Test
medium.com
'AWS' 카테고리의 다른 글
github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 7부 (0) 2023.04.05 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 6부 (0) 2023.04.05 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 4부 (0) 2023.04.03 github actions, kustomize와 argocd를 EKS에서 kafka랑 사용하기 3부 (0) 2023.04.03 ec2에서 jenkins 빌드서버 만들어보기 2편 (0) 2023.03.31