차트 리포지토리 동기화

참고: 이곳의 예제들은 차트 리포지토리를 제공하는 Google Cloud Storage (GCS) 버킷에 맞게 작성되었다.

전제 조건

  • gsutil 툴을 설치해야 한다. gsutill rsync 기능이 필요하다.
  • 헬름 바이너리에 대한 접근 권한이 있어야 한다.
  • 선택 사항: 실수로 파일을 삭제할 경우를 대비하여 GCS 버킷에 오브젝트 버전 관리를 설정하는 것을 추천한다.

로컬 차트 리포지토리 디렉터리 설정

차트 리포지토리 가이드에서 한 것처럼 로컬 디렉터리를 만들고, 패키지된 차트를 그 디렉터리로 옮긴다.

예제:

$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/

업데이트 된 index.yaml 생성

다음과 같이 helm repo index 헬름 명령어에 원격 리포지토리의 디렉터리 경로와 URL을 전달하여 업데이트된 index.yaml 파일을 생성한다.

$ helm repo index fantastic-charts/ --url https://fantastic-charts.storage.googleapis.com

그러면 업데이트된 index.yaml 파일이 생성되고 fantastic-charts/ 디렉토리에 위치하게 된다.

로컬 및 원격 차트 리포지토리 동기화

scripts/sync-repo.sh 명령어에 로컬 디렉터리명과 GCS 버킷명을 전달하여 디렉터리 컨텐츠를 GCS 버킷에 업로드한다.

예제:

$ pwd
/Users/me/code/go/src/helm.sh/helm
$ scripts/sync-repo.sh fantastic-charts/ fantastic-charts
Getting ready to sync your local directory (fantastic-charts/) to a remote repository at gs://fantastic-charts
Verifying Prerequisites....
Thumbs up! Looks like you have gsutil. Let's continue.
Building synchronization state...
Starting synchronization
Would copy file://fantastic-charts/alpine-0.1.0.tgz to gs://fantastic-charts/alpine-0.1.0.tgz
Would copy file://fantastic-charts/index.yaml to gs://fantastic-charts/index.yaml
Are you sure you would like to continue with these changes?? [y/N]} y
Building synchronization state...
Starting synchronization
Copying file://fantastic-charts/alpine-0.1.0.tgz [Content-Type=application/x-tar]...
Uploading   gs://fantastic-charts/alpine-0.1.0.tgz:              740 B/740 B
Copying file://fantastic-charts/index.yaml [Content-Type=application/octet-stream]...
Uploading   gs://fantastic-charts/index.yaml:                    347 B/347 B
Congratulations your remote chart repository now matches the contents of fantastic-charts/

차트 리포지토리 업데이트

필요시 차트 리포지토리 컨텐츠의 로컬 복사본을 따로 보관하거나 gsutil rsync 를 사용하여 원격 차트 리파지토리 컨텐츠를 로컬 디렉토리에 복사해 둘 수 있다.

예제:

$ gsutil rsync -d -n gs://bucket-name local-dir/    # the -n flag does a dry run
Building synchronization state...
Starting synchronization
Would copy gs://bucket-name/alpine-0.1.0.tgz to file://local-dir/alpine-0.1.0.tgz
Would copy gs://bucket-name/index.yaml to file://local-dir/index.yaml

$ gsutil rsync -d gs://bucket-name local-dir/       # performs the copy actions
Building synchronization state...
Starting synchronization
Copying gs://bucket-name/alpine-0.1.0.tgz...
Downloading file://local-dir/alpine-0.1.0.tgz:                        740 B/740 B
Copying gs://bucket-name/index.yaml...
Downloading file://local-dir/index.yaml:                              346 B/346 B

유용한 링크: