14장. 서비스 메시에서 싱크 바인딩 사용


Service Mesh와 함께 싱크 바인딩을 사용할 수 있습니다.

14.1. 서비스 메시를 사용하여 싱크 바인딩 구성

다음 절차에서는 Service Mesh를 사용하여 싱크 바인딩을 구성하는 방법을 설명합니다.

사전 요구 사항

  • Service Mesh 및 Serverless의 통합을 설정했습니다.

프로세스

  1. Service MeshMemberRoll 의 멤버인 네임스페이스에 Service 오브젝트를 생성합니다.

    event-display-service.yaml 구성 파일의 예

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: event-display
      namespace: <namespace> 1
    spec:
      template:
        metadata:
          annotations:
            sidecar.istio.io/inject: "true" 2
            sidecar.istio.io/rewriteAppHTTPProbers: "true"
        spec:
          containers:
          - image: quay.io/openshift-knative/knative-eventing-sources-event-display:latest

    1
    ServiceMeshMemberRoll 의 멤버인 네임스페이스입니다.
    2
    이 주석은 Service Mesh 사이드카를 Knative 서비스 Pod에 삽입합니다.
  2. Service 오브젝트를 적용합니다.

    $ oc apply -f event-display-service.yaml
  3. SinkBinding 오브젝트를 생성합니다.

    heartbeat-sinkbinding.yaml 구성 파일의 예

    apiVersion: sources.knative.dev/v1alpha1
    kind: SinkBinding
    metadata:
      name: bind-heartbeat
      namespace: <namespace> 1
    spec:
      subject:
        apiVersion: batch/v1
        kind: Job 2
        selector:
          matchLabels:
            app: heartbeat-cron
    
      sink:
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: event-display

    1
    ServiceMeshMemberRoll 의 일부인 네임스페이스입니다.
    2
    app: heartbeat-cron 라벨을 이벤트 싱크에 모든 작업을 바인딩합니다.
  4. SinkBinding 오브젝트를 적용합니다.

    $ oc apply -f heartbeat-sinkbinding.yaml
  5. CronJob 오브젝트를 생성합니다.

    heartbeat-cronjob.yaml 구성 파일의 예

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: heartbeat-cron
      namespace: <namespace> 1
    spec:
      # Run every minute
      schedule: "* * * * *"
      jobTemplate:
        metadata:
          labels:
            app: heartbeat-cron
            bindings.knative.dev/include: "true"
        spec:
          template:
            metadata:
              annotations:
                sidecar.istio.io/inject: "true" 2
                sidecar.istio.io/rewriteAppHTTPProbers: "true"
            spec:
              restartPolicy: Never
              containers:
                - name: single-heartbeat
                  image: quay.io/openshift-knative/heartbeats:latest
                  args:
                    - --period=1
                  env:
                    - name: ONE_SHOT
                      value: "true"
                    - name: POD_NAME
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.name
                    - name: POD_NAMESPACE
                      valueFrom:
                        fieldRef:
                          fieldPath: metadata.namespace

    1
    ServiceMeshMemberRoll 의 일부인 네임스페이스입니다.
    2
    서비스 메시 사이드카를 CronJob Pod에 삽입합니다.
  6. CronJob 오브젝트를 적용합니다.

    $ oc apply -f heartbeat-cronjob.yaml
  7. 선택 사항: 메시지 덤퍼 기능 로그를 확인하여 이벤트가 Knative 이벤트 싱크로 전송되었는지 확인합니다.

    명령 예

    $ oc logs $(oc get pod -o name | grep event-display) -c user-container

    출력 예

    ☁️  cloudevents.Event
    Validation: valid
    Context Attributes,
      specversion: 1.0
      type: dev.knative.eventing.samples.heartbeat
      source: https://knative.dev/eventing-contrib/cmd/heartbeats/#event-test/mypod
      id: 2b72d7bf-c38f-4a98-a433-608fbcdd2596
      time: 2019-10-18T15:23:20.809775386Z
      contenttype: application/json
    Extensions,
      beats: true
      heart: yes
      the: 42
    Data,
      {
        "id": 1,
        "label": ""
      }

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.