6.5. Démarrer avec le service binding sur IBM Power, IBM zSystems et IBM(R) LinuxONE
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
-
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
-
Pour IBM Power :
Vérification
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
Créez le CR
Database
dans l'espace de nomsmy-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
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
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
NoteSi 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
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
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
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
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
.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
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
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.