6.4. 서비스 바인딩 시작하기


Service Binding Operator는 워크로드 및 백업 서비스의 데이터 플레인을 관리합니다. 이 가이드에서는 데이터베이스 인스턴스를 생성하고, 애플리케이션을 배포하며, Service Binding Operator를 사용하여 애플리케이션과 데이터베이스 서비스 간 바인딩 연결을 생성하는 데 도움이 되는 예제를 제공합니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • oc CLI를 설치했습니다.
  • OperatorHub에서 Service Binding Operator를 설치했습니다.
  • v5 업데이트 채널을 사용하여 OperatorHub에서 OperatorHub에서 5.1.2 버전의 Crunchy Postgres for Kubernetes Operator를 설치했습니다. 설치된 Operator는 my-petclinic 네임스페이스와 같이 적절한 네임스페이스에서 사용할 수 있습니다.

    참고

    oc create namespace my-petclinic 명령을 사용하여 네임스페이스를 생성할 수 있습니다.

6.4.1. PostgreSQL 데이터베이스 인스턴스 생성

PostgreSQL 데이터베이스 인스턴스를 생성하려면 PostgresCluster 사용자 정의 리소스(CR)를 생성하고 데이터베이스를 구성해야 합니다.

절차

  1. 쉘에서 다음 명령을 실행하여 my-petclinic 네임스페이스에 PostgresCluster CR을 생성합니다.

    $ oc apply -n my-petclinic -f - << EOD
    ---
    apiVersion: postgres-operator.crunchydata.com/v1beta1
    kind: PostgresCluster
    metadata:
      name: hippo
    spec:
      image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.4-0
      postgresVersion: 14
      instances:
        - name: instance1
          dataVolumeClaimSpec:
            accessModes:
            - "ReadWriteOnce"
            resources:
              requests:
                storage: 1Gi
      backups:
        pgbackrest:
          image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.38-0
          repos:
          - name: repo1
            volume:
              volumeClaimSpec:
                accessModes:
                - "ReadWriteOnce"
                resources:
                  requests:
                    storage: 1Gi
    EOD
    Copy to Clipboard Toggle word wrap

    PostgresCluster CR에 추가된 주석은 서비스 바인딩 연결을 활성화하고 Operator 조정을 트리거합니다.

    출력에서 데이터베이스 인스턴스가 생성되었는지 확인합니다.

    출력 예

    postgrescluster.postgres-operator.crunchydata.com/hippo created
    Copy to Clipboard Toggle word wrap

  2. 데이터베이스 인스턴스를 생성한 후 my-petclinic 네임스페이스의 모든 Pod가 실행 중인지 확인합니다.

    $ oc get pods -n my-petclinic
    Copy to Clipboard Toggle word wrap

    표시되는 데 몇 분 정도 걸리며 데이터베이스가 생성되고 구성되었는지 확인합니다.

    출력 예

    NAME                                     READY    STATUS      RESTARTS   AGE
    hippo-backup-9rxm-88rzq                   0/1     Completed   0          2m2s
    hippo-instance1-6psd-0                    4/4     Running     0          3m28s
    hippo-repo-host-0                         2/2     Running     0          3m28s
    Copy to Clipboard Toggle word wrap

    데이터베이스가 구성된 후 샘플 애플리케이션을 배포하여 데이터베이스 서비스에 연결할 수 있습니다.

6.4.2. Spring PetClinic 샘플 애플리케이션 배포

OpenShift Container Platform 클러스터에 Spring PetClinic 샘플 애플리케이션을 배포하려면 배포 구성을 사용하고 애플리케이션을 테스트할 수 있도록 로컬 환경을 구성해야 합니다.

절차

  1. 쉘에서 다음 명령을 실행하여 PostgresCluster 사용자 정의 리소스(CR)를 사용하여 spring-petclinic 애플리케이션을 배포합니다.

    $ oc apply -n my-petclinic -f - << EOD
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: spring-petclinic
      labels:
        app: spring-petclinic
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: spring-petclinic
      template:
        metadata:
          labels:
            app: spring-petclinic
        spec:
          containers:
            - name: app
              image: quay.io/service-binding/spring-petclinic:latest
              imagePullPolicy: Always
              env:
              - name: SPRING_PROFILES_ACTIVE
                value: postgres
              ports:
              - name: http
                containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: spring-petclinic
      name: spring-petclinic
    spec:
      type: NodePort
      ports:
        - port: 80
          protocol: TCP
          targetPort: 8080
      selector:
        app: spring-petclinic
    EOD
    Copy to Clipboard Toggle word wrap

    출력에서 Spring PetClinic 샘플 애플리케이션이 생성되고 배포되었는지 확인합니다.

    출력 예

    deployment.apps/spring-petclinic created
    service/spring-petclinic created
    Copy to Clipboard Toggle word wrap

    참고

    웹 콘솔의 개발자 화면에 컨테이너 이미지를 사용하여 애플리케이션을 배포하는 경우 고급 옵션Deployment 섹션에서 다음 환경 변수를 입력해야 합니다.

    • 이름: SPRING_PROFILES_ACTIVE
    • 값: postgres
  2. 다음 명령을 실행하여 애플리케이션이 아직 데이터베이스 서비스에 연결되지 않았는지 확인합니다.

    $ oc get pods -n my-petclinic
    Copy to Clipboard Toggle word wrap

    CrashLoopBackOff 상태를 표시하는 데 몇 분이 걸립니다.

    출력 예

    NAME                                READY   STATUS             RESTARTS      AGE
    spring-petclinic-5b4c7999d4-wzdtz   0/1     CrashLoopBackOff   4 (13s ago)   2m25s
    Copy to Clipboard Toggle word wrap

    이 단계에서 Pod가 시작되지 않습니다. 애플리케이션과 상호 작용하려고 하면 오류가 반환됩니다.

  3. 애플리케이션의 경로를 생성하기 위해 서비스를 노출합니다.

    $ oc expose service spring-petclinic -n my-petclinic
    Copy to Clipboard Toggle word wrap

    출력은 Spring -petclinic 서비스가 노출되고 Spring PetClinic 샘플 애플리케이션의 경로가 생성되는 것을 확인합니다.

    출력 예

    route.route.openshift.io/spring-petclinic exposed
    Copy to Clipboard Toggle word wrap

