Aller au contenu principal

Noyau d’Ilum

Configuration du graphique helm Ilum Core.

TL; DR

$ helm repo ajouter ilum https://charts.ilum.cloud
$ helm install ilum-core ilum/ilum-core

Installation de la carte

Pour installer le graphique avec le nom de la version ilum-core:

$ helm install ilum-core ilum/ilum-core

La commande se déploie ilum-core sur le cluster Kubernetes dans la configuration par défaut. Le Paramètres liste les paramètres qui peuvent être configurés lors de l’installation.

Désinstallation du graphique

Pour désinstaller/supprimer le ilum-core déploiement:

$ helm delete ilum-core

La commande supprime tous les composants Kubernetes associés au graphique et supprime la version.

Paramètres

Paramètres communs

NomDescriptionValeur
nomRemplacementChaîne pour remplacer partiellement le modèle ilum-core.fullname (conservera le nom de la version)""
replicaCountNombre de répliques d’ilum-core1
fullnameRemplacerChaîne pour remplacer entièrement le modèle ilum-core.fullname""
nodeSelectorContrainte de sélection du nœud ilum-core
tolérancesTolérations des pods ilum-core[]
affinitéAffinité entre le nœud ILUM et le noyau

Paramètres de déploiement d’ilum-core

NomDescriptionValeur
imageimage ilum-coreilum/core :6.2.0
pullPolicyPolitique d’extraction d’images ilum-coreIfNotPresent
imagePullSecretsSecrets d’extraction d’images ilum-core[]

Paramètres de communication ilum-core

NomDescriptionValeur
communication.typeType de communication ilum-core avec tâches Spark, options disponibles : GRPC, KafkaGRPC

Paramètres du service ilum-core

NomDescriptionValeur
service.typeType de service ilum-coreClusterIP (en anglais)
service.portPort de service ilum-core9888
service.nodePortPort de nœud de service ilum-core : requis en cas de type est LoadBalancer ou NodePort""
service.clusterIPIP du cluster de services ilum-core - requis lorsque type est ClusterIP (en anglais)""
service.loadBalancerIPIP de l’équilibreur de charge du service ilum-core - requis en cas de type est LoadBalancer""
service.annotationsAnnotations du service ilum-core{}

Paramètres d’entrée ilum-core

NomDescriptionValeur
ingress.enabledIndicateur d’entrée activée ilum-corefaux
ingress.versionVersion d’entrée ilum-corev1
ingress.classNameNom de la classe d’entrée ilum-core""
ingress.hostHôte d’entrée ilum-corehôte
ingress.tlsConfiguration TLS d’entrée ILUM-Core[]
ingress.tls[x].secretNameNom secret d’entrée ilum-core à appliquer pour une seule entrée de configuration TLS
ingress.tls[x].hostsListe des hôtes d’entrée ilum-core pour demander une seule entrée de configuration TLS
ingress.annotationsAnnotations entrantes ilum-core au format YAMLnginx.ingress.kubernetes.io/rewrite-target : /1 $
nginx.ingress.kubernetes.io/proxy-body-size : « 600m »
nginx.org/client-max-body-size : « 600m »
ingress.pathChemin d’entrée ilum-core/(.*)
ingress.pathTypeilum-core, chemin d’entréeTypePréfixe

Activité ilum-coreSonde/état de préparationParamètres de la sonde

NomDescriptionValeur
état de préparationSondePréparation ilum-coreConfiguration de la sonde
état de préparationSonde :
failureSeuil : 3
httpGet :
chemin d’accès : /api/dev/reactive/health
Port : HTTP
schéma : HTTP
initialDelaySeconds : 60
periodSecondes : 10
successSeuil : 1
timeoutSecondes : 1
vivacitéSondeActivité ilum-coreConfiguration de la sonde
vivacitéSonde :
failureSeuil : 3
httpGet :
chemin d’accès : /api/dev/reactive/health
Port : HTTP
schéma : HTTP
initialDelaySeconds : 60
periodSecondes : 10
successSeuil : 1
timeoutSecondes : 1

Paramètres Mongo d’ilum-core

NomDescriptionValeur
mongo.instancesInstances Mongo ilum-core auxquelles se connectermongo :27017
mongo.replicaSetNameNom de l’ensemble de réplicas Mongo ilum-coreRS0
mongo.statusProbe.enanbledIndicateur de vérification de l’état ilum-core Mongovrai
mongo.statusProbe.imageilum-core mongo healthcheck imageilum/mongodb :6.0.5

Paramètres Kafka ilum-core

NomDescriptionValeur
kafka.adresseAdresse Kafka ilum-core à laquelle se connecterKafka :9092
kafka.requestSizeilum-core kafka max.request.size pour les tâches ilum kafka producers20000000
kafka.maxPollRecordsilum-core kafka max.poll.records paramètre pour les tâches ilum consommateurs kafka500
kafka.maxPollIntervalParamètre Kafka ilum-core max.poll.interval.ms pour les tâches ilum consommateurs Kafka60000
kafka.statusProbe.enanbledIndicateur de vérification de l’état Kafka d’ilum-corevrai
kafka.statusProbe.imageilum-core kafka health check imagebitnami/kafka :3.4.1

Paramètres du service GRPC ilum-core

NomDescriptionValeur
grpc.service.typeType de service GRPC ilum-coreClusterIP (en anglais)
grpc.service.portPort de service GRPC ilum-core9999
grpc.service.nodePortPort de nœud de service GRPC ilum-core : requis en cas de type est LoadBalancer ou NodePort""
grpc.service.clusterIPAdresse IP du cluster de service grpc ilum-core : requise en cas de type est ClusterIP (en anglais)""
grpc.service.loadBalancerIPAdresse IP de l’équilibreur de charge du service grpc ilum-core : requis lorsque type est LoadBalancer""
grpc.service.annotationsAnnotations du service GRPC ilum-core{}

Paramètres GRPC ilum-core pour le travail Spark

NomDescriptionValeur
grpc.job.hostHôte GRPC ilum-core pour la tâche Spark à laquelle se connecterilum-grpc
grpc.job.portPort GRPC ilum-core pour la tâche Spark à laquelle se connecter9999

Paramètres de l’initialiseur de cluster Kubernetes ilum-core

NomDescriptionValeur
kubernetes.initClusterOnStartupIndicateur d’initialisation du cluster Kubernetes par défaut ilum-corevrai
kubernetes.upgradeClusterOnStartupMise à niveau du cluster Kubernetes par défaut ilum-core à partir des valeurs de l’indicateur de carte de configurationfaux
kubernetes.api.urlURL de l’API du cluster Kubernetes par défaut ilum-corehttps://kubernetes.default.svc
kubernetes.container.imageImage de conteneur de cluster Kubernetes par défaut ilum-coreilum/étincelle :3.5.2-delta
kubernetes.sparkNamespaceEspace de noms de cluster Kubernetes par défaut ilum-core pour stocker les ressources Spark{{ . Release.Namespace }}
kubernetes.stockage.typeType de stockage de cluster Kubernetes par défaut ilum-core, options disponibles : S3, CGV, WASB, HDFSS3

Default cluster reconciliation

The two flags above govern how the bundled faire défaut Spark cluster is reconciled from chart values. The faire défaut cluster is bootstrap-once. When kubernetes.initClusterOnStartup est vrai (the default), the cluster is created on first startup if it does not already exist. When a cluster named faire défaut is already present, its stored specification is re-synced from chart values only if kubernetes.upgradeClusterOnStartup est vrai. That flag defaults to faux, so a routine Mise à niveau Helm followed by a pod rollout does not push changed kubernetes.* values onto an existing default cluster. This preserves edits made through the UI or the dev API, at the cost of chart values no longer being authoritative once the cluster exists.

When kubernetes.upgradeClusterOnStartup is enabled, the reconciliation is partial:

Re-synced from chart valuesNever chart-driven on an existing cluster
sparkImage, defaultApplicationConfig, environment variables, Namespace, serviceAccountName, attached presetsscalaVersion, TLS certificates, credentials, cluster id et description

The fields in the right-hand column are always preserved from the stored cluster, even with the flag enabled. They can only be changed by editing the cluster through the UI or the dev API.

Metastore is reconciled independently

The bundled faire défaut metastore row (metastore.type and the corresponding metastore..config) is reconciled unconditionally on every startup, independent of kubernetes.upgradeClusterOnStartup. A ruche À nessie switch therefore takes effect on a plain pod rollout.

To apply changed default-cluster values, either enable reconciliation:

ilum-core:
kubernetes:
upgradeClusterOnStartup: « Vrai »

and run Mise à niveau Helm followed by kubectl rollout restart deploy/ilum-core, or delete the existing cluster and re-bootstrap it from current chart values.

After the faire défaut cluster is deleted from the Clusters list under Charges, it can be rebuilt from chart values without restarting ilum-core: while no clusters remain, the Clusters list shows a Restore Default Cluster button that re-creates it from chart values. The button is offered only when no faire défaut cluster exists; it never overwrites a cluster that is still present.

Restarting ilum-core after the delete has the equivalent effect, since the startup initializer recreates the missing cluster:

kubectl -n ilum rollout restart deploy/ilum-core

Enabling kubernetes.upgradeClusterOnStartup re-applies chart values on every boot, which overwrites subsequent UI or dev-API edits to the default cluster, and still does not migrate scalaVersion, certificates, or credentials.

Paramètres de stockage Kubernetes S3

NomDescriptionValeur
kubernetes.s3.hostilum-core cluster kubernetes par défaut Hôte de stockage S3 pour stocker les ressources SparkS3
kubernetes.s3.portPort de stockage S3 du cluster Kubernetes par défaut ilum-core pour stocker les ressources Spark7000
kubernetes.s3.sparkBucketBucket de stockage S3 du cluster Kubernetes par défaut ilum-core pour stocker les ressources Sparklimes-ilum
kubernetes.s3.dataBucketBucket de stockage S3 du cluster kubernetes par défaut ilum-core pour stocker les tables ilumTables-Ilum
kubernetes.s3.accessKeyClé d’accès au stockage S3 du cluster Kubernetes par défaut ilum-core pour stocker les ressources Spark""
kubernetes.s3.secretKeyClé secrète de stockage S3 du cluster Kubernetes par défaut ilum-core pour stocker les ressources Spark""

Paramètres de stockage GCS Kubernetes

NomDescriptionValeur
kubernetes.gcs.clientCourriele-mail du client de stockage GCS du cluster kubernetes par défaut ilum-core""
kubernetes.gcs.sparkBucketBucket de stockage GCS du cluster kubernetes par défaut ilum-core pour stocker les ressources Spark« ilum-files »
kubernetes.gcs.dataBucketilum-core Cluster Kubernetes par défaut Bucket GCS pour stocker les tables ilum« Tables-ilum »
kubernetes.gcs.privateKeyilum-core default kubernetes cluster GCS Clé privée de stockage pour stocker les ressources Spark""
kubernetes.gcs.privateKeyIdilum-core default kubernetes cluster GCS stockage ID de clé privée pour stocker les ressources Spark""

Paramètres de stockage WASBS Kubernetes

NomDescriptionValeur
kubernetes.wasbs.accountNameilum-core Nom du compte de stockage WASBS du cluster Kubernetes par défaut""
kubernetes.wasbs.accessKeyClé d’accès au stockage WASBS du cluster Kubernetes par défaut ilum-core pour stocker les ressources Spark""
kubernetes.wasbs.sparkContainerilum-core cluster kubernetes par défaut WASBS nom du conteneur de stockage pour stocker les ressources Spark« ilum-files »
kubernetes.wasbs.dataContainerilum-core cluster kubernetes par défaut WASBS nom du conteneur de stockage pour stocker les tables ilum« Tables-ilum »

Paramètres de stockage HDFS Kubernetes

NomDescriptionValeur
kubernetes.hdfs.hadoopNom d’utilisateurilum-core cluster kubernetes par défaut HDFS stockage hadoop nom d’utilisateur""
kubernetes.hdfs.configilum-core Cluster Kubernetes par défaut Stockage HDFS Dictionnaire des fichiers de configuration avec le nom comme clé et le contenu encodé en base64 comme valeur""
kubernetes.hdfs.sparkCatalogCatalogue de stockage HDFS du cluster Kubernetes par défaut ilum-core pour stocker les ressources Spark« ilum-files »
kubernetes.hdfs.dataCatalogilum-core cluster kubernetes par défaut Catalogue de stockage HDFS pour stocker les tables ilum« Tables-ilum »
kubernetes.hdfs.keyTabilum-core cluster kubernetes par défaut HDFS stockage keytab fichier contenu encodé en base64""
kubernetes.hdfs.principalilum-core cluster kubernetes par défaut Nom principal de stockage HDFS""
kubernetes.hdfs.krb5ilum-core cluster kubernetes par défaut stockage HDFS fichier krb5 contenu encodé en base64""
kubernetes.hdfs.trustStoreilum-core cluster kubernetes par défaut confiance pour le stockage du contenu encodé en base64""
kubernetes.hdfs.logRépertoireilum-core cluster kubernetes par défaut HDFS répertoire de stockage chemin d’accès à l’événement de stockageLog pour le serveur d’historique""

