6.5. IBM Power Systems, IBM Z 및 LinuxONE에서 서비스 바인딩 시작하기


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

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • oc CLI를 설치했습니다.
  • OperatorHub에서 Service Binding Operator를 설치했습니다.

6.5.1. PostgreSQL Operator 배포

절차

  1. Dev4Devs PostgreSQL Operator를 my-petclinic 네임스페이스에 배포하려면 쉘에서 다음 명령을 실행합니다.
$ oc apply -f - << EOD
---
apiVersion: v1
kind: Namespace
metadata:
  name: my-petclinic
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
  name: postgres-operator-group
  namespace: my-petclinic
---
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: ibm-multiarch-catalog
  namespace: openshift-marketplace
spec:
  sourceType: grpc
  image: quay.io/ibm/operator-registry-<architecture> 
1

  imagePullPolicy: IfNotPresent
  displayName: ibm-multiarch-catalog
  updateStrategy:
    registryPoll:
      interval: 30m
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: postgresql-operator-dev4devs-com
  namespace: openshift-operators
spec:
  channel: alpha
  installPlanApproval: Automatic
  name: postgresql-operator-dev4devs-com
  source: ibm-multiarch-catalog
  sourceNamespace: openshift-marketplace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: database-view
  labels:
    servicebinding.io/controller: "true"
rules:
  - apiGroups:
      - postgresql.dev4devs.com
    resources:
      - databases
    verbs:
      - get
      - list
EOD
1
Operator 이미지.
  • IBM Power의 경우 quay.io/ibm/operator-registry-ppc64le:release-4.9
  • For IBM Z and LinuxONE: quay.io/ibm/operator-registry-s390x:release-4.8

검증

  1. Operator가 설치되면 openshift-operators 네임스페이스에 Operator 서브스크립션을 나열합니다.

    $ oc get subs -n openshift-operators

    출력 예

    NAME                               PACKAGE                            SOURCE                  CHANNEL
    postgresql-operator-dev4devs-com   postgresql-operator-dev4devs-com   ibm-multiarch-catalog   alpha
    rh-service-binding-operator        rh-service-binding-operator        redhat-operators        stable

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

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

절차

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

    $ oc apply -f - << EOD
    apiVersion: postgresql.dev4devs.com/v1alpha1
    kind: Database
    metadata:
      name: sampledatabase
      namespace: my-petclinic
      annotations:
        host: sampledatabase
        type: postgresql
        port: "5432"
        service.binding/database: 'path={.spec.databaseName}'
        service.binding/port: 'path={.metadata.annotations.port}'
        service.binding/password: 'path={.spec.databasePassword}'
        service.binding/username: 'path={.spec.databaseUser}'
        service.binding/type: 'path={.metadata.annotations.type}'
        service.binding/host: 'path={.metadata.annotations.host}'
    spec:
      databaseCpu: 30m
      databaseCpuLimit: 60m
      databaseMemoryLimit: 512Mi
      databaseMemoryRequest: 128Mi
      databaseName: "sampledb"
      databaseNameKeyEnvVar: POSTGRESQL_DATABASE
      databasePassword: "samplepwd"
      databasePasswordKeyEnvVar: POSTGRESQL_PASSWORD
      databaseStorageRequest: 1Gi
      databaseUser: "sampleuser"
      databaseUserKeyEnvVar: POSTGRESQL_USER
      image: registry.redhat.io/rhel8/postgresql-13:latest
      databaseStorageClassName: nfs-storage-provisioner
      size: 1
    EOD

    데이터베이스 CR에 추가된 주석을 사용하면 서비스 바인딩 연결을 활성화하고 Operator 조정을 트리거합니다.

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

    출력 예

    database.postgresql.dev4devs.com/sampledatabase created

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

    $ oc get pods -n my-petclinic

    표시되는 데 몇 분이 걸리는 출력은 데이터베이스가 생성 및 구성되어 있는지 확인합니다.

    출력 예

    NAME                                     READY    STATUS      RESTARTS   AGE
    sampledatabase-cbc655488-74kss            0/1     Running        0       32s

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

6.5.3. 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
              - name: org.springframework.cloud.bindings.boot.enable
                value: "true"
              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

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

    출력 예

    deployment.apps/spring-petclinic created
    service/spring-petclinic created

    참고

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

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

    $ oc get pods -n my-petclinic

    CrashLoopBackOff 상태가 표시될 때까지 몇 분이 걸립니다.

    출력 예

    NAME                                READY   STATUS             RESTARTS      AGE
    spring-petclinic-5b4c7999d4-wzdtz   0/1     CrashLoopBackOff   4 (13s ago)   2m25s

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

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: postgresql.dev4devs.com
          kind: Database 
    2
    
          name: sampledatabase
          version: v1alpha1
      application: 
    3
    
        name: spring-petclinic
        group: apps
        version: v1
        resource: deployments
    EOD
    1
    서비스 리소스 목록을 지정합니다.
    2
    데이터베이스의 CR입니다.
    3
    포함된 PodSpec이 있는 Deployment 또는 기타 유사한 리소스를 가리키는 샘플 애플리케이션입니다.

    출력은 바인딩 데이터를 샘플 애플리케이션에 프로젝트에 생성하기 위해 ServiceBinding CR이 생성되었는지 확인합니다.

    출력 예

    servicebinding.binding.operators.coreos.com/spring-petclinic created

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

    $ oc get servicebindings -n my-petclinic

    출력 예

    NAME                          READY   REASON              AGE
    spring-petclinic-postgresql   True    ApplicationsBound   47m

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

  3. 이 구성을 만든 후에는 토폴로지로 이동하여 시각적 연결을 확인할 수 있습니다.

    그림 6.1. Spring-petclinic을 샘플 데이터베이스에 연결

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

    $ oc port-forward --address 0.0.0.0 svc/spring-petclinic 8080:80 -n my-petclinic

    출력 예

    Forwarding from 0.0.0.0:8080 -> 8080
    Handling connection for 8080

  5. http://localhost:8080 에 액세스 .

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

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동