Référence API

DeploymentTarget

Un DeploymentTarget représente un "environnement" où les applications peuvent être déployées. Les DeploymentTargets appartiennent à une Zone, qui est créée au préalable par les administrateurs d'Atlas.

Description

DeploymentTarget est le schéma pour l'API DeploymentTarget. Pour chaque DeploymentTarget, une application GitOps unique est créée pour surveiller le dossier dédié dans le dépôt Workspace associé.

Spécification

Champ Type Description Requis Défaut
spec.parameters.name string Nom du DeploymentTarget Oui -
spec.parameters.zoneRef.name string Référence à une Zone qui hébergera le DeploymentTarget. Oui -
spec.parameters.charts array Un tableau de charts à déployer avec le DeploymentTarget. Attention : ce champ est encore expérimental et peut changer ou être supprimé à l'avenir. Pour l'instant, il est plutôt recommandé d'utiliser le rendered manifest pattern et de pousser la sortie d'un "helm template" dans le dépôt GitOps. Non []
spec.parameters.charts[].repoURL string URL où le chart est hébergé. Oui (si charts est utilisé) -
spec.parameters.charts[].chart string Nom du Helm Chart. Oui (si charts est utilisé) -
spec.parameters.charts[].releaseName string Nom de la release du chart. Non -
spec.parameters.charts[].version string Version du chart. Oui (si charts est utilisé) -
spec.parameters.charts[].values object Objet non structuré pour les valeurs du chart. Non {}
spec.parameters.charts[].valueFiles array Références aux fichiers contenant les valeurs du chart. Non []

Exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
apiVersion: workspace.fabrique.social.gouv.fr/v1alpha1
kind: DeploymentTarget
metadata:
  name: my-deploymenttarget
# DeploymentTargetSpec defines the desired state of DeploymentTarget.
# For Atlas users, only the "parameters" field is relevant.
spec:
  # Parameters is where you define the desired parameters.
  parameters:
    # An array of charts to be deployed alongside the DeploymentTarget.
    # Warning: this field is still experimental and may change of be removed in the future.
    # For now, it is instead recommended to make use of the rendered manifest pattern
    # and push the output of a "helm template" inside the GitOps repository.
    charts:
      - chart: "nginx"
        # Name of the chart release.
        releaseName: "my-nginx"
        # URL where the chart is hosted.
        repoURL: "https://charts.bitnami.com/bitnami"
        # Referenced to files containing the chart  values.
        valueFiles: []
        # Unstructured object for the chart values.
        values: {}
        # Version of the chart.
        version: "19.0.0"
    # Name of the DeploymentTarget
    name: "my-deploymenttarget"
    # Reference to a Zone that will host the DeploymentTarget.
    zoneRef:
      # Name of the referenced Zone.
      name: "dev"

Notes importantes

  • Pour chaque DeploymentTarget, une application GitOps unique est créée pour surveiller le dossier dédié dans le dépôt Workspace associé.
  • Les ressources Kubernetes standard peuvent être déployées en ajoutant des fichiers YAML dans le dossier deployment-targets/<nom du deployment-target> du dépôt GitOps du workspace.
  • Le champ charts est expérimental et peut changer ou être supprimé à l'avenir. Il est recommandé d'utiliser le rendered manifest pattern et de pousser la sortie d'un "helm template" dans le dépôt GitOps.
  • Les DeploymentTargets sont utilisés comme cibles pour la livraison des secrets des ressources comme les Buckets et les DatabaseClusters.

Bucket

Un Bucket est un espace de stockage compatible S3. Les buckets ont un lifecycle indépendant des applications et doivent être créés au préalable.

Description

Bucket est le schéma pour l'API Bucket. Un bucket compatible S3 permet de stocker des fichiers et des objets. Les buckets ont un lifecycle indépendant des applications et doivent être créés au préalable.

Spécification

Champ Type Description Requis Défaut
spec.parameters.name string Nom du bucket. Ce champ est immuable et ne peut pas être modifié ultérieurement. Oui -
spec.parameters.versioned boolean Indique si ce bucket est versionné. Une fois activé, le versioning ne peut pas être désactivé. Non false
spec.parameters.acl string L'ACL (Access Control List) pour le bucket. Valeurs possibles: private, public-read, public-read-write, aws-exec-read, authenticated-read, log-delivery-write Oui -
spec.parameters.forceDestroy boolean Permet de détruire le bucket même s'il n'est pas vide. Comme prévu, c'est un champ dangereux, à utiliser avec prudence. Non false
spec.parameters.tags object Tags supplémentaires à mettre sur le bucket. Non {}
spec.parameters.zoneRef.name string Référence à une Zone qui hébergera le Bucket. Oui -
spec.parameters.secretDeliveryTargets array Liste des cibles auxquelles livrer le secret. Dans cette version, vous ne pouvez livrer des secrets qu'aux DeploymentTargets. Oui -

Exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
apiVersion: workspace.fabrique.social.gouv.fr/v1alpha1
kind: Bucket
metadata:
  name: my-bucket
# BucketSpec defines the desired state of Bucket.
# For Atlas users, only the "parameters" field is relevant.
spec:
  # Parameters is where you define the desired parameters.
  parameters:
    # The ACL (Access Control List) for the bucket.
    acl: "private" # "private", "public-read", "public-read-write", "aws-exec-read", "authenticated-read", "log-delivery-write"
    # Allow bucket to be destroyed even if it is not empty.
    # As expected, this is a dangerous field, use with caution.
    forceDestroy: false
    # Name of the bucket.
    # This field is immutable and cannot be changed afterward.
    name: "my-app-bucket-unique-name"
    # List of targets to deliver the secret to. As of this release, you can only deliver secrets to DeploymentTargets.
    # In the future, more targets will be supported.
    secretDeliveryTargets:
      - kind: "DeploymentTarget" # "DeploymentTarget"
        # Name of the referenced DeploymentTarget.
        name: "example-deployment-target"
    # Additional tags to put on the bucket.
    tags: {}
    # Whether this bucket is versioned.
    # Once enabled, versioning cannot be disabled.
    versioned: false
    # Reference to a Zone that will host the Bucket.
    zoneRef:
      # Name of the referenced Zone.
      name: "dev"

Notes importantes

  • Le nom du bucket doit être unique.
  • Une fois le versioning activé, il ne peut pas être désactivé.
  • Les secrets d'accès au bucket sont automatiquement livrés aux DeploymentTargets spécifiés dans secretDeliveryTargets.
  • L'option forceDestroy est dangereuse car elle peut entraîner la perte de données. Utilisez-la avec prudence.

Format des secrets livrés

Les secrets d'accès au bucket sont livrés aux DeploymentTargets spécifiés dans le format JSON suivant :

1
2
3
4
5
{
  "name": "nom-du-bucket",
  "accessKey": "clé-d-accès",
  "secretKey": "clé-secrète"
}

L'endpoint S3 est toujours s3.gra.io.cloud.ovh.net.

DatabaseCluster

Un DatabaseCluster est un conteneur PostgreSQL pour une ou plusieurs bases de données. Plusieurs moteurs existent, notamment OVH (cluster de base de données managé, pour une utilisation en production) et CNPG (déploiement dans le cluster, non adapté à une utilisation en production).

Description

DatabaseCluster est le schéma pour l'API DatabaseCluster. Les lifecycles des DatabaseCluster sont indépendants du lifecycle des applications et doivent être créés au préalable. Une fois créé, une base de données doit être créée en référençant ce DatabaseCluster.

Spécification

Champ Type Description Requis Défaut
spec.parameters.name string Nom du DatabaseCluster à créer. Ce champ est immuable et ne peut pas être modifié ultérieurement. Oui -
spec.parameters.implementation string Implémentation du moteur à utiliser. Ce champ est immuable et ne peut pas être modifié ultérieurement. Valeurs possibles: cnpg, managed Oui -
spec.parameters.replicas integer Nombre de réplicas pour le DatabaseCluster. Pour la haute disponibilité, les utilisations en production doivent toujours définir cette valeur à plus de 1. Non 1
spec.parameters.ovh.plan string Plan à utiliser pour le cluster de base de données managé (uniquement utilisé lorsque le champ implementation est "managed"). Non essential
spec.parameters.ovh.flavor string Flavor à utiliser pour les instances de VM de support (uniquement utilisé lorsque le champ implementation est "managed"). Non db1-4
spec.parameters.ovh.authorized_ips array Un tableau d'adresses IP autorisées à se connecter au cluster (uniquement utilisé lorsque le champ implementation est "managed"). Non []
spec.parameters.cnpg.resources.requests.cpu string Requests de CPU (uniquement utilisé lorsque le champ implementation est "cnpg"). Non -
spec.parameters.cnpg.resources.requests.memory string Requests de mémoire (uniquement utilisé lorsque le champ implementation est "cnpg"). Non -
spec.parameters.cnpg.resources.limits.cpu string Limits de CPU (uniquement utilisé lorsque le champ implementation est "cnpg"). Non -
spec.parameters.cnpg.resources.limits.memory string Limits de mémoire (uniquement utilisé lorsque le champ implementation est "cnpg"). Non -
spec.parameters.version string Version de PostgreSQL Non 15
spec.parameters.diskSize integer Taille pour le stockage de la base de données, en GiB. Non 80
spec.parameters.zoneRef.name string Référence à une Zone qui hébergera le DatabaseCluster. Oui -
spec.parameters.secretDeliveryTargets array Liste des cibles auxquelles livrer le secret. Dans cette version, vous ne pouvez livrer des secrets qu'aux DeploymentTargets. Oui -

