Configurare l’applicazione Quarkus per connettersi alle risorse

banner

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:

  1. la proprietà quarkus.openshift.env.configmaps deve contenere il nome della ConfigMap che preserva l’hostname e la porta del broker AMQP;

  2. la proprietà quarkus.openshift.env.secrets deve contenere il nome del Secret dedicato al broker AMQP e al database NoSQL MongoDB;

  3. le proprietà quarkus.amqp-host, quarkus.amqp-port, quarkus.amqp-username, quarkus.amqp-password sono utilizzate per la connessione al broker AMQP i cui valori sono forniti dalla ConfigMap e dal Secret;

  4. 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!

Post correlati

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

#TheRedComics

Edizione di Ottobre

A cura di Sophie Aiello, copy di Chiara Romano

Fumetto di agosto di Sophie Aiello

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!