반응형
배경 상황
기존에는 Terraform의 helm_release provider를 통해서 Karpenter를 배포하다가 Karpenter를 GitOps 방식으로 관리하기 위해서 ArgoCD로 배포하려고 했다. 다음은 Karpenter를 배포하기 위해 작성했던 Application CR 매니페스트이다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: karpenter-helm
namespace: argocd
annotations:
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
destination:
server: <https://kubernetes.default.svc>
namespace: karpenter
sources:
- repoURL: ''
targetRevision: main
ref: values
- repoURL: 'oci://public.ecr.aws/karpenter'
targetRevision: 1.0.2
chart: karpenter
helm:
releaseName: karpenter
valueFiles:
- $values/apps/devops/karpenter/karpenter-helm/karpenter-helm-values.yaml
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Application을 배포하니 아래와 같은 에러 메시지와 함께 sync에 실패했다. 메시지를 읽어보니 해당 helm chart다 유효하지 않아 pull에 실패했다는 내용이다.
Failed to load target state: failed to generate manifest for source 2 of 2: rpc error: code = Unknown desc = error fetching chart: failed to fetch chart: failed to get command args to log: helm pull --destination /tmp/52aca47e-419f-4c54-96fa-237d5bfac47f --version 1.2.1 --repo oci://public.ecr.aws/karpenter karpenter failed exit status 1: Error: looks like "oci://public.ecr.aws/karpenter" is not a valid chart repository or cannot be reached: object required
해결 방법
ArgoCD 공식문서를 보면, public OCI helm chart를 가져올 때에는 oci:// syntax를 빼고 입력하라는 예시가 나와있다. 따라서 아래처럼 차트 경로에 oci:// 를 삭제하고 public.ecr.aws/karpenter 만 입력하면 된다.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: karpenter-helm
namespace: argocd
annotations:
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
destination:
server: <https://kubernetes.default.svc>
namespace: karpenter
sources:
- repoURL: ''
targetRevision: main
ref: values
- repoURL: 'public.ecr.aws/karpenter'
targetRevision: 1.0.2
chart: karpenter
helm:
releaseName: karpenter
valueFiles:
- $values/apps/devops/karpenter/karpenter-helm/karpenter-helm-values.yaml
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
'DevOps' 카테고리의 다른 글
[ArgoCD]Google SSO(OAuth2.0)인증 연결하기 (0) | 2025.02.27 |
---|---|
[Terraform]Route53 레코드 추가 시 CloudFront, ALB등 AWS 리소스의 Hosted zone ID 확인 (0) | 2025.02.26 |
[ArgoCD]관리자 패스워드 업데이트 및 분실 시 재설정 방법 (0) | 2025.02.19 |
MacOS에서 direnv 설정하기 (0) | 2025.01.23 |
[IntelliJ].idea폴더란? (1) | 2024.12.09 |