GitOps(Flux v2) 지원되는 매개 변수

Azure는 AKS(Azure Kubernetes Service) 및 Azure Arc 지원 Kubernetes 클러스터에서 작동하는 GitOps를 사용하여 자동화된 애플리케이션 배포 기능을 제공합니다. Flux v2가 포함된 GitOps를 사용하면 Git 리포지토리를 클러스터 구성 및 애플리케이션 배포의 믿을 수 있는 원본으로 사용할 수 있습니다. 자세한 내용은 GitOps(Flux v2)를 사용한 애플리케이션 배포자습서: Flux v2에서 GitOps를 사용하여 애플리케이션 배포를 참조하세요.

Azure Arc 지원 Kubernetes 또는 Azure Kubernetes Service의 GitOps는 다양한 시나리오를 사용하기 위해 많은 매개 변수를 지원하는 인기 있는 오픈 소스 도구 집합인 Flux를 사용합니다. Flux가 지원하는 모든 매개 변수에 대한 설명은 공식 Flux 설명서를 참조하세요.

Azure의 Flux에서 지원하는 모든 매개 변수를 보려면 az k8s-configuration설명서를 참조하세요. 이 구현은 현재 Flux에서 지원하는 모든 매개 변수를 지원하지 않습니다. 필요한 매개 변수가 Azure 구현에서 누락되었다면 제보해주세요.

이 문서에서는 az k8s-configuration flux create 명령에 사용할 수 있는 몇 가지 매개 변수 및 인수에 대해 설명합니다. Azure CLI에서 -h 매개 변수(예: az k8s-configuration flux -h 또는 az k8s-configuration flux create -h)를 사용하여 az k8s-configuration flux의 전체 매개 변수 목록을 볼 수도 있습니다.

지원되지 않는 매개 변수를 사용하여 Flux 리소스를 배포하는 해결 방법은 Git 리포지토리 내에서 필수 Flux 사용자 지정 리소스(예: GitRepository 또는 Kustomization)를 정의하는 것입니다. az k8s-configuration flux create 명령을 사용하여 이러한 리소스를 배포합니다. 그러면 Azure Arc UI를 통해 Flux 리소스에 계속 액세스할 수 있습니다.

구성 일반 인수

매개 변수 형식 주의
--cluster-name -c 문자열 Azure 클러스터 리소스 유형의 이름입니다.
--cluster-type -t 허용되는 값: connectedClusters, managedClusters Azure Arc 지원 Kubernetes 클러스터에는 connectedClusters를 사용하고 AKS 클러스터에는 managedClusters를 사용합니다.
--resource-group -g 문자열 클러스터 리소스를 보유하는 Azure 리소스 그룹의 이름입니다.
--name -n 문자열 Azure의 Flux 구성 이름입니다.
--namespace --ns 문자열 구성을 배포할 네임스페이스의 이름입니다. 기본값: default.
--scope -s 문자열 연산자의 사용 권한 범위. 가능한 값은 cluster(모든 권한) 또는 namespace(제한된 액세스)입니다. 기본값: cluster.
--suspend flag 이 Flux 구성에 정의된 모든 원본 및 kustomize 조정을 일시 중단합니다. 일시 중단 시 활성화된 조정은 계속됩니다.

원본 일반 인수

매개 변수 형식 주의
--kind 문자열 조정할 원본 종류입니다. 허용되는 값: bucket, git, azblob. 기본값: git.
--timeout golang 기간 형식 시간이 초과되기 전에 원본을 조정하려고 시도하는 최대 시간입니다. 기본값: 10m.
--sync-interval --interval golang 기간 형식 클러스터에서 원본의 조정 사이의 시간입니다. 기본값: 10m.

Git 리포지토리 원본 참조 인수

매개 변수 형식 주의
--branch 문자열 클러스터와 동기화할 Git 원본 내의 분기입니다. 기본값: master. 최신 리포지토리에는 main(이)라는 루트 분기가 있으며, 이 경우 --branch=main을(를) 설정해야 합니다.
--tag 문자열 클러스터와 동기화할 Git 원본 내의 태그입니다. 예: --tag=3.2.0
--semver 문자열 클러스터와 동기화할 Git 원본 내의 Git 태그 semver 범위입니다. 예: --semver=">=3.1.0-rc.1 <3.2.0"
--commit 문자열 Git은 Git 원본 내에서 SHA를 커밋하여 클러스터와 동기화합니다. 예: --commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a

자세한 내용은 Git 리포지토리 체크 아웃 전략에 대한 Flux 설명서를 참조하세요.

공용 Git 리포지토리

매개 변수 형식 주의
--url -u http[s]://server/repo[.git] 클러스터와 조정할 Git 리포지토리 원본의 URL입니다.

SSH 및 Flux에서 만든 키를 사용한 프라이빗 Git 리포지토리

Flux에 의해 생성된 공개 키를 Git 서비스 공급자의 사용자 계정에 추가합니다.

매개 변수 형식 주의
--url -u ssh://user@server/repo[.git] git@은(는) 공개 키가 사용자 계정 대신 리포지토리와 연결된 경우 user@을(를) 바꿔야 합니다.

