OpenShift GitOps: ArgoCD 권한과 Application 등록을 운영 기준으로 정리
OpenShift GitOps Operator에서 ArgoCD RBAC, 그룹 권한, Repository 연결, Application YAML 등록을 운영 흐름으로 정리했습니다.
OpenShift GitOps는 ArgoCD를 설치하는 것으로 끝나지 않습니다. 운영 기준에서는 누가 접근할 수 있는지, 어떤 권한으로 동기화하는지, 어떤 Git 저장소와 어떤 namespace를 대상으로 삼는지 먼저 정리해야 합니다.
1. ArgoCD RBAC ConfigMap부터 확인한다
oc -n openshift-gitops get cm argocd-rbac-cm -o yaml
oc -n openshift-gitops get argocd
oc -n openshift-gitops get pods
oc -n openshift-gitops get route2. 그룹을 만들고 필요한 권한만 연결한다
ArgoCD 사용자를 바로 cluster-admin처럼 다루지 말고 배포 대상 namespace와 운영 역할을 나눕니다.
apiVersion: user.openshift.io/v1
kind: Group
metadata:
name: gitops-admins
users:
- adminoc apply -f gitops-admins.yaml
oc adm policy add-cluster-role-to-group admin gitops-admins
oc adm policy add-cluster-role-to-user admin \
-z openshift-gitops-argocd-application-controller \
-n openshift-gitops3. Repository 연결은 secret과 권한 범위를 같이 본다
Repository를 연결할 때는 URL만 넣고 끝내면 안 됩니다. 인증 secret, CA, 프록시, read-only token 여부를 같이 봐야 합니다.
oc -n openshift-gitops get secret | grep -i repo
oc -n openshift-gitops describe secret <repo-secret-name>
oc -n openshift-gitops logs deploy/openshift-gitops-repo-server --tail=1004. Application은 YAML로 남긴다
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: sample-app
namespace: openshift-gitops
spec:
project: default
source:
repoURL: https://git.example.com/platform/sample-app.git
targetRevision: main
path: overlays/prod
destination:
server: https://kubernetes.default.svc
namespace: sample-prod
syncPolicy:
automated:
prune: false
selfHeal: true5. 장애는 repo-server, controller, target namespace 순서로 본다
oc -n openshift-gitops get applications.argoproj.io
oc -n openshift-gitops describe application sample-app
oc -n openshift-gitops logs deploy/openshift-gitops-repo-server --tail=200
oc -n openshift-gitops logs deploy/openshift-gitops-application-controller --tail=200
oc -n sample-prod get events --sort-by=.lastTimestamp정리
OpenShift GitOps 운영은 ArgoCD 화면을 여는 일이 아니라 RBAC, repository credential, Application YAML, target namespace 권한, sync 정책을 한 세트로 관리하는 일입니다.