Service Binding Operator를 사용하여 애플리케이션을 데이터베이스 서비스에 연결할 수 있습니다.

샘플 애플리케이션을 데이터베이스 서비스에 연결하려면 Service Binding Operator를 트리거하는 ServiceBinding CR(사용자 정의 리소스)을 생성하여 바인딩 데이터를 애플리케이션에 투사해야 합니다.

절차

  1. 바인딩 데이터를 프로젝트에 ServiceBinding CR을 생성합니다.

    $ oc apply -n my-petclinic -f - << EOD
    ---
    apiVersion: binding.operators.coreos.com/v1alpha1
    kind: ServiceBinding
    metadata:
      name: spring-petclinic-pgcluster
    spec:
      services: 
    1
    
        - group: postgres-operator.crunchydata.com
          version: v1beta1
          kind: PostgresCluster 
    2
    
          name: hippo
      application: 
    3
    
        name: spring-petclinic
        group: apps
        version: v1
        resource: deployments
    EOD
    Copy to Clipboard Toggle word wrap
    1
    서비스 리소스 목록을 지정합니다.
    2
    데이터베이스의 CR입니다.
    3
    배포 또는 포함된 PodSpec이 포함된 기타 유사한 리소스를 가리키는 샘플 애플리케이션입니다.

    출력에서는 ServiceBinding CR이 샘플 애플리케이션에 바인딩 데이터를 배포하도록 생성되었는지 확인합니다.

    출력 예

    servicebinding.binding.operators.coreos.com/spring-petclinic created
    Copy to Clipboard Toggle word wrap

  2. 서비스 바인딩 요청이 성공했는지 확인합니다.

    $ oc get servicebindings -n my-petclinic
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                         READY   REASON              AGE
    spring-petclinic-pgcluster   True    ApplicationsBound   7s
    Copy to Clipboard Toggle word wrap

    기본적으로 데이터베이스 서비스의 바인딩 데이터의 값은 샘플 애플리케이션을 실행하는 워크로드 컨테이너에 파일로 프로젝션됩니다. 예를 들어 Secret 리소스의 모든 값은 bindings/spring-petclinic-pgcluster 디렉터리에 예상됩니다.

    참고

    선택적으로 디렉터리 콘텐츠를 출력하여 애플리케이션의 파일에 예상 바인딩 데이터가 포함되어 있는지 확인할 수도 있습니다.

    $ for i in username password host port type; do oc exec -it deploy/spring-petclinic -n my-petclinic -- /bin/bash -c 'cd /tmp; find /bindings/*/'$i' -exec echo -n {}:" " \; -exec cat {} \;'; echo; done
    Copy to Clipboard Toggle word wrap

    출력 예: 시크릿 리소스의 모든 값

    /bindings/spring-petclinic-pgcluster/username: <username>
    /bindings/spring-petclinic-pgcluster/password: <password>
    /bindings/spring-petclinic-pgcluster/host: hippo-primary.my-petclinic.svc
    /bindings/spring-petclinic-pgcluster/port: 5432
    /bindings/spring-petclinic-pgcluster/type: postgresql
    Copy to Clipboard Toggle word wrap

  3. 애플리케이션 포트에서 포트 전달을 설정하여 로컬 환경에서 샘플 애플리케이션에 액세스합니다.

    $ oc port-forward --address 0.0.0.0 svc/spring-petclinic 8080:80 -n my-petclinic
    Copy to Clipboard Toggle word wrap

    출력 예

    Forwarding from 0.0.0.0:8080 -> 8080
    Handling connection for 8080
    Copy to Clipboard Toggle word wrap

  4. http://localhost:8080/petclinic 에 액세스합니다.

    이제 localhost:8080에서 Spring PetClinic 샘플 애플리케이션에 원격으로 액세스하여 애플리케이션이 이제 데이터베이스 서비스에 연결되어 있음을 확인할 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat