티스토리 뷰
쿠버네티스로 DevOps 구현 - 3-3. ArgoCD 설치 및 Github SSH 연결, 쿠버네티스 배포 설정
개발자 하나 2023. 3. 1. 15:27ArgoCD 공식 문서
https://argo-cd.readthedocs.io/en/stable/getting_started/
kubectl과 kube config 파일이 필요합니다. kops로 쿠버네티스를 구성했다면 설치 조건에 부합합니다.
쿠버네티스 마스터 노드에 접속합니다. kops에서 퍼블릭 키를 설정해놓고 putty에서 key pair시 받아둔 ppk 파일을 이용해 접속해도 되고, (접속 정보는 AWS 콘솔에서 확인 가능합니다)
키 파일로 접속하는게 아니라면 EC2 instance connect를 이용해서 접속 후,
sudo passwd root
sudo passwd ubuntu 로 패스워드 지정 한 후
sudo vi /etc/ssh/sshd_config - PasswordAuthentication yes로 변경,
sudo service sshd restart 하면 키 파일 없이도 비밀번호로 로그인 가능합니다.
마스터노드의 hostname을 master로 변경해놓으면 터미널에서 구분이 편리합니다.
hostnamectl set-hostname master
다음 명령어로 ArgoCD를 설치합니다.
kubectl create namespace argocd
#v2.6.2 설치
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.6.2/manifests/install.yaml
kubectl get pods -n argocd
를 실행하면 여러 개의 파드가 생성된게 보입니다.
kubectl get service -n argocd 를 해보면 처음엔 모두 클러스터 아이피로 되어 있습니다.
다음 명령어로 argocd-server를 LoadBalancer로 변경합니다.
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
다시 서비스를 조회해 argocd-server의 EXTERNAL-IP로 접속하면
이런 문어대가리가 뜨는데, 다음 명령어로 초기 비밀번호 조회가 가능합니다. (아이디는 admin)
#초기비밀번호 확인
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
argoCD cli를 설치해 커맨드를 사용하려면 아래 코드로 설치 가능합니다.
#최신버전
#curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
#v2.6.2 설치
VERSION=v2.6.2 # Select desired TAG from https://github.com/argoproj/argo-cd/releases
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/download/$VERSION/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64
ArgoCD 서버에 로그인하여 초기 비밀번호부터 변경합니다.
Settings > Project로 가서 default 프로젝트를 생성합니다.
Settings > Repositories >
쿠버네티스 내에서 SSH 키를 만들고, 깃헙 리포지토리에 공개키, ArgoCD에 비밀키를 등록하면 됩니다.
Repository URL은 SSH Url을 입력합니다. 설정 후 ArgoCD 화면에서 connect를 눌러 연결되는지 확인할 수 있습니다.
저는 deployment.yaml, service.yaml 두 파일을 priate git repository에 올려놓고 연결하였습니다.
#ssh 키생성 명령어
ssh-keygen -t rsa
연결에 성공하면 어플리케이션을 만들 수 있습니다.
project 이름은 처음 생성한 default를 선택하고 Application Name은 임의로 지정합니다.
git 경로와 브랜치는 자동으로 지정되어 있습니다.
Path는 deployment.yaml 등 파일이 있는 경로를 지정해줍니다. root라면 . 찍으면 됩니다.
배포할 쿠버네티스 목적지를 설정합니다.
네임스페이스를 만들어서 넣어도 되고 default로 넣으면 default 네임스페이스에 생성됩니다.
문제가 없다면 github에 올라간 deployment.yaml, service.yaml 등 설정 파일대로 배포가 실행됩니다.
테스트 목적으로 작성한 deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2 # number of desired replicas
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: alger426/spring:latest
imagePullPolicy: Always
ports:
- containerPort: 3030 # port on which your Spring Boot app is running
service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
type: NodePort
selector:
app: my-app
ports:
- name: http
port: 80 # external port to expose your service on
targetPort: 3030 # internal port on which your Spring Boot app is running
nodePort: 31504
노드 포트로 만들었기 때문에 쿠버네티스 IP:31504로 접속하면 배포된 화면을 확인할 수 있습니다.
쿠버네티스 url은 kops를 실행했던 EC2에서 vi ~/.kube/config를 통해 kubeconfig를 조회해서 알 수 있습니다.
'쿠버네티스,AWS,JPA,CICD,MSA사이드프로젝트' 카테고리의 다른 글
로컬 환경에서 MSA 서비스 구축하기 (0) | 2023.03.24 |
---|---|
쿠버네티스로 DevOps 구현 - 3-4. 젠킨스 파이프라인과 ArgoCD 연동 (0) | 2023.03.01 |
쿠버네티스로 DevOps 구현 - 3-2. 젠킨스 설치 및 젠킨스 빌드 파이프라인 구축(배포 자동화) gradle build부터 도커 push까지 (0) | 2023.03.01 |
쿠버네티스로 DevOps 구현 - 3-1. 젠킨스 설치 및 젠킨스 빌드 파이프라인 구축(배포 자동화) 젠킨스 환경 구축하기 (0) | 2023.02.28 |
AWS 클라우드 EC2 서버 탄력적 IP 설정 및 해제 (0) | 2023.02.28 |