프라이빗 저장소

프라이빗 저장소 (Private Repositories)

애플리케이션 매니페스트가 프라이빗 저장소에 있다면 저장소 자격 증명을 구성해야 합니다. Argo CD는 HTTPS와 SSH 둘 다의 Git 자격 증명을 지원합니다. 인증 방법, 자격 증명 템플릿, 자체 서명 TLS 인증서, 알 수 없는 SSH 호스트 처리 방법을 다룹니다.

출처: 문서

본문

프라이빗 저장소

참고: 일부 Git 호스터(특히 GitLab과 온프레미스 GitLab 인스턴스)는 저장소 URL에 .git 접미사를 지정하도록 요구합니다. 그렇지 않으면 .git 접미사가 붙은 저장소 URL로 HTTP 301 리다이렉트를 보냅니다. Argo CD는 이러한 리다이렉트를 따르지 않으므로 저장소 URL이 .git 접미사로 끝나도록 수정해야 합니다.

자격 증명

애플리케이션 매니페스트가 프라이빗 저장소에 있다면 저장소 자격 증명을 구성해야 합니다. Argo CD는 HTTPS와 SSH 둘 다의 Git 자격 증명을 지원합니다.

HTTPS 사용자 이름 및 비밀번호 자격 증명

사용자 이름과 비밀번호가 필요한 프라이빗 저장소는 보통 git@이나 ssh:// 대신 https://로 시작하는 URL을 갖습니다.

자격 증명은 Argo CD CLI로 구성할 수 있습니다:

argocd repo add https://github.com/argoproj/argocd-example-apps --username <username> --password <password>

또는 UI로:

  • Settings/Repositories로 이동하세요.
  • Connect Repo using HTTPS 버튼을 클릭하고 자격 증명을 입력하세요.

참고: 스크린샷의 사용자 이름은 예시일 뿐이며, 이 GitHub 계정이 존재하더라도 우리와 관계가 없습니다.

  • 연결을 테스트하고 저장소가 추가되도록 Connect를 클릭하세요.
액세스 토큰

사용자 이름과 비밀번호 대신 액세스 토큰을 사용할 수도 있습니다. Git 호스팅 서비스의 지침을 따라 토큰을 생성하세요:

  • GitHub
  • GitLab
  • Bitbucket
  • Azure Repos

그런 다음 비어 있지 않은 문자열을 사용자 이름으로, 액세스 토큰 값을 비밀번호로 사용해 저장소를 연결하세요.

참고: 일부 서비스에서는 아무 문자열 대신 계정 이름을 사용자 이름으로 지정해야 할 수 있습니다.

참고: BitBucket Cloud와 BitBucket Data Center의 경우 사용자 이름을 x-token-auth 로 지정해야 합니다.

HTTPS 저장소용 TLS 클라이언트 인증서

저장소 서버가 인증에 TLS 클라이언트 인증서를 요구한다면 Argo CD 저장소가 이를 사용하도록 구성할 수 있습니다. 이를 위해 argocd repo add 명령에 --tls-client-cert-path--tls-client-cert-key-path 스위치를 사용해 클라이언트 인증서와 해당 키가 들어 있는 로컬 시스템의 파일을 각각 지정할 수 있습니다:

argocd repo add https://repo.example.com/repo.git --tls-client-cert-path ~/mycert.crt --tls-client-cert-key-path ~/mycert.key

물론 저장소 서버가 요구한다면 이를 --username--password 스위치와 결합해 사용할 수도 있습니다. --tls-client-cert-path--tls-client-cert-key-path 옵션은 항상 함께 지정해야 합니다.

TLS 클라이언트 인증서와 해당 키는 UI에서도 구성할 수 있습니다. HTTPS를 사용해 Git 저장소를 추가하는 지침을 참조하세요.

참고: 클라이언트 인증서와 키 데이터는 PEM 형식이어야 합니다. 다른 형식(PKCS12 등)은 지원되지 않습니다. 또한 인증서의 키가 비밀번호로 보호되지 않도록 하세요. 그렇지 않으면 Argo CD가 사용할 수 없습니다.

참고: 웹 UI의 텍스트 영역에 TLS 클라이언트 인증서와 키를 붙여넣을 때 의도치 않은 줄 바꿈이나 추가 문자가 없는지 확인하세요.

SSH 개인 키 자격 증명

