Google Cloud Platform 서비스 브로커(베타, 지원 중단됨)를 사용하여 Cloud Pub/Sub에 액세스

이 가이드에서는 Kubernetes 서비스 카탈로그와 Google Cloud Platform(GCP) 서비스 브로커를 사용하여 GKE에서 실행되는 애플리케이션과 Cloud Pub/Sub를 연결하는 방법을 보여줍니다.

서비스 카탈로그를 사용하는 이유

서비스 카탈로그를 사용하면 클러스터에서 실행되는 애플리케이션이 사용자 인증 정보 또는 엔드포인트와 같은 정보를 수동으로 가져올 필요 없이 외부 서비스를 쉽게 찾아서 연결할 수 있습니다. 외부 서비스 종속 항목은 기존 배포 프로세스에 쉽게 통합될 수 있는 Kubernetes 리소스로 모델링됩니다.

이 가이드에서는 다음과 같은 서비스 카탈로그 기능이 사용됩니다.

  • 서비스 카탈로그를 통해 서비스 브로커에서 Google Cloud Platform 서비스 검색
  • Cloud 리소스를 만들기 위한 서비스 인스턴스 프로비저닝
  • 클러스터에 사용자 인증 정보를 삽입하기 위해 Kubernetes 애플리케이션에서 프로비저닝된 서비스 인스턴스 결합
  • 애플리케이션에서 서비스 결합을 사용하여 Cloud 리소스를 가리키는 서비스 인스턴스에 액세스

서비스 카탈로그에 대한 자세한 내용은 Kubernetes 서비스 카탈로그 문서를 참조하세요.

목표

이 가이드에는 다음 단계가 포함됩니다.

  1. 네임스페이스 만들기
  2. IAM 서비스 계정 만들기
  3. Pub/Sub 주제 만들기
  4. 주제에 대한 Pub/Sub 구독 만들기
  5. 데모 앱으로 Pub/Sub 서비스 테스트
  6. 삭제

시작하기 전에

다음 단계에 따라 Kubernetes Engine API를 사용 설정합니다.
  1. Google Cloud Platform Console에서 Kubernetes Engine 페이지로 이동합니다.
  2. 프로젝트를 만들거나 선택합니다.
  3. API 및 관련 서비스가 사용 설정될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.
  4. Google Cloud Platform 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

이 가이드에 사용된 다음 명령줄 도구를 설치합니다.

  • gcloud는 Kubernetes Engine 클러스터를 만들고 삭제하는 데 사용됩니다. gcloudGoogle Cloud SDK에 포함되어 있습니다.
  • kubectl은 Kubernetes Engine에서 사용되는 클러스터 조정 시스템인 Kubernetes를 관리하기 위해 사용됩니다. gcloud를 사용하여 kubectl을 설치할 수 있습니다.
    gcloud components install kubectl

gcloud 명령줄 도구의 기본값 설정

gcloud 명령줄 도구에서 프로젝트 IDCompute Engine 영역 옵션을 입력하는 시간을 절약하려면 기본값을 설정하면 됩니다.
gcloud config set project [PROJECT_ID]
gcloud config set compute/zone [COMPUTE_ENGINE_ZONE]

서비스 카탈로그 설정

  • GKE 클러스터에서 서비스 카탈로그 및 서비스 브로커를 설치합니다.
  • 명령줄에서 kubectl을 사용해서 모든 서비스 카탈로그 프로세스를 나열하여 서비스 카탈로그가 실행 중인지 확인합니다.

    kubectl get deployment -n service-catalog

    모든 배포가 AVAILABLE로 보고되어야 합니다.

  • (선택사항) 서비스 카탈로그 리소스 작업과 관련된 사용자 환경을 향상시켜 주는 svcat CLI 도구를 설치합니다.

1단계: 네임스페이스 만들기

네임스페이스는 선택 사항이지만, 이 가이드의 간편한 삭제를 위해 권장됩니다.

환경 변수를 사용해서 네임스페이스 이름의 별칭을 만듭니다.

NAMESPACE=pubsub-app

Cloud Pub/Sub을 사용해서 애플리케이션의 네임스페이스를 만듭니다. 다음 명령어를 실행합니다.

kubectl create namespace [NAMESPACE]

다음 메시지가 출력됩니다.

namespace "pubsub-app" created

2단계: IAM 서비스 계정 만들기

