Argo CD CRD
Repository
repository
Secret에 모든 정보를 선언하는 방식과 repository
Secret에 type
, url
만 선언하고 repo-creds
Secret에 인증 정보만 선언하는 방식이 있습니다.
apiVersion: v1
kind: Secret
metadata:
name: github-<user>-<repository>-repo
namespace: argo-cd
labels:
argocd.argoproj.io/secret-type: repository
type: Opaque
stringData:
type: git
url: <ssh>:<user>/<repository>.git
# url: <url>/<user>/<repsitory>
# username: <username>
# password: <password>
# sshPrivateKey: <sshPrivateKey>
apiVersion: v1
kind: Secret
metadata:
name: github-<user>-creds
namespace: argo-cd
labels:
argocd.argoproj.io/secret-type: repo-creds
type: Opaque
stringData:
type: git
# <repsitory>는 선언하지 않습니다.
url: <ssh>:<user>
# url: <url>/<user>
# username: <username>
# password: <password>
# sshPrivateKey: <sshPrivateKey>
SSH
아래 명령어를 통해 SSH 키를 생성한 후, Public 키를 GitHub SSH 키에 추가합니다.
ssh-keygen -t ed25519 -N "" -C "[email protected]" -f argocd
apiVersion: v1
kind: Secret
metadata:
name: github-<user>-creds
namespace: argo-cd
labels:
argocd.argoproj.io/secret-type: repo-creds
type: Opaque
stringData:
type: git
url: [email protected]:<user>
sshPrivateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
Cluster
External
원격으로 제어하고 싶은 클러스터에 아래와 같이 ServiceAccount를 생성해주세요. 예시는 Admin 권한이 부여된 상태이기 때문에 보안을 위해 권한을 제한해서 부여해주세요.
apiVersion: v1
kind: ServiceAccount
metadata:
name: argocd-manager
namespace: kube-system
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: argocd-manager-role
rules:
- apiGroups:
- "*"
resources:
- "*"
verbs:
- "*"
- nonResourceURLs:
- "*"
verbs:
- "*"