Aller au contenu

Caascad Backend / (Caascad Shared)#

L'offre coté client est appelée "Caascad Backend".
Caascad Shared a été évoqué et cette notion a été choisie pour la partie développement.

caascad-zones#

defs.cue#

  • attribut optionnel dans #ZoneMetadata : shared
#ZoneMetadata: {
        line:    #Line
        shared?: bool
}
  • ajout de l'attribut uniquement les zones cloud
#CloudZone: {
        #Zone
        type: "cloud"
        metadata: shared: *false | true
        ...
}

zones.cue#

  • activation du mode shared pour la zone ocb-xxx
zones: {
  "ocb-xxx": {
      ...
      metadata: shared: true
      ...
  }

envs-ng#

WARNING : l'attribut shared n'existe que dans les zones cloud.

C'est donc la zone cloud à laquelle est associée une zone cliente qui détermine si elle est elle-même sur une zone "caascad shared".

  • depuis une zone cloud => zone.metadata.shared
  • depuis une zone cliente => parent_zone.metadata.shared

envs.cue#

  • bypass d'une application de la zone cloud (#EnvCloudFE, #EnvCloudAWS, #EnvCloudAzure)

    if !zone.metadata.shared {
        dashboard:       #HelmConfig
        gitea:           #HelmConfig
        gitea_provision: #AnsibleConfig
    }
    

  • bypass d'une application de la zone client (#EnvClientFE, #EnvClientAWSExistingCluster #EnvClientAWS, #EnvClientdAzure)

    if !parent_zone.metadata.shared {
        gitea:           #HelmConfig
        gitea_provision: #AnsibleConfig
    }
    

Adaptation des configurations#

WARNING : l'attribut parent_zone n'existe pas dans le cas d'une zone infra

Si besoin d'adapter une configuration pour une zone client, alors bien s'assurer d'accéder à parent_zone.metadata.shared uniquement pour les zones client (ne pas faire l'appel dans le cas d'une zone infra).

vault.cue#

helm:{
     values: {
           vault: server: {
                 ingress: annotations: "kubernetes.io/ingress.class": *"ingress-nginx-public" | string
                 if zone.metadata.shared == true {
                         ingress: annotations: "kubernetes.io/ingress.class": "ingress-nginx-private"
                 }
           }
     }  
}