애플리케이션에서 GCP 서비스를 사용하기 위해서는 IAM 서비스 계정이 필요합니다. 이 가이드에서는 ID pubsub-sa를 사용하여 계정을 만듭니다.

그렇지 않으면 서비스 카탈로그를 사용해서 IAM 서비스 계정을 만들 수 있습니다. 이 작업은 cloud-iam-service-account 서비스 클래스의 서비스 인스턴스를 프로비저닝하고 결합하여 수행할 수 있습니다.

IAM 서비스 계정 인스턴스 프로비저닝

다음 명령어를 사용하여 환경 변수에 서비스 계정 이름을 저장합니다.

SERVICE_ACCOUNT_ID=pubsub-sa

svcat

svcat 명령어를 사용하여 서비스 계정 인스턴스를 프로비저닝합니다.

svcat provision gcp-iam \
    --class cloud-iam-service-account \
    --plan beta \
    --namespace [NAMESPACE] \
    --param accountId=$SERVICE_ACCOUNT_ID

이 명령어는 다음 메시지를 출력합니다.

  Name:        gcp-iam
  Namespace:   pubsub-app
  Status:
  Class:       cloud-iam-service-account
  Plan:        beta

Parameters: accountId: pubsub-sa

다음 명령어로 서비스 인스턴스 상태를 확인합니다.

svcat get instance gcp-iam --namespace [NAMESPACE]

출력은 다음과 비슷하게 표시됩니다.

   NAME     NAMESPACE              CLASS             PLAN   STATUS
+---------+------------+---------------------------+------+--------+
  gcp-iam   pubsub-app   cloud-iam-service-account   beta   Ready

서비스 인스턴스가 성공적으로 프로비저닝되면 해당 STATUS가 Ready로 표시됩니다.

kubectl

다음 사양에 따라 iam_instance.yaml이라는 ServiceInstance YAML 파일을 만듭니다. serviceAccount 필드 값이 echo $SERVICE_ACCOUNT_ID와 동일한지 확인합니다.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: gcp-iam
  namespace: pubsub-app
spec:
  # This should match with a SERVICE EXTERNAL NAME
  # in the list of available services.
  clusterServiceClassExternalName: cloud-iam-service-account
  # This should match with a PLAN EXTERNAL NAME
  # in the list of available service plans.
  clusterServicePlanExternalName: beta
  parameters:
    accountId: pubsub-sa

kubectl 명령어로 이 YAML 파일을 사용해서 서비스 계정 인스턴스를 프로비저닝합니다.

kubectl apply -f iam_instance.yaml

이 명령어는 다음 메시지를 출력합니다.

serviceinstance "gcp-iam" created

다음 명령어로 서비스 인스턴스 상태를 확인합니다.

kubectl get serviceinstances gcp-iam -n [NAMESPACE] -o 'custom-columns=INSTANCE-NAME:.metadata.name,SERVICE:.spec.clusterServiceClassExternalName,PLAN:.spec.clusterServicePlanExternalName,STATUS:.status.conditions[0].reason'

출력은 다음과 비슷하게 표시됩니다.

INSTANCE-NAME   SERVICE                     PLAN      STATUS
gcp-iam         cloud-iam-service-account   beta      ProvisionedSuccessfully

서비스 인스턴스가 성공적으로 프로비저닝되었으면 Cloud Console에서 해당 IAM 서비스 계정 pubsub-sa@[PROJECT_ID].iam.gserviceaccount.com을 확인할 수도 있습니다.

IAM 서비스 계정 인스턴스에 결합

서비스 계정 인스턴스에 결합하면 동일 네임스페이스에 보안 비밀이 생성됩니다. 보안 비밀에는 애플리케이션이 쉽게 참조할 수 있는 서비스 계정 이름과 비공개 키가 포함됩니다.

다음 명령어를 사용하여 환경 변수에 보안 비밀 이름을 저장합니다.

SA_SECRET_NAME=pubsub-credentials

svcat

svcat 명령어를 사용하여 서비스 계정 인스턴스에 결합합니다.

svcat bind gcp-iam --namespace [NAMESPACE] --secret-name $SA_SECRET_NAME

이 명령어는 다음 메시지를 출력합니다.

  Name:        gcp-iam
  Namespace:   pubsub-app
  Status:
  Instance:    gcp-iam

Parameters: {}

다음 명령어로 서비스 결합 상태를 확인합니다.

svcat get binding gcp-iam --namespace [NAMESPACE]

출력은 다음과 비슷하게 표시됩니다.

   NAME     NAMESPACE    INSTANCE   STATUS
+---------+------------+----------+--------+
  gcp-iam   pubsub-app   gcp-iam    Ready

계속하기 전에 서비스 결합 상태가 Ready가 될 때까지 기다립니다. 이 작업은 1분 정도 걸릴 수 있습니다.

kubectl

다음 사양에 따라 iam_binding.yaml이라는 ServiceBinding YAML 파일을 만듭니다.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: gcp-iam
  namespace: pubsub-app
spec:
  instanceRef:
    name: gcp-iam
  secretName: pubsub-credentials

다음 명령어를 실행하여 서비스 결합을 만듭니다.

kubectl apply -f iam_binding.yaml

다음 명령어를 실행하여 서비스 결합 상태를 확인합니다.

kubectl get servicebindings gcp-iam -n [NAMESPACE] -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

출력은 다음과 비슷하게 표시됩니다.

BINDING-NAME      SERVICE-INSTANCE   STATUS               OUTPUT-SECRET
gcp-iam           gcp-iam            InjectedBindResult   gcp-iam

서비스 결합이 성공적으로 생성되면 다음 kubectl 명령어를 사용하여 보안 비밀이 존재하는지 확인합니다.

kubectl get secrets $SA_SECRET_NAME --namespace [NAMESPACE]

출력은 다음과 비슷하게 표시됩니다.

NAME                 TYPE      DATA      AGE
pubsub-credentials   Opaque    2         1m

또한 서비스 계정 사용자 인증 정보가 포함된 보안 비밀을 확인할 수 있습니다.

kubectl get secrets $SA_SECRET_NAME --namespace [NAMESPACE] -o yaml

privateKeyData 값은 Base64로 인코딩되었으며 서비스 계정 비공개 키를 포함합니다.

3단계: Pub/Sub 주제 만들기

Pub/Sub 서비스 인스턴스 프로비저닝

이제 서비스 카탈로그를 사용하여 Pub/Sub 서비스 인스턴스를 프로비저닝합니다. 그러면 애플리케이션이 게시하고 읽을 수 있는 Pub/Sub 주제가 생성됩니다.

svcat

svcat 명령어를 사용하여 Pub/Sub 서비스 인스턴스를 프로비저닝합니다.

svcat provision gcp-pubsub \
    --class cloud-pubsub \
    --plan beta \
    --namespace [NAMESPACE] \
    --param topicId=pubsub-app

이 명령어는 다음 메시지를 출력합니다.

  Name:        gcp-pubsub
  Namespace:   pubsub-app
  Status:
  Class:       cloud-pubsub
  Plan:        beta

Parameters: topicId: pubsub-app

다음 명령어로 서비스 인스턴스 상태를 확인합니다.

svcat get instance gcp-pubsub --namespace [NAMESPACE]

출력은 다음과 비슷하게 표시됩니다.

     NAME      NAMESPACE       CLASS       PLAN   STATUS
+------------+------------+--------------+------+--------+
  gcp-pubsub   pubsub-app   cloud-pubsub   beta   Ready

서비스 인스턴스가 성공적으로 프로비저닝되면 해당 STATUS가 Ready로 표시됩니다.

kubectl

다음 사양에 따라 pubsub_instance.yaml이라는 ServiceInstance YAML 파일을 만듭니다.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
  name: gcp-pubsub
  namespace: pubsub-app
spec:
  clusterServiceClassExternalName: cloud-pubsub
  # This should match with a PLAN EXTERNAL NAME
  # in the list of available service plans for Pub/Sub.
  clusterServicePlanExternalName: beta
  parameters:
    topicId: pubsub-app

다음 명령어로 Pub/Sub 서비스 인스턴스를 프로비저닝합니다.

kubectl create -f pubsub_instance.yaml

다음 메시지가 출력됩니다.

serviceinstance "gcp-pubsub" created

다음 명령어로 Pub/Sub 서비스 인스턴스 상태를 확인합니다.

kubectl get serviceinstances gcp-pubsub -n [NAMESPACE] -o 'custom-columns=INSTANCE-NAME:.metadata.name,SERVICE:.spec.clusterServiceClassExternalName,PLAN:.spec.clusterServicePlanExternalName,STATUS:.status.conditions[0].reason'