Important! Assurez-vous que les compartiments S3/GCS ou les conteneurs WASBS sont déjà créés et accessibles ! Important! Assurez-vous que HDFS logDirectory est le chemin absolu de sparkCatalog configuré avec le suffixe /ilum/logs ! Par exemple hdfs://name-node/user/username/spark-catalog/ilum/logs

Paramètres de sécurité ilum-core

NomDescriptionValeur
security.typeType d’authentification ilum-core, options disponibles : interne, LDAP, oauth2interne
security.jwt.issuerUrlURI frontend ilum-core utilisé dans la revendication jwt isshttps://ilum.cloud
security.jwt.timeToLiveilum-core JWT Temps de vie dans des unités de temps spécifiées8h
security.jwt.publicKeyilum-core code64 contenant la X.509 Clé publique RSA 2048 bits""
security.jwt.privateKeyilum-core code64 contenant la PKCS8 RSA 2048 bit clé privée""
Autorités de sécuritéConfiguration des règles de mappage des autorités ilum-core. Utilisé lorsque l’autorisation est LDAP ou oauth2. Permet de traduire des groupes et des étendues de fournisseurs d’authentification externes en rôles ilum
autorités:
Rôles:
préfixe : ROLE_
claim-name : groupes
Étendues:
préfixe : SCOPE__
Nom de la revendication : SCP
security.authorities.roles.prefixPréfixe de rôle d’authentification ilum-coreRÔLE_
security.authorities.roles.claimNameIdentifiant du fournisseur d’authentification externe ilum-core de la revendication jwt qui contient la liste des rôles/groupesgroupe
security.authorities.roles.mappingsDéfinitions de la cartographie des rôles d’ILUM-Core sous la forme d’une carte external_role : ilum_role{}
security.authorities.scopes.prefixPréfixe de portée d’authentification ilum-corePORTÉE_
security.authorities.scopes.claimNameFournisseur d’authentification externe ilum-core ID de la revendication jwt qui contient la liste des étenduesScp
security.authorities.scopes.mappingsDéfinitions de la cartographie du champ d’application d’ilum-core sous la forme d’une carte external_scope : ilum_scope{}

Paramètres d’authentification internes basés sur config-map

NomDescriptionValeur
sécurité.interne.utilisateursConfiguration des utilisateurs internes d’ilum-core
Utilisateurs:
- Nom d’utilisateur : « admin »
Mot de passe : « admin »
Rôles:
- « ADMIN »
security.internal.users[].nom_utilisateurNom d’utilisateur ilum-core""
security.internal.users[].passwordMot de passe brut de l’utilisateur ilum-core""
security.internal.users[].rolesRôles d’utilisateur ilum-core, options disponibles : ADMIN, UTILISATEUR, SPECTATEUR[]

Paramètres d’authentification basés sur LDAP

NomDescriptionValeur
security.ldap.urlsURL LDAP ilum-core du serveur[]
security.ldap.basesuffixe de base LDAP ilum-core à partir duquel toutes les opérations doivent provenir""
security.ldap.nom_utilisateurilum-core LDAP login nom d’utilisateur du serveur""
security.ldap.passwordMot de passe de connexion LDAP ilum-core du serveur""
security.ldap.passwordEncodeurEncodeur de mot de passe LDAP ilum-core. Le serveur LDAP authentifie les utilisateurs (opérations de liaison) s’il est vide, les options disponibles :
adaptatif - encodeur de mot de passe qui délègue à un autre encodeur sur la base d’un identificateur préfixé
bcrypt
MD5
sha256
""
security.ldap.userSearch.baseDN de base LDAP ilum-core à partir duquel la recherche d’un utilisateur doit être effectuée""
security.ldap.userSearch.filterModèle LDAP ilum-core à utiliser pour la recherche de l’utilisateur. 0 est le nom d’utilisateuruid={0}
security.ldap.userSearch.passwordAttrilum-core LDAP ID de l’attribut qui contient le mot de passe d’un utilisateuruserPassword
security.ldap.groupSearch.baseDN de base LDAP ilum-core à partir duquel la recherche d’appartenance au groupe doit être effectuée""
security.ldap.groupSearch.filterModèle LDAP ilum-core à utiliser pour la recherche de groupe. 0 est le DN de l’utilisateur(membre = {0})
security.ldap.groupSearch.roleAttrilum-core LDAP ID de l’attribut qui contient le nom de rôle d’un groupeCn

Paramètres d’authentification basés sur OAuth2

NomDescriptionValeur
security.oauth2.clientIdilum-core oauth2 ID client""
security.oauth2.clientSecretSecret client ilum-core oauth2""
security.oauth2.issuerUriURI oauth2 ilum-core qui peut être un point de terminaison de découverte OpenID Connect ou un point de terminaison de métadonnées du serveur d’autorisation OAuth 2.0 défini par la RFC 8414.""

Paramètres de licence ilum-core

NomDescriptionValeur
licence.privateKeyClé de licence ilum""

ilum-core External Spark Paramètres de soumission

NomDescriptionValeur
externalSparkSubmit.enabledilum-core indicateur externe Spark-submitfaux
externalSparkSubmit.imageilum-core external spark-submit images de baseilum/lance-étincelles :spark-3.5.1
externalSparkSubmit.resourcesRessources Kubernetes du pod externe ilum-core Spark-submit
limits :
memory : « 500Mi"
demandes :
mémoire : « 300Mi »

ilum-core Spark History Server Paramètres du serveur

NomDescriptionValeur
historyServer.enabledIndicateur du serveur d’historique Spark ilum-corevrai
historyServer.imageimage du serveur d’historique Spark d’ilum-coreilum/lance-étincelles :spark-3.5.1
historyServer.addressAdresse du serveur d’historique Spark d’ilum-corehttp://ilum-history-server:9666
historyServer.pullPolicyStratégie d’extraction d’images du serveur d’historique Spark ilum-coreIfNotPresent
historyServer.imagePullSecretsSecrets d’extraction d’images du serveur d’historique Spark ilum-core[]
historyServer.parametersilum-core Spark History Server Paramètres Spark personnalisés
spark.history.fs.cleaner.enabled : vrai
spark.history.fs.cleaner.intervalle : 1d
spark.history.fs.cleaner.maxÂge : 7j
historyServer.resourcesRessources du pod ilum-core Spark History Server
Limites:
mémoire : « 500Mi »
Requêtes:
mémoire : « 300Mi »
historyServer.service.typeType de service de serveur d’historique Spark ilum-coreClusterIP (en anglais)
historyServeur.service.portilum-core Spark History Server Port de service9666
historyServer.service.nodePortilum-core Spark History Server Service NodePort""
historyServer.service.clusterIPilum-core spark history server service clusterIP""
historyServer.service.loadBalancerIPilum-core Spark history server service loadbalancerIP""
historyServer.service.annotationsAnnotations du service ILUM-Core History Server{}
historyServer.ingress.enabledilum-core Spark History Server Indicateur d’entréefaux
historyServer.ingress.versionVersion d’entrée du serveur d’historique Spark d’ILUM-Core« v1 »
historyServer.ingress.classNameilum-core Spark history serveur ingress className""
historyServer.ingress.hostHôte d’entrée du serveur d’historique Spark ilum-core« hôte »
historyServeur.chemin.d’entréeChemin d’entrée du serveur d’historique Spark ilum-core"/(.*)"
historyServer.ingress.pathTypeilum-core Spark history Server Chemin d’entréeTypePréfixe
historyServer.ingress.annotationsAnnotations du serveur d’historique Spark d’ilum-corenginx.ingress.kubernetes.io/rewrite-target : /1 $
nginx.ingress.kubernetes.io/proxy-body-size : « 600m »
nginx.org/client-max-body-size : « 600m »
historyServer.statusProbe.enabledServeur d’historique Spark ilum-core Indicateur de vérification de l’état ilum-corevrai
historyServer.statusProbe.imageServeur d’historique Spark ilum-core imagecurlimages/curl :8.5.0
historyServer.nodeSelectorilum-core spark history server nodeSelector
historyServer.tolerationsOLUM-COE Spark History Server Tolérations[]
historyServer.affinityAffinité avec le serveur d’historique Spark ilum-core

