Configuration à distance et rechargement automatique
L’orchestrateur est en mesure de charger et de recharger dynamiquement des paquets de configuration (maverics.tar.gz) publiés par la plateforme Maverics à partir de fournisseurs de solutions de stockage partagé tels que AWS S3, Google Cloud Storage, Azure Blob Storage, GitHub ou GitLab.
Paquet de configuration à distance
Pour charger un paquet de configuration à partir d’un fournisseur de stockage partagé, il vous faut définir les variables d’environnement sur l’hôte de l’orchestrateur pour :
- valider l’ensemble par rapport au fichier de clé publique de votre environnement
- vous connecter à votre fournisseur de services de stockage
Validation du paquet signé
Les paquets de configuration publiés par la plateforme Maverics sont signés pour garantir l’intégrité des données. L’orchestrateur ne peut pas charger la configuration à distance sans valider les signatures du fichier de configuration par rapport à la clé publique de l’environnement de configuration à distance spécifique.
Téléchargez le fichier de clé publique depuis la page Maverics Environments sur
l’hôte de l’orchestrateur et définissez le chemin d’accès au fichier dans la
variable d’environnement MAVERICS_BUNDLE_PUBLIC_KEY_FILE
.
Compartiment AWS S3
La variable d’environnement MAVERICS_AWS_CONFIG
contient une chaîne JSON avec les attributs
suivants :
Region
region
correspond à la région où le service S3 est hébergé.
Access Key ID
accessKeyID
correspond à l’identifiant de la clé.
Secret Access Key
secretAccessKey
correspond à la valeur de la clé secrète.
Bucket Name
bucketName
correspond au nom du compartiment S3.
Configuration File Path
configurationFilePath
correspond au chemin d’accès à l’annuaire dans le compartiment. Le nom du fichier
ne doit pas y figurer. L’orchestrateur recherche automatiquement maverics.tar.gz
dans
ce dossier. Si maverics.tar.gz
se trouve au niveau supérieur du compartiment, ce champ peut
être ignoré.
Par exemple :
{
"bucketName": "maverics-development",
"accessKeyID": "aws-access-key-id",
"secretAccessKey": "aws-secret-access-key",
"region": "aws-region",
"configurationFilePath": "folder1/folder2"
}
Les identifiants accessKeyID
et secretAccessKey
peuvent être omis si les identifiants AWS
sont déjà disponibles dans l’environnement (par exemple, lorsque AWS_ACCESS_KEY_ID
et
AWS_SECRET_ACCESS_KEY
sont définis).
Politique de compartiment AWS S3
Les paramètres du compartiment S3 doivent bloquer tout accès public et la politique du compartiment ne doit autoriser que les éléments nécessaires à Maverics pour lister, lire, écrire et supprimer des objets de ce compartiment. Le fichier JSON suivant présente une politique adaptée à un compartiment utilisé pour la configuration de Maverics :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement",
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::<bucket's name>",
"arn:aws:s3:::<bucket's name>/*"
],
"Condition": {
"ArnNotEquals": {
"aws:PrincipalArn": "<user's Arn>"
}
}
}
]
}
Autorisations d’utilisateur AWS IAM
Permet de créer des clés d’accès pour un utilisateur AWS IAM disposant de droits d’accès restreints. Le fichier JSON suivant présente une politique adaptée à un utilisateur IAM n’ayant accès qu’au compartiment de configuration de Maverics :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Policy",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::<bucket's name>",
"arn:aws:s3:::<bucket's name>/*"
]
}
]
}
Google Cloud Storage
La variable d’environnement MAVERICS_GCP_CONFIG
contient une chaîne JSON avec les attributs
suivants :
Bucket Name
bucketName
correspond au nom du compartiment à lire dans GCS.
Key
key
correspond à clé GCP autorisée à lire dans le compartiment de stockage cloud.
Configuration File Path
configurationFilePath
correspond au chemin d’accès à l’annuaire dans le compartiment. Le nom du fichier
ne doit pas y figurer. L’orchestrateur recherche automatiquement maverics.tar.gz
dans
ce dossier. Si maverics.tar.gz
se trouve au niveau supérieur du compartiment, ce champ peut
être ignoré.
Par exemple :
{
"bucketName": "maverics-development",
"configurationFilePath": "folder1/folder2",
"key":{
"type": "service_account",
"project_id": "google-cloud-project-id",
"private_key_id": "",
"private_key": "-----BEGIN PRIVATE KEY-----\n-----END PRIVATE KEY-----\n",
"client_email": "google-cloud-project-id@google-cloud-project-id.iam.gserviceaccount.com",
"client_id": "000000000000000000000",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/google-cloud-project-id%google-cloud-project-id.iam.gserviceaccount.com"
}
}
Référentiel GitHub
La variable d’environnement MAVERICS_GITHUB_CONFIG
contient une chaîne JSON avec les attributs
suivants :
Owner
propriétaire
correspond au propriétaire du référentiel.
Repo
repo
correspond au nom du référentiel.
Token
token
correspond à un jeton GitHub qui dispose d’un accès en lecture au contenu du référentiel.
Consultez la documentation GitHub pour obtenir plus d’informations sur la création de
jetons d’accès personnels à granularité fine
disposant des autorisations nécessaires à la lecture du contenu du référentiel.
Configuration File Path
configurationFilePath
correspond au chemin d’accès à l’annuaire dans le compartiment. Le nom du fichier
ne doit pas y figurer. L’orchestrateur recherche automatiquement maverics.tar.gz
dans
ce dossier. Si maverics.tar.gz
se trouve au niveau supérieur du compartiment, ce champ peut
être ignoré.
Par exemple :
{
"token": "github_pat_xxxxxxxxx_xxxxxxxxxxxxxx",
"owner": "ownername",
"repo": "reponame",
"configurationFilePath": "folder1/folder2"
}
Référentiel GitLab
La variable d’environnement MAVERICS_GITLAB_CONFIG
contient une chaîne JSON avec les attributs
suivants :
Namespace
namespace
correspond à l’espace de noms généré pour vous par GitLab.
Repo
repo
correspond au nom du référentiel.
Branch
branch
correspond au nom de la branche dans le référentiel.
Token
token
correspond à un jeton GitLab qui dispose d’un accès en lecture au contenu du référentiel. Consultez
la documentation GitLab pour obtenir plus d’informations sur la création de
jetons d’accès personnels
disposant des autorisations nécessaires à la lecture du contenu du référentiel. Alternativement,
un jeton d’accès au projet
peut être créé. La portée minimale requise est « read_repository ».
Configuration File Path
configurationFilePath
correspond au chemin d’accès à l’annuaire dans le compartiment. Le nom du fichier
ne doit pas y figurer. L’orchestrateur recherche automatiquement maverics.tar.gz
dans
ce dossier. Si maverics.tar.gz
se trouve au niveau supérieur du compartiment, ce champ peut
être ignoré.
Par exemple :
{
"namespace": "user123456789",
"repo": "reponame",
"branch": "main",
"token": "glpat_xxxxxxxxxxxx",
"configurationFilePath": "folder1/folder2"
}
Azure Blob Storage
La variable d’environnement MAVERICS_AZURE_CONFIG
contient une chaîne JSON avec les attributs
suivants :
Account
account
correspond au nom du compte de stockage.
Container
conteneur
correspond au nom du conteneur ou du grand objet binaire.
Token
jeton
correspond à un jeton SAS de Azure Blob Storage.
La chaîne de requête qui comprend toutes les informations requises à l’authentification du SAS,
à la spécification du grand objet binaire et des autorisations disponibles pour l’accès, ainsi qu’à l’intervalle de temps
pendant lequel la signature est valide.
Configuration File Path
configurationFilePath
correspond au chemin d’accès à l’annuaire dans le compartiment. Le nom du fichier
ne doit pas y figurer. L’orchestrateur recherche automatiquement maverics.tar.gz
dans
ce dossier. Si maverics.tar.gz
se trouve au niveau supérieur du compartiment, ce champ peut
être ignoré.
Par exemple :
{
"account": "exampleStorage",
"container": "exampleContainer",
"token": "sp=r&st=2023-03-31T02:31:53Z&se=2023-07-14T10:31:53Z&spr=https&sv=2021-12-02&sr=c&sig=xxxxyxxxxxxxxx",
"configurationFilePath": "folder1/folder2"
}
Définition de JSON dans les variables d’environnement
Les valeurs de ces variables d’environnement sont des objets JSON. Selon la manière dont votre système d’exploitation définit les variables d’environnement, vous devrez peut-être les regrouper sur une seule ligne (par exemple, lorsqu’elles sont inscrites dans le fichier /etc/maverics/maverics.env
).
Rechargement automatique
L’orchestrateur peut être configuré pour vérifier périodiquement la configuration et la recharger
en cas de modifications. Si l’orchestrateur détecte une modification du champ version
, il
rechargera la configuration mise à jour sans redémarrer le processus. Lors d’un rechargement réussi,
les sessions des utilisateurs et les jetons émis au nom des propriétaires de ressources sont invalidés
afin de garantir que les mises à jour de la politique prennent effet.
Pour activer ce comportement, définissez les variables d’environnement suivantes :
MAVERICS_RELOAD_CONFIG
: doit être définie surtrue
pour être activéeMAVERICS_POLLING_INTERVAL_SECONDS
(optionnelle) : la fréquence d’interrogation pour les mises à jour de configuration. Si elle n’est pas définie, la valeur par défaut est de 30 secondes.