다음과 비슷한 상태 메시지가 출력됩니다.

INSTANCE-NAME   SERVICE        PLAN      STATUS
gcp-pubsub      cloud-pubsub   beta      ProvisionedSuccessfully

Pub/Sub 서비스 인스턴스가 성공적으로 프로비저닝되었으면 Cloud Console에서 해당 Pub/Sub 주제 projects/[PROJECT_ID]/topics/pubsub-app을 확인할 수도 있습니다.

Pub/Sub 서비스 인스턴스에 결합

Pub/Sub 서비스 인스턴스에 결합하면 다음이 수행됩니다.

  • 지정된 IAM 서비스 계정에 Pub/Sub 서비스에 액세스하기 위한 적합한 권한이 부여됩니다.
  • 서비스 인스턴스에 액세스하는 데 필요한 정보를 Kubernetes 보안 비밀의 형태로 Kubernetes 애플리케이션에 제공합니다.
  • 선택적으로 Pub/Sub 주제에 대한 구독을 만듭니다.

Pub/Sub 주제에 메시지를 게시하기 위해 가정된 서비스 계정 ID로 실행하기 위해서는 앱이 서비스에 액세스하도록 허용되어야 하기 때문에 데모 애플리케이션에서 이를 수행해야 합니다.

Pub/Sub 서비스 클래스에는 여러 유형의 서비스 결합이 포함됩니다. 먼저 roles/pubsub.publisherroles/pubsub.viewer의 두 가지 역할이 포함된 publisher 유형의 서비스 결합을 만듭니다. 이 결합을 통해 서비스 계정이 이 주제에 게시하고 메시지를 볼 수 있습니다.

팁: Cloud Pub/Sub의 IAM 역할 및 권한에 대한 자세한 내용은 Cloud Pub/Sub의 [액세스 제어 문서](/pubsub/docs/access-control#tbl_roles)를 참조하세요.

svcat

svcat 명령어를 사용하여 Pub/Sub 주제에 publisher로 결합합니다.

svcat bind gcp-pubsub --namespace [NAMESPACE] --params-json '{
  "serviceAccount": "'${SERVICE_ACCOUNT_ID}'",
  "roles": [
    "roles/pubsub.publisher",
    "roles/pubsub.viewer"
  ]
}'

이 명령어는 다음 메시지를 출력합니다. serviceAccount 값은 이전에 만든 서비스 계정 이름일 수 있습니다.

  Name:        gcp-pubsub
  Namespace:   pubsub-app
  Status:
  Instance:    gcp-pubsub

Parameters: roles:

  • roles/pubsub.publisher
  • roles/pubsub.viewer serviceAccount: pubsub-sa

다음 명령어로 서비스 결합 상태를 확인합니다.

svcat get binding gcp-pubsub --namespace [NAMESPACE]

출력은 다음과 비슷하게 표시됩니다.

     NAME      NAMESPACE     INSTANCE    STATUS
+------------+------------+------------+--------+
  gcp-pubsub   pubsub-app   gcp-pubsub   Ready

계속하기 전에 서비스 결합 상태가 Ready가 될 때까지 기다립니다. 이 작업은 1분 정도 걸릴 수 있습니다.

kubectl

다음 사양에 따라 pubsub_binding.yaml이라는 ServiceBinding YAML 파일을 만들어서 Pub/Sub 주제에 publisher로 결합합니다. serviceAccount 필드 값이 echo $SERVICE_ACCOUNT_ID와 동일한지 확인합니다.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: gcp-pubsub
  namespace: pubsub-app
spec:
  instanceRef:
    name: gcp-pubsub
  parameters:
    serviceAccount: pubsub-sa
    roles:
    - roles/pubsub.publisher
    - roles/pubsub.viewer

Cloud Pub/Sub 서비스 인스턴스에 결합합니다.

kubectl create -f pubsub_binding.yaml

다음 명령어를 실행하여 서비스 결합 상태를 확인합니다.

kubectl get servicebindings gcp-pubsub -n [NAMESPACE] -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

InjectedBindResult 상태가 표시됩니다.

결합 결과로 생성되는 gcp-pubsub 보안 비밀에는 프로젝트(projectId), 서비스 계정(serviceAccount), 주제 ID(topicId)가 포함됩니다. 다음 명령어를 실행하여 보안 비밀을 확인할 수 있습니다.