SSH 개인 키가 필요한 프라이빗 저장소는 보통 https:// 대신 git@ssh://로 시작하는 URL을 갖습니다.

CLI 또는 UI를 사용해 Git 저장소를 SSH로 구성할 수 있습니다.

참고: Argo CD 2.4는 OpenSSH 8.9로 업그레이드했습니다. OpenSSH 8.8은 ssh-rsa SHA-1 키 서명 알고리즘 지원을 제거했습니다. SSH 서버가 Argo CD와 호환되는지 테스트하고 새 알고리즘을 지원하지 않는 서버를 우회하는 방법에 대한 자세한 내용은 2.3 to 2.4 업그레이드 가이드를 참조하세요.

CLI 사용:

argocd repo add [email protected]:argoproj/argocd-example-apps.git --ssh-private-key-path ~/.ssh/id_rsa

UI 사용:

  • Settings/Repositories로 이동하세요.
  • Connect Repo using SSH 버튼을 클릭하고 URL을 입력한 다음 SSH 개인 키를 붙여넣으세요.
  • 연결을 테스트하고 저장소가 추가되도록 Connect를 클릭하세요.

참고: UI에 SSH 개인 키를 붙여넣을 때 텍스트 영역에 의도치 않은 줄 바꿈이나 추가 문자가 없는지 확인하세요.

참고: SSH 저장소가 비표준 포트에서 서비스될 때는 저장소를 지정하기 위해 ssh:// 스타일 URL을 사용해야 합니다. scp 스타일의 [email protected]:yourrepo URL은 포트 지정을 지원하지 않으며, 포트 번호를 저장소 경로의 일부로 취급합니다.

GitHub App 자격 증명

GitHub.com 또는 GitHub Enterprise에서 호스팅되는 프라이빗 저장소는 GitHub 애플리케이션의 자격 증명을 사용해 접근할 수 있습니다. 애플리케이션 생성 방법은 GitHub 문서를 참조하세요.

참고: 애플리케이션이 저장소의 Contents에 대해 최소한 읽기 전용 권한을 갖도록 하세요. 이것이 최소 요구 사항입니다.

CLI 또는 UI를 사용해 GitHub App 방식으로 GitHub.com 또는 GitHub Enterprise에서 호스팅되는 Git 저장소에 대한 접근을 구성할 수 있습니다.

CLI 사용:

argocd repo add https://github.com/argoproj/argocd-example-apps.git --github-app-id 1 --github-app-installation-id 2 --github-app-private-key-path test.private-key.pem

참고: CLI로 GitHub Enterprise의 프라이빗 Git 저장소를 추가하려면 --github-app-enterprise-base-url https://ghe.example.com/api/v3 플래그를 추가하세요.

참고: --github-app-installation-id 플래그는 선택 사항입니다. 생략하면 Argo CD가 저장소의 조직을 기반으로 설치 ID를 자동으로 찾습니다.

UI 사용:

  • Settings/Repositories로 이동하세요.
  • Connect Repo using GitHub App 버튼을 클릭하고 유형: GitHub 또는 GitHub Enterprise를 선택한 다음 URL, App Id, Installation Id(선택), 앱의 개인 키를 입력하세요.
  • GitHub Enterprise 유형에 대해서는 GitHub Enterprise Base URL을 입력하세요.
  • 연결을 테스트하고 저장소가 추가되도록 Connect를 클릭하세요.

참고: UI에 GitHub App 개인 키를 붙여넣을 때 텍스트 영역에 의도치 않은 줄 바꿈이나 추가 문자가 없는지 확인하세요.

Google Cloud Source

Google Cloud Source에서 호스팅되는 프라이빗 저장소는 JSON 형식의 Google Cloud 서비스 계정 키를 사용해 접근할 수 있습니다. 서비스 계정 생성 방법은 Google Cloud 문서를 참조하세요.

참고: 애플리케이션이 Google Cloud 프로젝트에 대해 최소한 Source Repository Reader 권한을 갖도록 하세요. 이것이 최소 요구 사항입니다.

CLI 또는 UI를 사용해 Google Cloud Source에서 호스팅되는 Git 저장소에 대한 접근을 구성할 수 있습니다.

CLI 사용:

argocd repo add https://source.developers.google.com/p/my-google-cloud-project/r/my-repo --gcp-service-account-key-path service-account-key.json

