티스토리 뷰

728x90

ArgoCD 계정 등록하고 새로운 클러스터를 등록하고 신규 프로젝트 생성 후 앱 생성까지 한다.

728x90


1. Kube Config 설정

우선 kubectl 을 실행하기 위해서 클러스터에 접근해야 한다.
클러스터에 접근하는 방법은 $HOME/.kube 에서 config 라는 이름의 파일을 kubeconfig 파일로 사용하여 접근할 수 있다.

export KUBECONFIG=$HOME/.kube/study.config

 



2. kubeconfig 설정 확인

kubectl get namespace
> 정상 출력 확인

 



3. 계정 생성

우선 계정을 argocd 라는 이름의 Namespace 에 있는 argocd-cm 라는 이름의 Config Map에 등록한다.
계정에는 login 권한과 argocd 를 cmd에서 실행할 수 있는 권한인 apiKey 권한을 부여한다.
실제 운영 상황에서는 apiKey 권한을 개발자에게 부여하면 안되기 때문에 sync 전용 계정을 만들어서 해당 계정에 부여한다.

kubectl edit cm -n argocd argocd-cm -o yaml
apiVersion: v1
data:
  accounts.hyun: apiKey,login
  accounts.hyun_sync: apiKey # sync 전용 계정


4. 계정 비밀번호 설정 및 Token 생성

관리자 계정으로 로그인 후, 새로 생성한 hyun 계정의 비밀번호를 설정한다.
또한 cmd에서 사용하거나  jenkins에서 Credentials로 등록하여 사용하기 위해 apiKey 권한이 있는 계정으로 Token을 발급 받는다.

argocd login argocd.hyun.xyz --grpc-web --username 'adminname' --password 'password' --insecure
argocd account update-password --account 'hyun' --new-password 'hyun1234'
argocd account generate-token --account hyun --id hyun_sync-token


5. 새로 등록한 계정으로 웹 화면이나 cmd에서 로그인 후, 정상 작동 확인한다.

6. 계정 권한 설정


신규 등록한 계정의 접근 권한을 설정한다.
개발 환경에서는 모든 리소스에 대해 접근이 가능하지만 운영 환경에서는 내부 규정에 따라 접근이 제한되는 경우도 있다.

kubectl edit cm -n argocd argocd-rbac-cm -o yaml
apiVersion: v1
data:
  policy.csv: |
    g, adminname, role:admin

    p, role:hyun, clusters,  get, https://10.12.34.56:6443, allow
    p, role:hyun, clusters,  get, https://10.78.90.12:6443, allow
    p, role:hyun, applications,  *, hyun-*, allow
#    p, role:hyun, applications,  get, hyun-*, allow # 운영 환경에서는 create 제한
    p, role:hyun, logs,  get, hyun-*, allow
    p, role:hyun, projects,  get, hyun-*, allow
    p, role:hyun, repositories,  get, http://bitbucket.hyun.com/scm/hyun/*, allow
    g, hyun, role:hyun



7. Cluster 추가 등록

Cluster를 등록한다.
이 때, 해당 클러스터에 ArgoCD 접근을 위한 ServiceAccount, ClusterRole, ClusterRoleBinding이 생성되어 아래와 같이 확인을 요청한다.
만약 timeout 에러가 발생했다면, 방화벽 문제가 발생했을 수도 있기 때문에 해당 부분을 확인해야한다.

argocd cluster add hyun-01-cluster --kubeconfig $HOME/.kube/hyun-01.config --grpc-web
WARNING: This will create a service account `argocd-manager` on the cluster referenced by context hyun-01-cluster with full cluster level admin privileges. Do you want to continue [y/N]? y
INFO[0012] ServiceAccount "argocd-manager" already exists in namespace "kube-system"
INFO[0013] ClusterRole "argocd-manager-role" updated
INFO[0013] ClusterRoleBinding "argocd-manager-role-binding" updated
Cluster 'https://10.11.33.55:6443' added



8. 등록한 Cluster 확인

웹에서 Settings > Clusters 에서 확인해보면 처음에는 CONNECTIONS STATUS가 "Unknown" 이지만 해당 Cluster를 사용하는 Application이 생긴다면 "Successful"로 바뀐다.

9. Repository 등록

배포 대상인 Kubernetes의 Manifest 파일이 있는 Repository를 등록한다.

argocd repo add http://bitbucket.hyun.com/scm/hyun/argocd-yaml.git --username hyun --password 'hyun1234' --insecure-skip-server-verification



10. Project 등록

앞으로 사용할 Project를 등록한다.

argocd proj create hyun01 --description '첫 번째 ARGOCD 프로젝트' --dest https://10.11.33.55:6443,* --src http://bitbucket.hyun.com/scm/hyun/*



11. Application 등록

생성한 Project에 사용할 Application을 등록한다.
여기서 만약 배포를 신중하게 또는 Git Action과 다르게 수동으로 할 예정이라면, sync-policy를 none으로 맞춰야한다. default는 auto sync 이다.

argocd app create hyun-frontend --project hyun01 --repo http://bitbucket.hyun.com/scm/hyun/argocd-yaml.git --revision master --path argocd/prd --dest-name hyun-01-cluster --dest-namespace devops --sync-policy none --label env=prd --grpc-web
728x90

'CI CD > ArgoCD' 카테고리의 다른 글

AWS NLB를 활용하여 EKS에 고정 IP 할당  (2) 2024.01.03
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크