Rechercher

6.5. Démarrer avec le service binding sur IBM Power, IBM zSystems et IBM(R) LinuxONE

download PDF

Le Service Binding Operator gère le plan de données pour les charges de travail et les services d'appui. Ce guide fournit des instructions et des exemples pour vous aider à créer une instance de base de données, à déployer une application et à utiliser l'opérateur de liaison de services pour créer une connexion de liaison entre l'application et le service de base de données.

Conditions préalables

  • Vous avez accès à un cluster OpenShift Container Platform en utilisant un compte avec des permissions cluster-admin.
  • Vous avez installé le CLI oc.
  • Vous avez installé le Service Binding Operator depuis OperatorHub.

6.5.1. Déployer un opérateur PostgreSQL

Procédure

  1. Pour déployer l'opérateur PostgreSQL de Dev4Devs dans l'espace de noms my-petclinic, exécutez la commande suivante dans l'interpréteur de commandes :
$ 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
L'image de l'opérateur.
  • Pour IBM Power : quay.io/ibm/operator-registry-ppc64le:release-4.9
  • Pour IBM zSystems et IBM® LinuxONE : quay.io/ibm/operator-registry-s390x:release-4.8

Vérification

  1. Une fois l'opérateur installé, dressez la liste des abonnements à l'opérateur dans l'espace de noms openshift-operators:

    $ oc get subs -n openshift-operators

    Exemple de sortie

    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. Création d'une instance de base de données PostgreSQL

Pour créer une instance de base de données PostgreSQL, vous devez créer une ressource personnalisée (CR) Database et configurer la base de données.

Procédure

  1. Créez le CR Database dans l'espace de noms my-petclinic en exécutant la commande suivante dans l'interpréteur de commandes :

    $ 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

    Les annotations ajoutées dans cette CR Database activent la connexion de liaison de service et déclenchent le rapprochement de l'opérateur.

    La sortie vérifie que l'instance de la base de données est créée :

    Exemple de sortie

    database.postgresql.dev4devs.com/sampledatabase created

  2. Après avoir créé l'instance de la base de données, assurez-vous que tous les pods de l'espace de noms my-petclinic sont en cours d'exécution :

    $ oc get pods -n my-petclinic

    La sortie, qui prend quelques minutes à s'afficher, vérifie que la base de données est créée et configurée :

    Exemple de sortie

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

Une fois la base de données configurée, vous pouvez déployer l'application d'exemple et la connecter au service de base de données.

6.5.3. Déploiement de l'exemple d'application Spring PetClinic

Pour déployer l'application d'exemple Spring PetClinic sur un cluster OpenShift Container Platform, vous devez utiliser une configuration de déploiement et configurer votre environnement local pour pouvoir tester l'application.

Procédure

  1. Déployez l'application spring-petclinic avec la ressource personnalisée (CR) PostgresCluster en exécutant la commande suivante dans le shell :

    $ 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

    La sortie vérifie que l'exemple d'application Spring PetClinic est créé et déployé :

    Exemple de sortie

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

    Note

    Si vous déployez l'application à l'aide de Container images dans la perspective Developer de la console web, vous devez entrer les variables d'environnement suivantes dans la section Deployment de la page Advanced options:

    • Nom : SPRING_PROFILES_ACTIVE
    • Valeur : postgres
  2. Vérifiez que l'application n'est pas encore connectée au service de base de données en exécutant la commande suivante :

    $ oc get pods -n my-petclinic

    Il faut quelques minutes pour que l'état de CrashLoopBackOff s'affiche :

    Exemple de sortie

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

    À ce stade, le pod ne démarre pas. Si vous essayez d'interagir avec l'application, elle renvoie des erreurs.

Vous pouvez maintenant utiliser l'opérateur de liaison de service pour connecter l'application au service de base de données.

6.5.4. Connexion de l'application d'exemple Spring PetClinic au service de base de données PostgreSQL

Pour connecter l'exemple d'application au service de base de données, vous devez créer une ressource personnalisée (CR) ServiceBinding qui déclenche le Service Binding Operator pour projeter les données de liaison dans l'application.

Procédure

  1. Créez un CR ServiceBinding pour projeter les données de la reliure :

    $ 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
    Spécifie une liste de ressources de service.
    2
    Le CR de la base de données.
    3
    L'exemple d'application qui pointe vers un déploiement ou toute autre ressource similaire avec une PodSpec intégrée.

    La sortie vérifie que le CR ServiceBinding est créé pour projeter les données de reliure dans l'exemple d'application.

    Exemple de sortie

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

  2. Vérifier que la demande de liaison de service a abouti :

    $ oc get servicebindings -n my-petclinic

    Exemple de sortie

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

    Par défaut, les valeurs des données de liaison du service de base de données sont projetées sous forme de fichiers dans le conteneur de charge de travail qui exécute l'exemple d'application. Par exemple, toutes les valeurs de la ressource Secret sont projetées dans le répertoire bindings/spring-petclinic-pgcluster.

  3. Une fois la connexion créée, vous pouvez accéder à la topologie pour voir la connexion visuelle.

    Figure 6.1. Connexion de spring-petclinic à une base de données d'échantillons

    img power
  4. Configurez le transfert de port à partir du port d'application pour accéder à l'exemple d'application à partir de votre environnement local :

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

    Exemple de sortie

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

  5. Accès http://localhost:8080.

    Vous pouvez maintenant accéder à distance à l'application d'exemple Spring PetClinic sur localhost:8080 et constater que l'application est désormais connectée au service de base de données.

6.5.5. Ressources complémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.