UI 사용:

  • Settings/Repositories로 이동하세요.
  • Connect Repo using Google Cloud Source 버튼을 클릭하고 URL과 JSON 형식의 Google Cloud 서비스 계정을 입력하세요.
  • 연결을 테스트하고 저장소가 추가되도록 Connect를 클릭하세요.

Azure Workload Identity를 사용한 Azure Container Registry/Azure Repos

이 기능을 사용하기 전에 Argo CD에서 workload identity 구성을 활성화하기 위해 다음 단계를 수행해야 합니다:

  • Pod 라벨 지정: repo-server 파드에 azure.workload.identity/use: "true" 라벨을 추가하세요.
  • Federated Identity Credential 생성: repo-server 서비스 계정에 대한 Azure federated identity credential을 생성하세요. 자세한 지침은 Federated Identity Credential 문서를 참조하세요.
  • 서비스 계정에 어노테이션 추가: repo-server 서비스 계정에 azure.workload.identity/client-id: "$CLIENT_ID" 어노테이션을 추가하세요. CLIENT_ID는 workload identity에서 가져옵니다.
  • ACR 권한 구성: Azure Container Registry 또는 Azure Repos에 workload identity에 필요한 권한을 부여하세요.
  • ACR 토큰 리소스 변수 설정: Argo CD repo server 환경 변수 AZURE_ARM_TOKEN_RESOURCE=https://containerregistry.azure.net를 구성해 Argo CD가 유효한 ACR 액세스 토큰을 요청할 수 있게 하세요.

Azure workload identity로 Helm OCI용 CLI 사용:

argocd repo add contoso.azurecr.io/charts --type helm --enable-oci --use-azure-workload-identity

Azure workload identity로 Azure Repos용 CLI 사용:

argocd repo add https://[email protected]/my-projectcollection/my-project/_git/my-repo --use-azure-workload-identity

UI 사용:

  • Settings/Repositories로 이동하세요.

  • + Connect Repo를 클릭하세요.

  • 연결 페이지에서:

    • Connection Method로 VIA HTTPS를 선택하세요.
    • 유형으로 git 또는 helm을 선택하세요.
    • Repository URL을 입력하세요.
    • repo 유형이 helm이면 name을 입력하세요.
    • repo 유형이 helm이면 Enable OCI를 선택하세요.
    • Use Azure Workload Identity를 선택하세요.
  • Connect를 클릭하세요.

시크릿 정의 사용:

apiVersion: v1
kind: Secret
metadata:
  name: helm-private-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: helm
  url: contoso.azurecr.io/charts
  name: contosocharts
  enableOCI: "true"
  useAzureWorkloadIdentity: "true"
---
apiVersion: v1
kind: Secret
metadata:
  name: git-private-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://[email protected]/my-projectcollection/my-project/_git/my-repo
  useAzureWorkloadIdentity: "true"

Service Principal을 사용한 Azure DevOps

Azure DevOps 저장소는 Service Principal의 자격 증명을 사용해 접근할 수 있습니다. 서비스 주체를 만들고 Azure DevOps에 대한 접근을 구성하는 방법은 Use service principals and managed identities in Azure DevOps 문서의 1, 2, 3단계를 참조하세요.

참고: 서비스 주체가 저장소를 포함한 프로젝트에 대해 최소한 Project Readers 권한을 갖도록 하세요. 이것이 최소 요구 사항입니다.

CLI 또는 UI를 사용해 Service Principal로 Azure DevOps에서 호스팅되는 Git 저장소에 대한 접근을 구성할 수 있습니다.

CLI 사용:

argocd repo add https://dev.azure.com/my-devops-organization/my-devops-project/_git/my-devops-repo --azure-service-principal-tenant-id 12345678-1234-1234-1234-123456789012 --azure-service-principal-client-id 12345678-1234-1234-1234-123456789012 --azure-service-principal-client-secret test

참고: 기본 공용 클라우드가 아닌 다른 Azure 클라우드를 사용하려면 CLI에 --azure-active-directory-endpoint https://login.microsoftonline.de 플래그를 추가하세요.

UI 사용:

  • Settings/Repositories로 이동하세요.
  • Connect Repo 버튼을 클릭하고 연결 방법: Via Azure Service Principal을 선택한 다음 URL, Tenant Id, Client Id, Client Secret, 그리고 기본 Azure 공용 클라우드를 사용하지 않는다면 Active Directory Endpoint를 입력하세요.
  • 연결을 테스트하고 저장소가 추가되도록 Connect를 클릭하세요.

