6.4. Premiers pas avec la liaison de service


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é Service Binding Operator depuis OperatorHub.
  • Vous avez installé la version 5.1.2 de l'Opérateur Crunchy Postgres pour Kubernetes depuis OperatorHub en utilisant le canal v5 Update. L'opérateur installé est disponible dans un espace de noms approprié, tel que l'espace de noms my-petclinic.

    Note

    Vous pouvez créer l'espace de noms à l'aide de la commande oc create namespace my-petclinic.

6.4.1. 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) PostgresCluster et configurer la base de données.

Procédure

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

    $ 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

    Les annotations ajoutées dans cette CR PostgresCluster 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

    postgrescluster.postgres-operator.crunchydata.com/hippo 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
    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

    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.4.2. 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
              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

    La sortie prend quelques minutes pour afficher l'état de CrashLoopBackOff:

    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.

  3. Exposez le service pour créer une route pour votre application :

    $ oc expose service spring-petclinic -n my-petclinic

    La sortie vérifie que le service spring-petclinic est exposé et qu'une route pour l'exemple d'application Spring PetClinic est créée :

    Exemple de sortie

    route.route.openshift.io/spring-petclinic exposed

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

6.4.3. 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: postgres-operator.crunchydata.com
          version: v1beta1
          kind: PostgresCluster 2
          name: hippo
      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-pgcluster   True    ApplicationsBound   7s

    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.

    Note

    En option, vous pouvez également vérifier que les fichiers de l'application contiennent les données de reliure projetées, en imprimant le contenu du répertoire :

    $ 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

    Exemple de résultat : Avec toutes les valeurs de la ressource secrète

    /bindings/spring-petclinic-pgcluster/username: hippo
    /bindings/spring-petclinic-pgcluster/password: KXKF{nAI,I-J6zLt:W+FKnze
    /bindings/spring-petclinic-pgcluster/host: hippo-primary.my-petclinic.svc
    /bindings/spring-petclinic-pgcluster/port: 5432
    /bindings/spring-petclinic-pgcluster/type: postgresql

  3. 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

  4. Accès http://localhost:8080/petclinic.

    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.4.4. 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.