Pub/Sub 알림 구성

이미지 내보내기, 태그 지정, 삭제 등의 변경사항을 Container Registry 저장소에 적용할 때 Pub/Sub를 이용해 알림을 받을 수 있습니다.

Pub/Sub는 저장소에 대한 메시지를 주제라고 하는 명명된 리소스에 게시합니다. 이 메시지는 Pub/Sub 주제를 구독하는 애플리케이션에서 수신합니다. 저장소 상태가 변경되면 구독자 애플리케이션은 알림을 수신합니다.

또한 Pub/Sub 주제에 대한 역할과 권한을 구성하여 저장소와 사용자의 상호작용 방식을 제어할 수 있습니다.

Container Registry에서 Artifact Registry로의 전환을 지원하기 위해 Artifact Registry는 Container Registry와 동일한 주제에 메시지를 게시합니다.

새로운 취약점 스캔 결과와 같은 활동의 Artifact Analysis 알림을 구성하는 방법은 Artifact Analysis 문서를 참조하세요.

Pub/Sub 주제 만들기

Google Cloud 프로젝트에서 Container Registry API를 활성화하면 Container Registry는 주제 ID gcr로 Pub/Sub 주제를 자동으로 만듭니다.

gcr 주제가 실수로 삭제되거나 누락된 경우 직접 추가할 수 있습니다. 예를 들어 Google Cloud 조직에 고객 관리 암호화 키(CMEK)로 암호화해야 하는 조직 정책 제약조건이 있는 경우 주제가 누락될 수 있습니다. Pub/Sub API가 이 제약조건의 거부 목록에 있으면 서비스가 Google 관리 암호화 키로 주제를 자동으로 만들 수 없습니다.

Google 관리 암호화 키로 gcr 주제를 만들려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.

    Pub/Sub 주제 페이지로 이동

  2. 주제 만들기를 클릭합니다.

  3. 주제 ID gcr을 입력합니다.

  4. 주제 만들기를 클릭합니다.

gcloud

다음 명령어를 실행합니다.

gcloud pubsub topics create gcr --project=PROJECT-ID

PROJECT-ID를 Google Cloud 프로젝트 ID로 바꿉니다. --project 플래그를 생략하면 이 명령어는 현재 프로젝트를 사용합니다.

gcloud pubsub topics 명령어에 대한 자세한 내용은 topics 문서를 참조하세요.

CMEK 암호화로 gcr 주제를 만들려면 Pub/Sub 주제 암호화 안내를 참조하세요.

gcr 주제를 만들었거나 주제의 존재가 확인되었으면 주제에 대한 구독을 만들 수 있습니다.

Pub/Sub 구독 만들기

모든 Pub/Sub 주제에는 구독이 있어야 합니다.

구독자 애플리케이션은 저장소 주제에서 메시지를 수신합니다. 구독자는 이벤트 알림, 시스템 로깅, 애플리케이션 간의 통신 등의 작업을 수행합니다.

구독은 내보내기 모델이나 가져오기 모델을 이용하도록 구성할 수 있습니다.

구독을 만들려면 다음 단계를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 Pub/Sub 주제 페이지로 이동합니다.

    Pub/Sub 주제 페이지로 이동

  2. 프로젝트 주제를 클릭합니다.

  3. 구독 만들기를 클릭합니다.

  4. 구독 이름을 입력합니다.

    projects/[PROJECT-ID]/subscriptions/[SUBSCRIPTION-NAME]
    

    전송 유형을 가져오기로 설정합니다.

  5. 만들기를 클릭합니다.

gcloud

Docker 이미지를 내보내거나 태그를 지정할 시스템에서 다음 명령어를 실행하세요.

gcloud pubsub subscriptions create [SUBSCRIPTION-NAME] --topic=gcr

gcloud pubsub subscriptions 명령어에 대한 자세한 내용은 subscriptions 문서를 참조하세요.

Pub/Sub 권한 구성

Pub/Sub 액세스 제어를 사용하여 프로젝트 및 리소스에 대한 권한을 구성합니다. 액세스 제어는 저장소 보안을 유지하고 역할 기반 액세스를 사용하여 사용자 권한을 관리할 수 있게 합니다.

Google Cloud 콘솔의 IAM 페이지 또는 IAM API를 통해 Pub/Sub 액세스 제어를 구성할 수 있습니다.

  • 게시 권한을 구성하려면 owner, editor, pubsub.admin, pubsub.editor, pubsub.publisher 역할 중 하나를 사용합니다. 이미지를 내보내거나 레지스트리에서 이미지를 삭제하는 주 구성원에게 Pub/Sub에 메시지를 게시할 수 있는 pubsub.topics.publish 권한이 있어야 합니다.

  • 구독 권한을 구성하려면 owner, editor, pubsub.admin, pubsub.editor, pubsub.subscriber 역할 중 하나를 사용합니다.

알림 예시

알림은 JSON 형식의 문자열로 전송됩니다. 다음은 Pub/Sub에서 Container Registry 알림을 수신하는 과정의 예입니다.

이미지를 Container Registry로 내보내면 알림 페이로드는 다음과 같은 형식이 됩니다.

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5..."
}

새 태그를 Container Registry로 내보내면 알림 페이로드는 다음과 같은 형식이 됩니다.

{
  "action":"INSERT",
  "digest":"gcr.io/my-project/hello-world@sha256:6ec128e26cd5...",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

메시지는 digest 또는 tag 키를 이용해 관련 이미지를 식별합니다.

Container Registry에서 태그를 삭제하면 알림 페이로드는 다음과 같은 형식이 됩니다.

{
  "action":"DELETE",
  "tag":"gcr.io/my-project/hello-world:1.1"
}

메시지에는 action 키 값으로 DELETEINSERT가 포함될 수 있습니다.

다음 단계