kubectl get secrets gcp-pubsub --namespace [NAMESPACE] -o yaml

4단계: 주제에 대한 Pub/Sub 구독 만들기

주제 게시를 위한 Pub/Sub 서비스 인스턴스에 결합과 마찬가지로, 데모 애플리케이션이 주제에서 메시지를 구독하고 읽기 위해서는 서비스 결합이 필요합니다.

이제는 roles/pubsub.subscriberroles/pubsub.viewer의 두 역할과 구독이 포함된 Pub/Sub 서비스 인스턴스에 대한 또 다른 서비스 결합을 만듭니다. 이번에는 subscriber 유형을 사용합니다. 그러면 이 주제에 대한 Pub/Sub 구독이 생성되고, 서비스 계정이 이 구독에서 메시지를 가져오고 확인할 수 있습니다.

svcat

svcat 명령어를 사용하여 Pub/Sub 주제에 subscriber로 결합합니다.

svcat bind gcp-pubsub \
    --name gcp-pubsub-subscription \
    --namespace [NAMESPACE] \
    --params-json '{
      "serviceAccount": "'${SERVICE_ACCOUNT_ID}'",
      "roles": [
        "roles/pubsub.subscriber",
        "roles/pubsub.viewer"
      ],
      "subscription": {
        "subscriptionId": "pubsub-app"
      }
    }'

이 명령어는 다음 메시지를 출력합니다. serviceAccount 값은 이전에 만든 서비스 계정 이름일 수 있습니다.

  Name:        gcp-pubsub-subscription
  Namespace:   pubsub-app
  Status:
  Instance:    gcp-pubsub

Parameters: roles:

  • roles/pubsub.subscriber
  • roles/pubsub.viewer serviceAccount: pubsub-sa subscription: subscriptionId: pubsub-app

다음 명령어로 서비스 결합 상태를 확인합니다.

svcat get binding gcp-pubsub-subscription --namespace [NAMESPACE]

출력은 다음과 비슷하게 표시됩니다.

           NAME             NAMESPACE     INSTANCE    STATUS
+-------------------------+------------+------------+--------+
  gcp-pubsub-subscription   pubsub-app   gcp-pubsub   Ready

계속하기 전에 서비스 결합 상태가 Ready가 될 때까지 기다립니다. 이 작업은 1분 정도 걸릴 수 있습니다.

kubectl

Pub/Sub 주제에 subscriber로 결합되는 pubsub_subscription_binding.yaml이라는 ServiceBinding YAML 파일을 만듭니다. serviceAccount 필드 값이 echo $SERVICE_ACCOUNT_ID와 동일한지 확인합니다.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
  name: gcp-pubsub-subscription
  namespace: pubsub-app
spec:
  instanceRef:
    name: gcp-pubsub
  parameters:
    serviceAccount: pubsub-sa
    roles:
    - roles/pubsub.subscriber
    - roles/pubsub.viewer
    subscription:
      subscriptionId: pubsub-app

Cloud Pub/Sub 서비스 인스턴스에 결합합니다.

kubectl create -f pubsub_subscription_binding.yaml

다음 명령어를 실행하여 서비스 결합 상태를 확인합니다.

kubectl get servicebindings gcp-pubsub-subscription -n [NAMESPACE] -o 'custom-columns=BINDING-NAME:.metadata.name,SERVICE-INSTANCE:.spec.instanceRef.name,STATUS:.status.conditions[0].reason,OUTPUT-SECRET:.spec.secretName'

InjectedBindResult 상태가 표시됩니다.

새로운 구독 projects/[PROJECT_ID]/subscriptions/pubsub-appCloud Console에서 찾을 수 있습니다. 결합 결과로 생성되는 gcp-pubsub-subscription 보안 비밀에는 프로젝트(projectId), 서비스 계정(serviceAccount), 주제 ID(topicId), 구독 ID(subscriptionId)가 포함됩니다. 다음 명령어를 실행하여 보안 비밀을 확인할 수 있습니다.

kubectl get secrets gcp-pubsub-subscription --namespace [NAMESPACE] -o yaml

5단계: 데모 앱으로 Pub/Sub 서비스 테스트

GKE 클러스터에서 데모 앱을 실행하여 Cloud Pub/Sub 서비스 연결을 테스트합니다.