Paramètres de la tâche ilum-core

NomDescriptionValeur
job.retain.hoursLimite d’heures de rétention des emplois Spark d’ilum-core168
job.prometheus.enabledilum-core Spark jobs Indicateur prometheus enabledvrai
job.healthcheck.enabledilum-core Spark Jobs Indicateur activé de vérification de l’étatvrai
job.healthcheck.intervalIntervalle de vérification de l’état des tâches Spark ilum-core en secondes300
job.healthcheck.toleranceTravaux Spark d’ilum-core Healthcheck Tolérance du temps de réponse en secondes120
job.memorysettings.executorsNombre d’exécuteurs de tâches Spark ilum-core2
job.memorysettings.executorMemoryAllocation de mémoire de l’exécuteur des travaux Spark ilum-core1 g
job.memorysettings.driverMemoryAllocation de mémoire du pilote de travaux Spark ilum-core1 g
job.memorysettings.executorCoresilum-core Spark Jobs Exécuteur Nombre de cœurs1
job.memorysettings.driverCoresilum-core Spark Jobs Driver Core Nombre de cœurs1
job.memorysettings.dynamicAllocationEnabledIndicateur d’allocation dynamique ilum-core Spark Jobs Enabledfaux
job.memorysettings.minExécuteursilum-core Spark Jobs Nombre minimum d’exécuteurs0
job.memorysettings.initialExécuteursilum-core Spark Jobs, nombre initial d’exécuteurs0
job.memorysettings.maxExécuteursilum-core Spark Jobs Nombre maximal d’exécuteurs20

Paramètres MetaStore par défaut d’ilum-core

NomDescriptionValeur
metastore.enabledilum-core default hive metastore enabled flagfaux
metastore.hive.addressAdresse de metastore Hive par défaut ilum-corethrift://ilum-hive-metastore:9083
metastore.hive.versionilum-core Version par défaut de Hive Metastore3.1.3

Paramètres de pause automatique d’ilum-core

NomDescriptionValeur
job.autoPause.enabledIndicateur de pause automatique du groupe ilum-corevrai
job.autoPause.idleTimeilum-core : pause automatique, temps d’inactivité minimum du groupe en secondes3600
job.autoPause.periodTemps entre les vérifications de l’inactivité du groupe en secondes180

Génération de clés privées et publiques RSA

Afin de créer des clés RSA 2048 bits dans un format PEM PKCS#8 Base64 non chiffré pour la configuration de l’authentification, openssl a été utilisé.

Générer une clé privée

openssl genpkey -algorithme RSA \
-pkeyopt rsa_keygen_bits :2048 \
-pkeyopt rsa_keygen_pubexp :65537 | \
openssl pkcs8 -topk8 -nocrypt -outform pem > private-key.p8

Le contenu de la clé privée doit ressembler à ce qui suit :

-----DÉBUT DE LA CLÉ PRIVÉE-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCsRnE83rm6BJya
nTyzVqX0SG+D4zBjkyWsOmGG+CoDdgQ6Z8AaocmnjP1SbRykQsQSMf6SeW+fdpH+
ccmzuHe7pZIa2o2Mg8xbk/UszJDaPztwoQbUt/2gHi/rZP8cIVkquzhnN/yxrMls
...
-----FIN DE LA CLÉ PRIVÉE-----

Afin d’utiliser la clé privée comme paramètre security.jwt.privateKey, supprimez l’en-tête et le pied de page de la clé.

Extraire la clé publique

openssl pkey -pubout -inform pem -outform pem -in private-key.p8 -out public-key.spki

Le contenu de la clé publique doit ressembler à ce qui suit :

-----DÉBUT DE LA CLÉ PUBLIQUE-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArEZxPN65ugScmp08s1al
9Ehvg+MwY5MlrDphhvgqA3YEOmfAGqHJp4z9Um0cpELEEjH+knlvn3aR/nHJs7h3
u6WSGtqNjIPMW5P1LMyQ2j87cKEG1Lf9oB4v62T/HCFZKrs4Zzf8sazJbMN3E/mJ
...
-----FIN DE LA CLÉ PUBLIQUE-----

Afin d’utiliser la clé publique comme paramètre security.jwt.publicKey, supprimez l’en-tête et le pied de page de la clé.