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"
}
ℹ️
Utilisez des référentiels privés pour stocker la configuration.

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 sur true pour être activée
  • MAVERICS_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.