[ArgoCD] k8s cluster와 연동하는법 [배스천 서버 Nodeport]
Admin 비밀번호
해당 방법을 실행하기 전에 argocd 의 admin계정 password를 알고 있어야 한다
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
해당 명령어를 통해 decode된 admin의 initial password를 확인할 수 있다
적용할 클러스터 찾기
kubectl config get-contexts
출력 예시

위와 같은 정보가 나오는데 우리는 여기서 NAME에 해당하는 부분으코 클러스터를 추가할 것이다
방법 1 : Argocd 파드 내부에서 cluster Add
kubectl exec -it <pod:argocd-server> bash
먼저 argocd 파드 내부로 접속한다
argocd login localhost:<컨테이너포트>
Username : admin
Password : decode한 비밀번호
argocd server가 가동되고 있는 파드 내부에서 서버에 접속하는 것이니 url이 아니라 localhost:포트번호로 바로 찔러주면 된다
argocd cluster add my-cluster-context

클러스터가 추가된 것을 확인해볼 수 있다.
트러블 슈팅
FATA[0004] mkdir /.config: read-only file system
파드에 접속할 때 파일에 Write 권한이 없는 ID로 접속되어서 해당 문제가 발생했다
argocd-server deployment 수정
kubectl edit deployment argocd-server
argocd-server deployment
spec:
template:
spec:
containters:
- name: argocd-server
securityContext:
runAsUser: 0
runAsGroup: 0
deployment의 해당하는 부분에서 root 권한으로 실행되도록 변경해준다
pv pvc를 마운트하여 쓰기가 가능한 디렉토리를 설정할 수도 있다.
방법 2: 배스천 서버에서 cluster Add
방법 1이 되지 않는 경우 배스천 서버에서 cluster add하는 방법이다. 배스천 서버에서 파일
배스천 서버에서 argocd 가 설치가 안될경우
1. argocd 파일 다운로드
curl -sSL -o argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
curl을 통해 바이너리 파일을 다운로드 받는다
2. 실행 권한 부여
chmod +x argocd
다운로드한 바이너리 파일에 실행권한을 부여한다
3. 경로에서 바이너리 파일 실행
./argocd <argocd_command>
앞으로 해당 경로에서 argocd를 실행할 수 있다
배스천 서버에서 argocd login
./argocd login <argocd url> # http 제거해야 한다
Username : admin
Password : decode한 비밀번호
./argocd cluster add my-cluster-context # 위의 cluster name
해당 명령어 후 Y를 입력하면
argocd-manager라는 Service account가 kube-system namespace에 생성되면서 argocd가 cluster에 대한 접근권한을 얻게된다
트러블 슈팅
FATA{0000] dial tcp: address tcp///intern-argocd.~~~도메인~~~/: unknown port
url로 로그인을 시도했으나 온프레미스 DNS에서 포트를 반환하지 못하는 경우이다
실수로 http://도메인에서 http를 제거하지 않아 난 오류였지만 Nodeport를 사용해보는 경험이 되었다.
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: my-namespace
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
nodePort: 30007 # 원하는 NodePort 포트 번호
type: NodePort
argocd-server로 연결해주는 svc에서 노드포트를 열어준다
출력 예시

포트에서 노드포트가 열린것을 볼 수 있다.
./argocd login 클러스터IP:노드포트
후에 로그인 되면 위의 과정을 진행하면 접속할 수 있다
출력 예시