다음 사양에 따라 hello_pubsub_world.yaml이라는 Kubernetes 작업 파일을 만듭니다. 서비스 계정 비공개 키를 저장하기 위해 보안 비밀을 만든 경우 secretName 값을 [SA_SECRET_NAME]으로 바꿉니다.

apiVersion: batch/v1
kind: Job
metadata:
  name: hello-pubsub-world
  namespace: pubsub-app
spec:
  template:
    spec:
      volumes:
        # Make the 'pubsub-credentials' secret available as volume
        # 'google-cloud-key'.
        - name: google-cloud-key
          secret:
            secretName: pubsub-credentials
      restartPolicy: OnFailure
      containers:
        - name: hello-pubsub-world
          image: gcr.io/gcp-services/samples/hello-pubsub-world
          volumeMounts:
            # Mount the 'google-cloud-key' volume into the container file
            # system.
            - name: google-cloud-key
              mountPath: /var/secrets/google
          env:
            # Pass the path to the private key JSON file from the mounted volume
            # to the environment variable.
            - name: "GOOGLE_APPLICATION_CREDENTIALS"
              value: /var/secrets/google/privateKeyData

            # The two environment variables below come from the 'gcp-pubsub'
            # secret and, together, point at the Cloud Pub/Sub topic to use.
            - name: "GOOGLE_CLOUD_PROJECT_ID"
              valueFrom:
                secretKeyRef:
                  # Use the projectId value from the 'gcp-pubsub' secret created
                  # as a result of binding to the Pub/Sub service instance.
                  name: gcp-pubsub
                  key: projectId
            - name: "GOOGLE_CLOUD_PUBSUB_TOPIC"
              valueFrom:
                secretKeyRef:
                  # Use the topicId value from the 'gcp-pubsub' secret created
                  # as a result of binding to the Pub/Sub service instance.
                  name: gcp-pubsub
                  key: topicId

            # The environment variable below come from the
            # 'gcp-pubsub-subscription' secret and, together with the
            # GOOGLE_CLOUD_PROJECT_ID above, point at the Cloud Pub/Sub
            # subscription to use.
            - name: "GOOGLE_CLOUD_PUBSUB_SUBSCRIPTION"
              valueFrom:
                secretKeyRef:
                  # Use the subscriptionId value from the
                  # 'gcp-pubsub-subscription' secret created as a result of the
                  # subscription binding to the Pub/Sub service instance.
                  name: gcp-pubsub-subscription
                  key: subscriptionId

IAM 서비스 계정 및 Pub/Sub 서비스 인스턴스의 결합을 통해 생성된 [SA_SECRET_NAME](새 IAM 서비스 계정을 만든 경우에는 pubsub-credentials), gcp-pubsub, gcp-pubsub-subscription 보안 비밀의 값을 사용하는 방법을 확인합니다.

작업을 만듭니다.

kubectl apply -f hello_pubsub_world.yaml

이 명령어는 다음 메시지를 출력합니다.

job "hello-pubsub-world" created

포드 목록을 확인합니다.

kubectl get pods --namespace [NAMESPACE] --show-all

다음과 비슷하게, 해당 네임스페이스에서 실행되는 포드의 세부정보가 표시됩니다.

NAME                       READY     STATUS      RESTARTS   AGE
hello-pubsub-world-zh8hm   0/1       Completed   0          1m

포드 상태가 Completed가 될 때까지 기다린 후 다음 명령어로 포드 로그를 확인합니다.

kubectl -n [NAMESPACE] logs [POD_NAME]

다음과 비슷한 항목이 포함된 행이 표시됩니다.

Publishing 10 messages.
Publishing done.
Subscribing 10 messages.
Got message: "hello world #9"
Got message: "hello world #0"
Got message: "hello world #1"
Got message: "hello world #2"
Got message: "hello world #3"
Got message: "hello world #4"
Got message: "hello world #5"
Got message: "hello world #6"
Got message: "hello world #7"
Got message: "hello world #8"
Subscription done.

삭제

이 가이드에서 사용한 리소스 비용이 Google Cloud Platform 계정에 청구되지 않도록 하는 방법은 다음과 같습니다.

  1. 데모 네임스페이스를 삭제하면 앱, 서비스 결합, 서비스 인스턴스가 삭제됩니다.

    kubectl delete namespace [NAMESPACE]
  2. 서비스 카탈로그 삭제에 대한 자세한 내용은 이 가이드를 참조하세요.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine 문서