참고
ArgoCD 사용자
NOTE
ArgoCD 사용자의 목적은 사용자별로 ArcoCD 권한을 제한할 수 있다!
최초 설치시 admin 유저만 생성되어 있으며, 이후 local user와 SSO user로 분리된다.
k edit cm argocd-cm -n argocd # argoCD에 gitops 계정추가
k get po -n argocd
k exec -it argocd-server-6fb784db69-6vwxf -n argocd -- /bin/bash
argocd login 127.0.0.1:8080 --insecure # id/password 입력
argocd account list # 사용자 리스트
argocd account update-password --account gitops --new-password abcde12345 # 패스워드 업데이트
Bash
복사
gitops 계정생성 과정
apiVersion: v1
kind: ConfigMap
data:
accounts.gitops: apiKey,login # gitops 계정생성
accounts.gitops.enable: "true"
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-cm","namespace":"argocd"}}
creationTimestamp: "2023-12-20T17:57:36Z"
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
name: argocd-cm
namespace: argocd
resourceVersion: "11108"
uid: 40812d68-12a3-4012-a4ce-0d074ae3e851
YAML
복사
argocd-cm
ArgoCD RABC
NOTE
RABC(Role-Based-Access-Control)이란 리소스에 대한 액세스 권한을 부여하고 관리하는 보안 제어 접근방식이다!
기본 계정은 admin이고, 이외에는 SSO나 유저를 추가하는 방식으로 RABC 적용
RABC 리소스
•
Cluster, Project, applications, repositories, accounts, logs …
RABC 액션
•
create, update, delete, get, sync, override …
RABC 권한의 경우 argocd-rabc-cm 컨피그맵에서 설정한다.
apiVersion: v1
data:
policy.csv: |
p, role:gitops-role, applications, *, */*, allow
p, role:gitops-role, clusters, update, *, allow
p, role:gitops-role, clusters, get, *, allow
p, role:gitops-role, repositories, update, *, allow
p, role:gitops-role, repositories, get, *, allow
p, role:gitops-role, projects, update, *, allow
p, role:gitops-role, projects, get, *, allow
p, role:gitops-role, logs, get, *, allow
g, gitops, role:gitops-role
policy.default: role:readonly
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-rbac-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-rbac-cm","namespace":"argocd"}}
creationTimestamp: "2023-12-20T17:57:36Z"
labels:
app.kubernetes.io/name: argocd-rbac-cm
app.kubernetes.io/part-of: argocd
name: argocd-rbac-cm
namespace: argocd
resourceVersion: "909671"
uid: 52f7f6f0-25ce-4f48-9e2b-f11e0df008f5
YAML
복사
gitops계정이 이제 정상적으로 모든 정보를 확인할 수 있다.
ArgoCD SSO(Single Sign-On)
NOTE
SSO는 한번의 로그인으로 다른 여러 사이트들을 자동으로 접속하여 이용하는 방식이다.
ArgoCD는 다양한 외부 시스템과 연동이 가능하지만, GitOps 툴인만큼 GitHub 계정을 통해 인증을 구성하는 것이 일반적이다.
k edit cm argocd-cm -n argocd
Bash
복사
SSO 방식 추가
apiVersion: v1
data:
accounts.gitops: apiKey,login
accounts.gitops.enable: "true"
dex.config: |
connectors:
- type: github
id: github
name: GitHub
config:
clientID: [공개 키]
clientSecret: [비밀 키]
orgs:
- name: gitops-course-bohyeon
url: http://k8s-argocd-argocd-801d63f0bf-1820277946.ap-northeast-2.elb.amazonaws.com
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-cm","namespace":"argocd"}}
creationTimestamp: "2023-12-20T17:57:36Z"
labels:
app.kubernetes.io/name: argocd-cm
app.kubernetes.io/part-of: argocd
name: argocd-cm
namespace: argocd
resourceVersion: "917000"
uid: 40812d68-12a3-4012-a4ce-0d074ae3e851
YAML
복사
sso 설정
apiVersion: v1
data:
policy.csv: |
p, role:gitops-role, applications, *, */*, allow
p, role:gitops-role, clusters, update, *, allow
p, role:gitops-role, clusters, get, *, allow
p, role:gitops-role, repositories, update, *, allow
p, role:gitops-role, repositories, get, *, allow
p, role:gitops-role, projects, update, *, allow
p, role:gitops-role, projects, get, *, allow
p, role:gitops-role, logs, get, *, allow
g, gitops, role:gitops-role
p, role:org-admin, applications, *, */*. allow
p, role:otg-admin, clusters, get, *, allow
p, role:org-admin, repositories, get, *, allow
p, role:org-admin, repositories, update, *, allow
p, role:org-admin, repositories, delete, *, allow
p, role:org-admin, projects, get, *, allow
p, role:org-admin, projects, create, *, allow
p, role:org-admin, projects, update, *, allow
p, role:org-admin, projects, delete, *, allow
p, role:org-admin, logs, get, *, allow
p, role:org-admin, exec, create, *, allow
g, gitops-course-bohyeon:gitops, role:org-admin
policy.default: role:readonly
kind: ConfigMap
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"v1","kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"argocd-rbac-cm","app.kubernetes.io/part-of":"argocd"},"name":"argocd-rbac-cm","namespace":"argocd"}}
creationTimestamp: "2023-12-20T17:57:36Z"
labels:
app.kubernetes.io/name: argocd-rbac-cm
app.kubernetes.io/part-of: argocd
name: argocd-rbac-cm
namespace: argocd
resourceVersion: "909671"
uid: 52f7f6f0-25ce-4f48-9e2b-f11e0df008f5
YAML
복사
sso 권한추가
github 연동 로그인 생김