반응형
설치
https://argo-cd.readthedocs.io/en/stable/cli_installation/
curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
chmod +x /usr/local/bin/argocd
wget https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
mv argocd-linux-amd64 /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd
기본 설정
https://medium.com/finda-tech/eks-cluster%EC%97%90-argo-cd-%EB%B0%B0%ED%8F%AC-%EB%B0%8F-%EC%84%B8%ED%8C%85%ED%95%98%EB%8A%94-%EB%B2%95-eec3bef7b69b
PASSWORD=`kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d`
ARGOCD_SERVER_HOST=`kubectl get svc argocd-server -o json -n argocd | jq -r '.status.loadBalancer.ingress[0].hostname'`
argocd login <ARGOCD_SERVER_HOST>:80 --grpc-web
# AWS EKS 혹은 HTTP2/gRPC 프로토콜을 완벽히 지원해 주지 않는 로드밸런서만 해당
argocd 커맨드라인 인터페이스는 HTTP2/gRPC 프로토콜을 통해 통신하므로
로드밸런서 혹은 외부 통신을 담당하는 라우터가 HTTP2/gRPC 프로토콜을 완벽히 지원해야함.
하지만 AWS에서 제공하는 ALB 혹은 Classic LB는 HTTP2/gRPC 프로토콜을 완벽하게 지원하지 않기 때문에
--grpc-web 이라는 옵션을 추가적으로 붙여줘야 함.
계정 생성
https://medium.com/geekculture/create-a-new-user-in-argocd-using-the-cli-and-configmap-8cbb27cf5904
argocd account list
# 기존 계정 확인
kubectl edit configmap argocd-cm -n argocd
data:
accounts.<new-username>: apiKey, login
# 위 데이터를 추가해 계정을 생성한다.
argocd account update-password --account <new-username> --new-password <new-password>
*** Enter password of currently logged in user (admin):
or
argocd account update-password --account <new-username> --new-password <new-password> --current-password <admin-password>
계정 권한 설정
https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/
https://faun.pub/create-argo-cd-local-users-9e830db3763f
kubectl edit configmap argocd-rbac-cm -n argocd
or
kubectl get configmap argocd-rbac-cm -n argocd -o yaml > argocd-rbac.yml
# yaml 파일로 관리
data:
policy.default: role:readonly # 기본권한으로 readonly 설정
policy.csv: |
p, role:qa, applications, *, */*, allow # qa 역할은 applications 에 모든 권한 허용
p, role:dev, applications, *, */*, allow
p, role:dev, projects, *, *, allow
p, role:dev, repositories, *, *, allow
g, adminuser, role:admin # adminuser 에게 admin 역할 부여
g, devuser, role:dev # devuser 에게 dev 역할 부여
g, qauser, role:qa # qauser 에게 qa 역할 부여
위와 같이 역할에 각 기능에 대한 권한을 설정하고
계정에 대해서 역할을 설정해주도록 한다.
config:
# Argo CD's externally facing base URL (optional). Required when configuring SSO
accounts.qauser: apiKey, login
accounts.devuser: apiKey, login
accounts.adminuser: apiKey, login
.....
rbacConfig:
policy.default: role:readonly
#{}
# policy.csv is an file containing user-defined RBAC policies and role definitions (optional).
# Policy rules are in the form:
# p, subject, resource, action, object, effect
# Role definitions and bindings are in the form:
# g, subject, inherited-subject
# See https://github.com/argoproj/argo-cd/blob/master/docs/operator-manual/rbac.md for additional information.
policy.csv: |
p, role:qa, applications, *, */*, allow
p, role:dev, applications, *, */*, allow
p, role:dev, projects, *, *, allow
p, role:dev, repositories, *, *, allow
g, adminuser, role:admin
g, devuser, role:dev
g, qauser, role:qa
위는 helm의 values.yaml 파일 설정시 계정과 권한 설정을 한번에 가능하다고 한다.
반응형
'Kubernetes' 카테고리의 다른 글
Schedule pod on master (0) | 2023.03.17 |
---|---|
K8S - On prem Install (0) | 2023.03.17 |
Namespace - Terminating (0) | 2022.01.01 |
AWS load balancer controller on Fargate - CrashLoopBackOff (0) | 2021.12.28 |
Docker network (0) | 2021.12.20 |