Configurare l’applicazione Quarkus per connettersi alle risorse

La configurazione dell’applicazione Quarkus per connettersi alle risorse
create sul cluster OpenShift è abbastanza semplice e richiede solo di
aggiungere le informazioni di connessione alle risorse nel file di
configurazione application.properties dell’applicazione Quarkus.
Per questa configurazione adotteremo la strategia di usare ConfigMap e Secret per la configurazione delle risorse esterne come il broker AMQP Apache ActiveMQ Artemis e il database NoSQL MongoDB. Questa strategia è molto utile perché permette di separare le informazioni di configurazione dall’applicazione e di gestirle in modo centralizzato, e in particolare di gestire le informazioni sensibili come username e password in modo sicuro.
Per fare ciò, è necessario creare due risorse, una di tipo ConfigMap e
due di tipo Secret, per contenere le informazioni di configurazione del
broker AMQP Apache ActiveMQ Artemis e del database NoSQL MongoDB. I
descrittore YAML delle risorse ConfigMap e Secret li dobbiamo scrivere
noi perché non se occuperà il plugin quarkus-openshift; quest’ultimo
si occuperà però di aggiungere queste risorse allo yaml finale di deploy
dell’applicazione Quarkus (che ricordiamo essere posizionato in
target/kubernetes/openshift.yml).
Detto ciò, andremo a posizionare il file common.yml all’interno del
folder src/main/kubernets. A seguire il descrittore YAML per la
ConfigMap e per il Secret.
Descrittore YAML per la ConfigMap e il Secret per il broker AMQP Apache ActiveMQ Artemis e per il database NoSQL MongoDB
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: amqp-hostname-port
    data:
      amqp-host: activemq-artemis
      amqp-port: 5672
    binaryData: {}
    immutable: false
    ---
    kind: Secret
    apiVersion: v1
    metadata:
      name: amqp-username-password
    data:
      amqp-password: YXJ0ZW1pcw==
      amqp-username: YXJ0ZW1pcw==
    type: Opaque
    ---
    kind: Secret
    apiVersion: v1
    metadata:
      name: mongodb
    data:
      mongodb-connection-url: bW9uZ29kYjovL21vbmdvOjI3MDE3L2F1ZGl0Cg==
    type: Opaque
La configurazione del file application.properties dell’applicazione
Quarkus per connettersi al broker AMQP e a MongoDB, deve essere quindi
modificata come segue. In particolare:
la proprietà
quarkus.openshift.env.configmapsdeve contenere il nome della ConfigMap che preserva l’hostname e la porta del broker AMQP;la proprietà
quarkus.openshift.env.secretsdeve contenere il nome del Secret dedicato al broker AMQP e al database NoSQL MongoDB;le proprietà
quarkus.amqp-host,quarkus.amqp-port,quarkus.amqp-username,quarkus.amqp-passwordsono utilizzate per la connessione al broker AMQP i cui valori sono forniti dalla ConfigMap e dal Secret;la proprietà
quarkus.mongodb.connection-stringè utilizzata per la connessione al database NoSQL MongoDB i cui valori sono forniti dal Secret.
Configurazione per connettersi al broker AMQP e al database NoSQL MongoDB
# The name of the ConfigMap that contains the AMQP host, port
quarkus.openshift.env.configmaps=amqp-hostname-port
# The name of the Secret that contains the AMQP username and password
# and the MongoDB connection URL (that will be contained the username and password)
quarkus.openshift.env.secrets=amqp-username-password,mongodb
# AMQP configuration for production profile
# The AMQP host, port, username, and password
# are provided by the ConfigMap and Secret.
# See the src/kubernetes/common.yaml file for more details.
%prod.amqp-host=${AMQP_HOSTNAME}
%prod.amqp-port=${AMQP_PORT}
%prod.amqp-username=${AMQP_USERNAME}
%prod.amqp-password=${AMQP_PASSWORD}
# Configure the mongoDB client for a single instance on localhost
# are privided by the Secret.
# See the src/kubernetes/common.yaml file for more details.
%prod.quarkus.mongodb.connection-string=${MONGODB_CONNECTION_URL}
I valori delle proprietà quarkus.amqp-host, quarkus.amqp-port,
quarkus.amqp-username, quarkus.amqp-password e
quarkus.mongodb.connection-string sono forniti dalla ConfigMap e dal
Secret come variabili d’ambiente, e sono accessibili nella forma
${NOME_VARIABILE} all’interno del file application.properties. La
magia di questo meccanismo parte da qui, esattamente dalla riga 4 alla
riga 10 dell’estratto del file openshift.yml generato dal plugin
quarkus-openshift.
Estratto del file openshift.yml generato dal
plugin quarkus-openshift
            - env:
                - name: JAVA_APP_JAR
                  value: /deployments/quarkus-run.jar
              envFrom:
                - secretRef:
                    name: amqp-username-password
                - secretRef:
                    name: mongodb
                - configMapRef:
                    name: amqp-hostname-port
              image: eventbus-logging-filter-jaxrs:1.0.0-SNAPSHOT
Le informazioni autenticazione, come username e password sono quelle di default per l’immagine Docker di Apache ActiveMQ Artemis e di MongoDB.
Ricordiamo che ovviamente questa non è una buona pratica e che dovreste cambiare queste informazioni con quelle che ritenete più sicure per il vostro ambiente di produzione!