SSH 및 사용자 제공 키를 사용한 프라이빗 Git 리포지토리

프라이빗 키를 직접 또는 파일에서 사용합니다. 키는 PEM 형식이어야 하며 줄 바꿈 (\n)으로 끝나야 합니다.

Git 서비스 공급자의 사용자 계정에 연결된 공개 키를 추가합니다.

매개 변수 형식 주의
--url -u ssh://user@server/repo[.git] git@은(는) 공개 키가 사용자 계정 대신 리포지토리와 연결된 경우 user@을(를) 바꿔야 합니다.
--ssh-private-key PEM 형식의 Base64 키 키를 직접 제공합니다.
--ssh-private-key-file 로컬 파일의 전체 경로 PEM 형식 키를 포함하는 로컬 파일의 전체 경로를 제공합니다.

SSH 및 사용자가 제공한 알려진 호스트를 사용한 프라이빗 Git 호스트

Flux 연산자는 known_hosts 파일의 일반 Git 호스트 목록을 유지 관리합니다. Flux는 이 정보를 사용하여 SSH 연결을 설정하기 전에 Git 리포지토리를 인증합니다. 일반적이지 않은 Git 리포지토리 또는 사용자 고유의 Git 호스트를 사용하는 경우 Flux가 리포지트리를 식별할 수 있도록 호스트 키를 제공할 수 있습니다.

프라이빗 키와 마찬가지로 known_hosts 콘텐츠를 직접 또는 파일에 제공할 수 있습니다. 사용자 고유의 콘텐츠를 제공하는 경우 위의 SSH 키 시나리오 중 하나와 함께 known_hosts 콘텐츠 형식 사양을 사용합니다.

매개 변수 형식 주의
--url -u ssh://user@server/repo[.git] git@은(는) user@을(를) 바꿀 수 있습니다.
--known-hosts Base64 문자열 known_hosts 콘텐츠를 직접 제공합니다.
--known-hosts-file 로컬 파일의 전체 경로 로컬 파일에 known_hosts 콘텐츠를 제공합니다.

HTTPS 사용자 및 키가 있는 프라이빗 Git 리포지토리

매개 변수 형식 주의
--url -u https://server/repo[.git] 기본 인증을 사용하는 HTTPS.
--https-user 원시 문자열 HTTPS 사용자 이름.
--https-key 원시 문자열 HTTPS 개인용 액세스 토큰 또는 암호.

HTTPS CA 인증서를 사용하는 프라이빗 Git 리포지토리

매개 변수 형식 주의
--url -u https://server/repo[.git] 기본 인증을 사용하는 HTTPS.
--https-ca-cert Base64 문자열 TLS 통신을 위한 CA 인증서.
--https-ca-cert-file 로컬 파일의 전체 경로 로컬 파일에 CA 인증서 콘텐츠를 제공합니다.

버킷 소스 인수

bucket 원본을 사용하는 경우 버킷별 명령 인수는 다음과 같습니다.

매개 변수 형식 주의
--url -u URL 문자열 bucket의 URL입니다. 지원 형식: http://, https://.
--bucket-name 문자열 동기화할 bucket의 이름.
--bucket-access-key 문자열 bucket을(를) 사용하여 인증하는 데 사용되는 액세스 키 ID입니다.
--bucket-secret-key 문자열 bucket을(를) 사용하여 인증하는 데 사용되는 비밀 키입니다.
--bucket-insecure 부울 TLS 없이 bucket과(와) 통신합니다. 제공되지 않으면 false로 가정합니다. 제공된 경우 true로 가정합니다.

Azure Blob Storage 계정 원본 인수

azblob 원본을 사용하는 경우 Blob별 명령 인수는 다음과 같습니다.

매개 변수 형식 주의
--url -u URL 문자열 azblob의 URL입니다.
--container-name 문자열 동기화할 Azure Blob Storage 컨테이너의 이름
--sp_client_id 문자열 이 인증 방법에 필요한 Azure Blob을 사용하여 서비스 주체를 인증하기 위한 클라이언트 ID입니다.
--sp_tenant_id 문자열 이 인증 방법에 필요한 Azure Blob을 사용하여 서비스 주체를 인증하기 위한 테넌트 ID입니다
--sp_client_secret 문자열 Azure Blob을 사용하여 서비스 주체를 인증하기 위한 클라이언트 암호
--sp_client_cert 문자열 Azure Blob을 사용하여 서비스 주체를 인증하기 위한 Base64로 인코딩된 클라이언트 인증서
--sp_client_cert_password 문자열 Azure Blob을 사용하여 서비스 주체를 인증하는 데 사용되는 클라이언트 인증서의 암호
--sp_client_cert_send_chain 문자열 클라이언트 인증서에 주체 이름/발급자 기반 인증을 사용하도록 설정하기 위해 토큰을 획득할 때 클라이언트 클레임에 x5c 헤더를 포함할지 여부를 지정합니다
--account_key 문자열 인증을 위한 Azure Blob 공유 키
--sas_token 문자열 인증을 위한 Azure Blob SAS 토큰
--managed-identity-client-id 문자열 Azure Blob 인증을 위한 관리 ID의 클라이언트 ID

