Docker 저장소 변경사항에 대한 알림을 Pub/Sub에서 수신할 수 있습니다. 알림은 OCI 형식으로 패키징된 Helm 3 차트를 포함하여 저장소에 저장된 모든 컨테이너 이미지에 적용됩니다.
Pub/Sub는 저장소에 대한 메시지를 주제라고 하는 명명된 리소스에 게시합니다. Pub/Sub 주제를 구독하는 애플리케이션은 이러한 메시지를 수신하고 저장소 상태가 변경되면 알림을 수신합니다.
Artifact Registry는 다음 변경사항에 대한 메시지를 게시합니다.
- 이미지 업로드
- 새 태그가 이미지에 추가됨
- 이미지 삭제
또한 알림을 게시하거나 구독하기 위한 역할과 권한을 구성할 수 있습니다.
새로운 취약점 스캔 결과와 같은 활동의 Artifact Analysis 알림을 구성하는 방법은 Artifact Analysis 문서를 참조하세요.
개요
Artifact Registry는 gcr
이라는 주제의 저장소에 대한 변경사항에 관한 메시지를 게시합니다.
알림을 받으려면 다음을 수행해야 합니다.
- Artifact Registry를 사용하여 프로젝트에
gcr
이라는 주제를 만듭니다. - 주제에 대한 구독을 만듭니다.
- 저장소 변경사항에 대한 메시지를 수신하도록 구독자 애플리케이션을 설정합니다.
- 필요한 경우 주제와 구독에 대한 액세스를 제어하도록 권한을 구성합니다.
Artifact Registry 주제 만들기
Google 소유 및 Google 관리 키로 gcr
주제를 만들려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.
주제 만들기를 클릭합니다.
주제 ID
gcr
을 입력합니다.주제 만들기를 클릭합니다.
gcloud
다음 명령어를 실행합니다.
gcloud pubsub topics create gcr --project=PROJECT-ID
PROJECT-ID를 Google Cloud 프로젝트 ID로 바꿉니다. --project
플래그를 생략하면 이 명령어는 현재 프로젝트를 사용합니다.
gcloud pubsub topics
명령어에 대한 자세한 내용은 topics
문서를 참조하세요.
CMEK 암호화로 gcr
주제를 만들려면 Pub/Sub 주제 암호화 안내를 참조하세요.
gcr
주제를 만들었거나 주제의 존재가 확인되었으면 주제에 대한 구독을 만들 수 있습니다.
구독 만들기
저장소 변경사항에 대한 주제를 만든 후 내보내기 전송 또는 가져오기 전송을 사용하는 구독을 구성할 수 있습니다. CI/CD 시스템은 저장된 아티팩트에 수많은 변경사항을 생성할 수 있고 가져오기 전송이 대량 메시지에 전송에 더 효과적이므로 가져오기 전송을 사용하는 것이 좋습니다.
가져오기 전송이 포함된 구독을 만들려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.
프로젝트 주제를 클릭합니다.
구독 만들기를 클릭합니다.
구독 이름을 입력합니다.
projects/PROJECT/subscriptions/[SUBSCRIPTION-NAME]
전송 유형을 가져오기로 설정합니다.
만들기를 클릭합니다.
gcloud
다음 명령어를 실행합니다.
gcloud pubsub subscriptions create SUBSCRIPTION-NAME --topic=gcr
SUBSCRIPTION-NAME을 구독 이름으로 바꿉니다.
gcloud pubsub subscriptions
명령어에 대한 자세한 내용은 subscriptions
문서를 참조하세요.
이제 gcr
주제에 대한 구독이 있습니다. 다음 단계는 저장소의 변경사항을 트리거하는 ID에 대한 권한을 구성하는 것입니다.
구독자 애플리케이션 구성
해당 주제에 대한 주제 만들기 및 구독을 만든 후에는 저장소 변경사항에 대한 메시지를 수신하는 애플리케이션인 구독자 애플리케이션을 설정할 수 있습니다. 구독자 애플리케이션은 이벤트 알림, 시스템 로깅, 애플리케이션 간 통신과 같은 태스크를 실행합니다.
저장소 사용자가 이미지를 내보내거나 삭제하면 다음 단계가 실행됩니다.
Artifact Registry 서비스 계정이
gcr
주제에 변경사항을 게시합니다. 서비스 계정은 service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com입니다. 여기서 PROJECT-NUMBER는 Google Cloud 프로젝트 번호입니다. 주제에 변경사항을 게시할 수 있도록 Artifact Registry 서비스 계정에는 기본적으로pubsub.topics.publish
권한이 있습니다.관리자가 Artifact Registry 서비스 계정에 대한
pubsub.topics.publish
권한을 취소하면 Artifact Registry는 메시지를 저장소 사용자로 게시하려고 합니다. 이 경우 저장소 사용자의 계정에pubsub.topics.publish
권한이 있어야 메시지가 성공적으로 게시됩니다.Pub/Sub이 메시지를 주제에서 구독으로 전달합니다.
구독자 애플리케이션이 메시지를 요청하면 구독에서 새 메시지를 가져옵니다.
구독자를 대신하여 메시지를 가져오는 ID에는 구독에 액세스할 수 있는 권한이 있어야 합니다. Pub/Sub 구독자 역할을 사용하여 이 권한을 부여할 수 있습니다.
가져오기 전송으로 구독에서 메시지를 수신하도록 구독자를 설정하는 방법은 Pull을 사용하여 메시지 수신을 참조하세요.
권한 구성
Pub/Sub 권한을 사용하여 주제와 구독에 대한 액세스를 제어할 수 있습니다.
Pub/Sub 권한과 주제 및 구독 액세스 권한 부여에 대한 자세한 내용은 Pub/Sub 액세스 제어 문서를 참조하세요.
알림 예시
Pub/Sub은 알림을 JSON 형식의 문자열로 전송합니다. 다음 예시를 검토하여 Pub/Sub에서 Artifact Registry 알림을 수신할 때의 예상 결과를 알아보세요.
이미지를 Artifact Registry로 내보내면 알림 페이로드는 다음과 같은 형식이 됩니다.
{
"action":"INSERT",
"digest":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5..."
}
새 이미지 태그를 Artifact Registry로 내보내면 알림 페이로드는 다음과 같은 형식이 됩니다.
{
"action":"INSERT",
"digest":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world@sha256:6ec128e26cd5...",
"tag":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
메시지는 digest
또는 tag
키를 이용해 관련 이미지를 식별합니다.
Artifact Registry에서 이미지 태그를 삭제하면 알림 페이로드가 다음과 같이 표시됩니다.
{
"action":"DELETE",
"tag":"us-east1-docker.pkg.dev/my-project/my-repo/hello-world:1.1"
}
메시지에는 action
키 값으로 DELETE
나 INSERT
가 포함될 수 있습니다.
다음 단계
- Pub/Sub 문서 읽어보기
- Pub/Sub란 무엇인가요?를 참조하여 Pub/Sub에 대해 자세히 알아보기
- Pub/Sub 액세스 제어 역할에 대해 자세히 알아보기