자격 증명 템플릿

자격 증명 구성을 반복하지 않고 저장소 연결을 위한 템플릿 역할을 하는 자격 증명을 설정할 수도 있습니다. 예를 들어 URL 접두사 https://github.com/argoproj에 대한 자격 증명 템플릿을 설정하면, 이 URL을 접두사로 하는 모든 저장소(예: https://github.com/argoproj/argocd-example-apps)에서 자체 자격 증명이 구성되지 않은 경우 이 자격 증명이 사용됩니다.

웹 UI로 자격 증명 템플릿을 설정하려면 위에서 설명한 대로 Connect repo using SSH 또는 Connect repo using HTTPS 대화상자에서 모든 관련 자격 증명 정보를 채우되, Connect 대신 저장을 위해 Save as credential template을 선택하세요. Repository URL 필드에 전체 저장소 URL(예: https://github.com/argoproj/argocd-example-apps)이 아니라 접두사 URL(예: https://github.com/argoproj)만 입력하도록 하세요.

CLI로 자격 증명 템플릿을 관리하려면 repocreds 하위 명령을 사용하세요. 예를 들어 argocd repocreds add https://github.com/argoproj --username youruser --password yourpass는 지정된 사용자 이름/비밀번호 조합으로 URL 접두사 https://github.com/argoproj에 대한 자격 증명 템플릿을 설정합니다. repo 하위 명령과 유사하게 argocd repocreds listargocd repocreds rm 명령으로 저장소 자격 증명을 각각 나열하고 제거할 수 있습니다.

Argo CD가 주어진 저장소에 자격 증명 템플릿을 사용하려면 다음 조건이 충족되어야 합니다:

  • 저장소가 전혀 구성되지 않았거나, 구성되었다면 어떤 자격 증명 정보도 포함하지 않아야 합니다.
  • 자격 증명 템플릿에 구성된 URL(예: https://github.com/argoproj)이 저장소 URL(예: https://github.com/argoproj/argocd-example-apps)의 접두사와 일치해야 합니다.

참고: 일치하는 저장소 자격 증명이 설정된 후에만 인증이 필요한 저장소를 자격 증명 지정 없이 CLI 또는 웹 UI로 추가할 수 있습니다.

참고: 일치하는 자격 증명 템플릿 URL 접두사는 최선 일치(best match) 방식으로 수행되므로 가장 긴(최선) 일치가 우선합니다. v1.4 이전 구성과 달리 정의 순서는 중요하지 않습니다.

다음은 저장소 자격 증명 설정을 보여주는 예시 CLI 세션입니다:

# Try to add a private repository without specifying credentials, will fail
$ argocd repo add https://docker-build/repos/argocd-example-apps
FATA[0000] rpc error: code = Unknown desc = authentication required 

# Setup a credential template for all repos under https://docker-build/repos
$ argocd repocreds add https://docker-build/repos --username test --password test
repository credentials for 'https://docker-build/repos' added

# Repeat first step, add repo without specifying credentials
# URL for template matches, will succeed
$ argocd repo add https://docker-build/repos/argocd-example-apps
repository 'https://docker-build/repos/argocd-example-apps' added

# Add another repo under https://docker-build/repos, specifying invalid creds
# Will fail, because it will not use the template (has own creds)
$ argocd repo add https://docker-build/repos/example-apps-part-two --username test --password invalid
FATA[0000] rpc error: code = Unknown desc = authentication required

자체 서명 및 신뢰되지 않은 TLS 인증서

자체 서명 인증서 또는 Argo CD가 모르는 커스텀 인증 기관(CA)이 서명한 인증서를 사용하는 HTTPS 서버의 저장소에 연결하면 보안상의 이유로 저장소가 추가되지 않습니다. 이는 x509: certificate signed by unknown authority 같은 오류 메시지로 표시됩니다.

  • argocd CLI 유틸리티로 저장소를 추가할 때 --insecure-skip-server-verification 플래그를 사용하면 서버의 인증서를 전혀 검증하지 않고 ArgoCD가 저장소를 비보안 방식으로 연결하게 할 수 있습니다. 그러나 가능한 중간자 공격을 통한 심각한 보안 문제를 제기하므로 프로덕션이 아닌 설정에서만 수행해야 합니다.
  • argocd CLI 유틸리티의 cert add-tls 명령을 사용해 서버 인증서 검증을 위한 커스텀 인증서를 사용하도록 ArgoCD를 구성할 수 있습니다. 이것이 권장되는 방법이며 프로덕션에 적합합니다. 그러려면 서버 인증서 또는 서버 인증서에 서명한 CA의 인증서를 PEM 형식으로 필요로 합니다.

참고: 일치하는 서버 이름이 없거나 만료된 것 같은 잘못된 서버 인증서의 경우 CA 인증서를 추가해도 도움이 되지 않습니다. 이 경우 유일한 옵션은 --insecure-skip-server-verification 플래그를 사용해 저장소를 연결하는 것입니다. 저장소 서버에서 유효한 인증서를 사용하거나 서버 관리자에게 잘못된 인증서를 유효한 것으로 교체하도록 강력히 권합니다.

참고: TLS 인증서는 저장소별이 아니라 서버별로 구성됩니다. 같은 서버에서 여러 저장소를 연결한다면 이 서버에 대해 인증서를 한 번만 구성하면 됩니다.

참고: argocd cert 명령이 수행한 변경 사항이 클러스터 전체에 전파되는 데는 Kubernetes 설정에 따라 최대 몇 분이 걸릴 수 있습니다.

CLI로 TLS 인증서 관리

argocd cert list 명령을 --cert-type https 수정자와 함께 사용해 구성된 모든 TLS 인증서를 나열할 수 있습니다:

$ argocd cert list --cert-type https
HOSTNAME      TYPE   SUBTYPE  FINGERPRINT/SUBJECT
docker-build  https  rsa      CN=ArgoCD Test CA
localhost     https  rsa      CN=localhost

서버의 인증서를 검증하지 않고 HTTPS 저장소를 ArgoCD에 추가하는 예시(주의: 프로덕션에는 권장되지 않음):

argocd repo add --insecure-skip-server-verification https://git.example.com/test-repo

파일 ~/myca-cert.pem에 포함된 CA 인증서를 추가해 저장소 서버를 제대로 검증하는 예시:

argocd cert add-tls git.example.com --from ~/myca-cert.pem
argocd repo add https://git.example.com/test-repo

서버에 대해 PEM을 여러 개 더 추가할 수도 있습니다. 입력 스트림에 연결하면 됩니다. 이는 저장소 서버가 서버 인증서를 교체하려 할 때, 아마도 다른 CA가 서명한 것으로 교체할 때 유용할 수 있습니다. 이렇게 하면 이전(현재)과 새(미래) 인증서를 공존시킬 수 있습니다. 이전 인증서가 이미 구성되어 있다면 --upsert 플래그를 사용하고 한 번에 이전과 새 인증서를 추가하세요:

cat cert1.pem cert2.pem | argocd cert add-tls git.example.com --upsert

참고: 서버의 기존 인증서를 교체하려면 cert add-tls CLI 명령에 --upsert 플래그를 사용하세요.

마지막으로 argocd cert rm 명령을 --cert-type https 수정자와 함께 사용해 TLS 인증서를 제거할 수 있습니다:

argocd cert rm --cert-type https localhost

ArgoCD 웹 UI로 TLS 인증서 관리

ArgoCD 웹 UI로 TLS 인증서를 추가하고 제거할 수 있습니다:

  • 왼쪽 탐색 창에서 "Settings"를 클릭하고 설정 메뉴에서 "Certificates"를 선택하세요.
  • 다음 페이지는 현재 구성된 모든 인증서를 나열하며 새 TLS 인증서 또는 SSH 알려진 항목을 추가하는 옵션을 제공합니다.
  • "Add TLS certificate"를 클릭하고 관련 데이터를 채운 다음 "Create"를 클릭하세요. 저장소 서버의 FQDN만(URL이 아니라) 지정하고 ----BEGIN CERTIFICATE--------END CERTIFICATE---- 줄을 포함한 TLS 인증서의 전체 PEM을 텍스트 영역에 붙여넣도록 주의하세요.
  • 인증서를 제거하려면 인증서 항목 옆의 작은 점 3개 버튼을 클릭하고 팝업 메뉴에서 "Remove"를 선택한 다음 다음 대화상자에서 제거를 확인하세요.

선언적 구성으로 TLS 인증서 관리

선언적이고 자체 관리되는 ArgoCD 설정에서도 TLS 인증서를 관리할 수 있습니다. 모든 TLS 인증서는 ConfigMap 객체 argocd-tls-certs-cm에 저장됩니다. 자세한 내용은 Operator Manual을 참조하세요.

알 수 없는 SSH 호스트

SSH를 통해 비공개 호스팅 Git 서비스를 사용한다면 다음 옵션이 있습니다:

  • 서버의 SSH 호스트 키를 전혀 검증하지 않고 argocd CLI 유틸리티로 저장소를 추가할 때 --insecure-skip-server-verification 플래그를 사용해 ArgoCD가 저장소를 비보안 방식으로 연결하게 할 수 있습니다. 그러나 가능한 중간자 공격을 통한 심각한 보안 문제를 제기하므로 프로덕션이 아닌 설정에서만 수행해야 합니다.
  • argocd CLI 유틸리티의 cert add-ssh 명령을 사용해 서버의 SSH 공개 키를 ArgoCD에 알릴 수 있습니다. 이것이 권장되는 방법이며 프로덕션에 적합합니다. 그러려면 ssh가 이해하는 known_hosts 형식의 서버 SSH 공개 호스트 키가 필요합니다. 예를 들어 ssh-keyscan 유틸리티를 사용해 서버의 공개 SSH 호스트 키를 얻을 수 있습니다.

참고: argocd cert 명령이 수행한 변경 사항이 클러스터 전체에 전파되는 데는 Kubernetes 설정에 따라 최대 몇 분이 걸릴 수 있습니다. [!NOTE] known_hosts 파일에서 SSH known hosts 키를 가져올 때 입력 데이터의 호스트 이름이나 IP 주소가 해시되어 있으면 안 됩니다. known_hosts 파일에 해시된 항목이 있으면 CLI와 UI 모두에서 SSH known hosts 추가를 위한 입력 소스로 사용할 수 없습니다. 해시된 known hosts 데이터를 반드시 사용하고 싶다면 유일한 옵션은 선언적 설정을 사용하는 것입니다(아래 참조). 이렇게 하면 CLI와 UI 인증서 관리가 깨지므로 일반적으로 권장되지 않습니다.

CLI로 SSH Known Hosts 관리

argocd cert list 명령을 --cert-type ssh 수정자와 함께 사용해 구성된 모든 SSH known host 항목을 나열할 수 있습니다:

$ argocd cert list --cert-type ssh
HOSTNAME                 TYPE  SUBTYPE              FINGERPRINT/SUBJECT
bitbucket.org            ssh   ssh-rsa              SHA256:46OSHA1Rmj8E8ERTC6xkNcmGOw9oFxYr0WF6zWW8l1E
github.com               ssh   ssh-rsa              SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s
gitlab.com               ssh   ecdsa-sha2-nistp256  SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw
gitlab.com               ssh   ssh-ed25519          SHA256:eUXGGm1YGsMAS7vkcx6JOJdOGHPem5gQp4taiCfCLB8
gitlab.com               ssh   ssh-rsa              SHA256:ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz/EQ
ssh.dev.azure.com        ssh   ssh-rsa              SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og
vs-ssh.visualstudio.com  ssh   ssh-rsa              SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og

SSH known host 항목을 추가하려면 argocd cert add-ssh 명령을 사용할 수 있습니다. --from <file> 수정자를 사용해 파일에서 추가하거나, --batch 수정자가 지정된 경우 stdin을 읽어 추가할 수 있습니다. 두 경우 모두 입력은 OpenSSH 클라이언트가 이해하는 known_hosts 형식이어야 합니다.

ssh-keyscan이 수집한 서버에 대한 모든 사용 가능한 SSH 공개 호스트 키를 ArgoCD에 추가하는 예시:

ssh-keyscan server.example.com | argocd cert add-ssh --batch 

기존 known_hosts 파일을 ArgoCD로 가져오는 예시:

argocd cert add-ssh --batch --from /etc/ssh/ssh_known_hosts

마지막으로 SSH known host 항목은 argocd cert rm 명령을 --cert-type ssh 수정자와 함께 사용해 제거할 수 있습니다:

argocd cert rm bitbucket.org --cert-type ssh

주어진 호스트에 대해 서로 다른 키 하위 유형의 SSH known host 항목이 여러 개 있고(위 예시의 gitlab.com처럼 ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256 하위 유형의 키가 있는 경우) 그중 하나만 제거하려면 --cert-sub-type 수정자로 선택을 더 좁힐 수 있습니다:

argocd cert rm gitlab.com --cert-type ssh --cert-sub-type ssh-ed25519

ArgoCD 웹 UI로 SSH known hosts 데이터 관리

ArgoCD 웹 UI로 SSH known hosts 항목을 추가하고 제거할 수 있습니다:

  • 왼쪽 탐색 창에서 "Settings"를 클릭하고 설정 메뉴에서 "Certificates"를 선택하세요.
  • 다음 페이지는 현재 구성된 모든 인증서를 나열하며 새 TLS 인증서 또는 SSH 알려진 항목을 추가하는 옵션을 제공합니다.
  • "Add SSH known hosts"를 클릭하고 다음 마스크에 SSH known hosts 데이터를 붙여넣으세요. 중요: 데이터를 붙여넣을 때 항목(키 데이터)에 줄 바꿈이 없는지 확인하세요. 그런 다음 "Create"를 클릭하세요.
  • 인증서를 제거하려면 인증서 항목 옆의 작은 점 3개 버튼을 클릭하고 팝업 메뉴에서 "Remove"를 선택한 다음 다음 대화상자에서 제거를 확인하세요.

선언적 설정으로 SSH known hosts 데이터 관리

선언적이고 자체 관리되는 ArgoCD 설정에서도 SSH known hosts 항목을 관리할 수 있습니다. 모든 SSH 공개 호스트 키는 ConfigMap 객체 argocd-ssh-known-hosts-cm에 저장됩니다. 자세한 내용은 Operator Manual을 참조하세요.

Helm

Helm 차트는 보호된 Helm 저장소 또는 OCI 레지스트리에서 가져올 수 있습니다. HTTPS 기반 저장소의 유형으로 helm을 지정해 CLI 또는 UI로 보호된 Helm 차트에 대한 접근을 구성할 수 있습니다.

CLI 사용:

argocd repo add 명령의 --type 플래그를 지정하세요:

argocd repo add https://argoproj.github.io/argo-helm --type=helm <additional-flags>

UI 사용:

  • Settings/Repositories로 이동하세요.
  • Connect Repo 버튼을 클릭하세요.
  • Connection Method로 VIA HTTPS를 선택하세요.
  • Type으로 helm을 선택하세요.
  • 연결을 테스트하고 저장소가 추가되도록 Connect를 클릭하세요.

보호된 OCI 레지스트리에 저장된 Helm 차트는 이전에 설명한 단계를 사용하고 소스가 OCI 레지스트리에 저장된 Helm 차트임을 명시적으로 지정해야 합니다.

CLI 사용:

argocd repo add 명령의 --enable-oci 플래그를 지정하세요:

argocd repo add registry-1.docker.io/bitnamicharts --type=helm --enable-oci=true <additional-flags>

참고: OCI 레지스트리를 참조할 때는 oci:// 같은 프로토콜을 생략해야 합니다.

UI 사용:

HTTPS 기반 helm 저장소를 추가할 때 Enable OCI 체크박스를 선택하세요.

커스텀 HTTP User-Agent

일부 Helm 저장소 프로바이더(예: Wikimedia)는 로봇 접근 정책의 일부로 특정 User-Agent 헤더를 요구합니다. Argo CD는 모든 Helm 저장소 요청에 기본 User-Agent 헤더(argocd-repo-server/<version> (<platform>))를 자동으로 보냅니다.

User-Agent를 커스터마이즈해야 한다면(예: 조직 이름이나 연락처 정보 포함), argocd-repo-server 디플로이먼트에 ARGOCD_HELM_USER_AGENT 환경 변수를 설정하세요:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: argocd-repo-server
spec:
  template:
    spec:
      containers:
      - name: argocd-repo-server
        env:
        - name: ARGOCD_HELM_USER_AGENT
          value: "my-org/argocd ([email protected])"

이 환경 변수는 모든 Helm 저장소 요청에 전역적으로 적용됩니다.

Git 서브모듈

서브모듈이 지원되며 자동으로 선택됩니다. 서브모듈 저장소가 인증을 요구한다면 자격 증명이 부모 저장소의 자격 증명과 일치해야 합니다. 서브모듈 지원을 비활성화하려면 ARGOCD_GIT_MODULES_ENABLED=false를 설정하세요.

선언적 구성

선언적 구성을 참조하세요.

더 알아보기 (Learn more)