티스토리 뷰

ArgoCD 공식 문서

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를 조회해서 알 수 있습니다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함