Exemple

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
apiVersion: workspace.fabrique.social.gouv.fr/v1alpha1
kind: DatabaseCluster
metadata:
  name: my-databasecluster
# DatabaseClusterSpec defines the desired state of DatabaseCluster.
# For Atlas users, only the "parameters" field is relevant.
spec:
  # Parameters is where you define the desired parameters.
  parameters:
    # Only used when the implementation field is "cnpg".
    # CNPG specific parameters for the in-cluster deployment.
    cnpg:
      # CPU and memory requests/limits.
      resources:
        # CPU and memory limits.
        limits:
          # CPU limits.
          cpu: "50m"
          # Memory limits.
          memory: "256Mi"
        # CPU and memory requests.
        requests:
          # CPU requests.
          cpu: "50m"
          # Memory requests.
          memory: "256Mi"
    # Size for the database storage, in GiB.
    diskSize: 80
    # Engine implementation to use.
    # This field is immutable and cannot be changed afterwards.
    implementation: "cnpg" # "cnpg", "managed"
    # Name of the DatabaseCluster to create.
    # This field is immutable and cannot be changed afterwards.
    name: "my-databasecluster"
    # Only used when the implementation field is "managed".
    # OVH specific parameters for the managed database cluster.
    ovh:
      # An array of IP addresses authorized to connect to the cluster.
      authorized_ips: []
      # Flavor to use for the backing VM instances.
      flavor: "db1-4"
      # Plan to use for the managed database cluster.
      plan: "essential"
    # Number of replicas for the DatabaseCluster.
    # For High Availability, production uses should always set this
    # to a value greater than 1.
    replicas: 1
    # List of targets to deliver the secret to. As of this release, you can only deliver secrets to DeploymentTargets.
    # In the future, more targets will be supported.
    secretDeliveryTargets:
      - kind: "DeploymentTarget" # "DeploymentTarget"
        # Name of the referenced DeploymentTarget.
        name: "example-deployment-target"
    # PostgreSQL version
    version: "15"
    # Reference to a Zone that will host the Bucket.
    zoneRef:
      # Name of the referenced Zone.
      name: "dev"

Notes importantes

  • Le nom du DatabaseCluster doit être unique.
  • L'implémentation (cnpg ou managed) est immuable et ne peut pas être modifiée après la création.
  • Pour les environnements de production, il est recommandé d'utiliser l'implémentation managed et de définir replicas à une valeur supérieure à 1 pour la haute disponibilité.
  • L'implémentation cnpg n'est pas recommandée pour les environnements de production.
  • Les secrets d'accès à la base de données sont automatiquement livrés aux DeploymentTargets spécifiés dans secretDeliveryTargets.

Format des secrets livrés

Les secrets d'accès à la base de données sont livrés aux DeploymentTargets spécifiés dans le format JSON suivant :

1
2
3
4
5
6
7
8
9
{
  "url": "postgresql://username:password@host:port/database",
  "server": "host:port",
  "host": "host",
  "port": "port",
  "username": "username",
  "password": "password",
  "database": "database"
}

Workspace

Un Workspace est un conteneur pour un projet logiciel, avec son propre contrôle d'accès et des ressources spécifiques au workspace.

Description

Workspace est le schéma pour l'API Workspace. Un Workspace est créé par les administrateurs d'organisation et permet de regrouper les ressources liées à un projet spécifique.

Spécification

Champ Type Description Requis Défaut
spec.parameters.name string Nom du workspace. Oui -

Statut

Le statut d'un Workspace contient des informations importantes pour les utilisateurs d'Atlas :

Champ Type Description
status.outputs.grafana.orgId string L'ID de l'organisation Grafana.
status.outputs.organization.name string Nom de l'organisation propriétaire de ce workspace.
status.outputs.github.url string URL de clonage SSH du dépôt GitHub.
status.outputs.github.name string Nom du dépôt GitHub.
status.outputs.namespace string Namespace Kubernetes dans le plan de contrôle créé par le workspace.

Exemple

1
2
3
4
5
6
7
apiVersion: organization.fabrique.social.gouv.fr/v1alpha1
kind: Workspace
metadata:
  name: my-workspace
spec:
  parameters:
    name: "my-project-workspace"

Notes importantes

  • Un Workspace est créé dans le dépôt GitOps de l'organisation en ajoutant un fichier YAML dans le dossier 'resources'.
  • Chaque Workspace dispose de son propre dépôt GitOps pour définir des ressources (buckets, databaseclusters, deploymenttargets).
  • Les administrateurs de workspace peuvent créer des ressources dans le workspace, mais ne peuvent pas modifier les ressources définies à l'échelle de l'organisation et de la plateforme.
  • Le statut du Workspace contient des informations importantes comme l'URL du dépôt GitHub, l'ID de l'organisation Grafana, et le namespace Kubernetes.

Paramètres d’affichage

Choisissez un thème pour personnaliser l’apparence du site.