Important

AKS 클러스터 및 azblob 원본에 관리 ID 인증을 사용하는 경우 관리 ID는 최소한 Storage Blob 데이터 판독기 역할을 할당해야 합니다. 관리 ID를 사용한 인증은 Azure Arc 지원 Kubernetes 클러스터에서 아직 사용할 수 없습니다.

원본 인증을 위한 로컬 비밀

로컬 Kubernetes 비밀을 사용하여 git, bucket 또는 azBlob 원본을 인증할 수 있습니다. 로컬 암호는 원본에 필요한 모든 인증 매개 변수를 포함해야 하며 Flux 구성과 동일한 네임스페이스에 만들어야 합니다.

매개 변수 형식 주의
--local-auth-ref --local-ref 문자열 원본 인증에 사용할 Flux 구성 네임스페이스의 Kubernetes 비밀에 대한 로컬 참조입니다.

HTTPS 인증의 경우 usernamepassword을(를) 사용하여 비밀을 만듭니다.

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>

SSH 인증의 경우 identityknown_hosts 필드를 사용하여 비밀을 만듭니다.

kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts

두 경우 모두 Flux 구성을 만들 때 다른 인증 매개 변수 대신 --local-auth-ref my-custom-secret을(를) 사용합니다.

az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret

다음 인증 방법으로 로컬 Kubernetes 비밀을 사용하는 방법에 대해 자세히 알아봅니다.

참고 항목

프록시를 통해 원본에 액세스하는 데 Flux가 필요한 경우 Azure Arc 에이전트를 프록시 설정으로 업데이트해야 합니다. 자세한 내용은 아웃바운드 프록시 서버를 사용하여 연결을 참조하세요.

Git 구현

Git을 구현하는 다양한 리포지토리 공급자를 지원하기 위해 Flux는 두 Git 라이브러리 go-git 또는 libgit2 중 하나를 사용하도록 구성할 수 있습니다. 자세한 내용은 Flux 설명서를 참조하세요.

Flux v2의 GitOps 구현은 퍼블릭 클라우드 리포지토리에 사용할 라이브러리를 자동으로 결정합니다.

  • GitHub, GitLab 및 BitBucket 리포지토리의 경우 Flux는 go-git을(를) 사용합니다.
  • Azure DevOps 및 기타 모든 리포지토리의 경우 Flux는 libgit2을(를) 사용합니다.

온-프레미스 리포지토리의 경우 Flux는 libgit2을(를) 사용합니다.

Kustomization

Kustomization은 클러스터로 조정되는 원본 리포지토리에서 특정 경로를 선택할 수 있는 Flux 구성에 대해 만들어진 설정입니다. 지정된 이 경로에 'kustomization.yaml 파일'을 만들 필요가 없습니다. 기본적으로 이 경로의 모든 매니페스트가 조정됩니다. 그러나 이 리포지토리 경로에서 사용할 수 있는 애플리케이션에 대한 Kustomize 오버레이를 사용하려면 Flux 구성을 사용할 수 있도록 git에 Kustomize 파일을 만들어야 합니다.

az k8s-configuration flux kustomization create을(를) 사용하여 구성 중에 하나 이상의 kustomization을 만들 수 있습니다.

매개 변수 형식 주의
--kustomization 값 없음 kustomization을 구성하는 매개 변수 문자열의 시작입니다. 여러 번 사용하여 여러 kustomization을 만들 수 있습니다.
name 문자열 이 kustomization의 고유 이름입니다.
path 문자열 클러스터와 조정할 Git 리포지토리 내의 경로입니다. 기본값은 분기의 최상위 수준입니다.
prune 부울 기본값은 false입니다. Flux가 클러스터에 배포한 개체가 리포지토리에서 제거되거나 Flux 구성 또는 kustomization이 삭제된 경우 정리되도록 prune=true를 설정합니다. prune=true을(를) 사용하는 것은 사용자가 클러스터에 액세스할 수 없고 Git 리포지토리를 통해서만 변경할 수 있는 환경에 중요합니다.
depends_on 문자열 이 kustomization이 조정되기 전에 조정해야 하는 하나 이상의 kustomization(이 구성 내에서)의 이름입니다. 예: depends_on=["kustomization1","kustomization2"] 종속 kustomization이 있는 kustomization을 제거하면 종속 kustomization의 상태가 DependencyNotReady가 되고 조정이 중지됩니다.
timeout golang 기간 형식 기본값: 10m.
sync_interval golang 기간 형식 기본값: 10m.
retry_interval golang 기간 형식 기본값: 10m.
validation 문자열 값: none, client, server. 기본값: none. 자세한 내용은 Flux 설명서를 참조하십시오.
force 부울 기본값: false. 변경할 수 없는 필드 변경으로 인해 패치가 실패할 때 리소스를 다시 만들도록 kustomize 컨트롤러에 지시하도록 force=true을(를) 설정합니다.

az k8s-configuration flux kustomization을(를) 사용하여 Flux 구성에서 kustomization을 업데이트, 나열, 표시 및 삭제할 수도 있습니다.

다음 단계