- EnvGene Objects
- Template Repository Objects
- Instance Repository Objects
- Environment Instance Objects
- BG State Files
- Solution Descriptor
- Credential
- Environment Credentials File
- Shared Credentials File
- System Credentials File (in Instance repository)
- Shared Template Variable Files
- Environment Specific ParameterSet
- Environment Specific Resource Profile Override
- Cloud Passport
- Artifact Definition
- Registry Definition
- Application Definition
- Discovery Repository Objects
An Environment Template is a file structure within the Envgene Template Repository that describes the structure of a solution — such as which namespaces are part of the solution, as well as environment-agnostic parameters, which are common to a specific type of solution.
The objects that make up the Environment Template extensively use the Jinja template engine. During the generation of an Environment Instance, Envgene renders these templates with environment-specific parameters, allowing a single template to be used for preparing configurations for similar but not entirely identical environment/solution instances.
The template repository can contain multiple Environment Templates describing configurations for different types of environments/solution instances, such as DEV, PROD, and SVT.
When a commit is made to the Template Repository, an artifact is built and published. This artifact contains all the Environment Templates located in the repository.
This object is a describes the structure of a solution, links to solution's components.
The name of this file serves as the name of the Environment Template. In the Environment Inventory, this name is used to specify which Environment Template from the artifact should be used.
Location: Any YAML or Jinja file located in the /templates/env_templates/ folder is considered a Template Descriptor.
Supported file extensions:
.yml/.yaml— Static Template Descriptor.yml.j2/.yaml.j2— Jinja Template Descriptor (rendered before Environment Instance generation)
When multiple Template Descriptors with the same base name but different extensions exist, EnvGene selects them in descending priority order: yml.j2 > yaml.j2 > yml > yaml. Jinja Template Descriptors enable conditional namespace inclusion. See Namespace Filtering in Template Descriptor for details.
It has the following structure:
# Optional
# Template Composition configuration
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
parent-templates:
# Optional
# Value must be in `application:version` notation
<parent-template-name>: string
# Mandatory
# Can be specified either as direct template path (string) or as an object
tenant: string
# or
tenant:
# Template Composition configuration
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
parent: string
# Mandatory
# Can be specified either as direct template path (string) or as an object
cloud: string
# or
cloud:
# Optional
template_path: string
# Optional
# Template Override configuration
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/template-override.md
template_override:
<yaml or jinja expression>
# Optional
# Template Composition configuration
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
parent: string
# Optional
# Template Composition configuration
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
overrides-parent:
# Optional
# Override the name of the cloud in rendering result
name: string
profile:
override-profile-name: <resource-profile-override-name>
parent-profile-name: <resource-profile-override-name>
baseline-profile-name: <resource-profile-baseline-name>
merge-with-parent: <boolean>
deployParameters: <hashmap-with-parameters>
e2eParameters: <hashmap-with-parameters>
technicalConfigurationParameters: <hashmap-with-parameters>
deployParameterSets: <list-with-parameter-sets>
e2eParameterSets: <list-with-parameter-sets>
technicalConfigurationParameterSets: <list-with-parameter-sets>
# Optional
composite_structure: <path-to-the-composite-structure-template-file>
# Optional
bg_domain: <path-to-the-bg-domain-template-file>
# Optional
namespaces:
- # Optional
# Path to the namespace template file
template_path: string
# Optional
# Used for determining the name of the parent folder for the Namespace when generating the Environment Instance.
# See [Environment Instance Generation](/docs/features/environment-instance-generation.md#namespace-folder-name-generation) for detailed rules.
# If the value is not specified, the name of the namespace template file (without extension) is used
deploy_postfix: <deploy-postfix>
# Optional
# See details https://github.com/Netcracker/qubership-envgene/blob/main/docs/template-override.md
template_override:
<yaml or jinja expression>
# Optional
# Name of Namespace in Parent Template
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
name: string
# Optional
# Parent template name
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
parent: string
# Optional
# Template Composition configuration
# See details in https://github.com/Netcracker/qubership-envgene/blob/main/docs/features/template-composition.md
overrides-parent:
# Optional
# Override the name of the namespace in rendering result
name: string
profile:
override-profile-name: string
parent-profile-name: string
baseline-profile-name: string
merge-with-parent: boolean
deployParameters: hashmap
e2eParameters: hashmap
technicalConfigurationParameters: hashmap
deployParameterSets: list
e2eParameterSets: list
technicalConfigurationParameterSets: list
template_path: stringTemplate Descriptor JSON schema
This is a Jinja template file used to render the Tenant object. It defines tenant-level parameters for Environment Instance generation.
The Tenant template must be developed so that after Jinja rendering, the result is a valid Tenant object according to the schema.
Macros are available for use when developing the template.
Location: The Tenant template is located at /templates/env_templates/*/
Example:
name: "Applications"
registryName: ""
description: "For development"
owners: "{{ current_env.owners }}"
credential: ""
labels: []This is a Jinja template file used to render the Cloud object. It defines cluster-level parameters for Environment Instance generation.
The Cloud template must be developed so that after Jinja rendering, the result is a valid Cloud object according to the schema.
Macros are available for use when developing the template.
Location: The Cloud template is located at /templates/env_templates/*/
Example:
name: "{{ current_env.cloudNameWithCluster }}"
apiUrl: "{{ current_env.cluster.cloud_api_url }}"
apiPort: "{{ current_env.cluster.cloud_api_port }}"
privateUrl: ""
publicUrl: "{{ current_env.cluster.cloud_public_url }}"
dashboardUrl: "https://dashboard.{{ current_env.cluster.cloud_public_url }}"
labels: []
defaultCredentialsId: "token"
protocol: "{{ current_env.cluster.cloud_api_protocol }}"
deployParameters: {}
e2eParameters: {}
technicalConfigurationParameters: {}
deployParameterSets: []
e2eParameterSets: []
technicalConfigurationParameterSets: []
maasConfig:
credentialsId: "maas"
maasUrl: "http://maas-service-maas.{{ current_env.cluster.cloud_public_url }}"
maasInternalAddress: "http://maas-service.maas:8080"
enable: true
vaultConfig:
url: ""
credentialsId: ""
enable: false
dbaasConfigs:
- credentialsId: "dbaas"
apiUrl: 'http://dbaas-aggregator.dbaas:8080'
aggregatorUrl: 'https://aggregator-dbaas.{{ current_env.cluster.cloud_public_url }}'
enable: true
consulConfig:
tokenSecret: "consul-token"
publicUrl: 'https://consul.{{ current_env.cluster.cloud_public_url }}'
enabled: true
internalUrl: 'http://consul-server.consul:8500'This is a Jinja template file used to render the Namespace object. It defines namespace-level parameters for Environment Instance generation.
The Namespace template must be developed so that after Jinja rendering, the result is a valid Namespace object according to the schema.
Macros are available for use when developing the template.
Location: The Namespace template is located at /templates/env_templates/*/
Example:
name: "{{ current_env.name }}-core"
credentialsId: ""
labels:
- "solutionInstance-{{current_env.name}}"
- "solution-{{current_env.tenant}}"
isServerSideMerge: false
cleanInstallApprovalRequired: false
mergeDeployParametersAndE2EParameters: false
profile:
name: dev-override
baseline: dev
deployParameters:
AIRFLOW_REDIS_DB: "1"
ARTIFACTORY_BASE_URL: "https://artifactory.qubership.org"
ESCAPE_SEQUENCE: "true"
e2eParameters:
QTP_DYNAMIC_PARAMETERS: ""
technicalConfigurationParameters:
DBAAS_CLUSTER_DBA_CREDENTIALS_PASSWORD: "${DBAAS_CLUSTER_DBA_CREDENTIALS_PASSWORD}"
DBAAS_CLUSTER_DBA_CREDENTIALS_USERNAME: "${DBAAS_CLUSTER_DBA_CREDENTIALS_USERNAME}"
DBAAS_TEMP_PASS: "${DBAAS_CLUSTER_DBA_CREDENTIALS_PASSWORD}"
MAAS_DEPLOYER_CLIENT_PASSWORD: "${MAAS_CREDENTIALS_PASSWORD}"
MAAS_DEPLOYER_CLIENT_USERNAME: "${MAAS_CREDENTIALS_USERNAME}"
deployParameterSets:
- core-deploy-common
{% if current_env.additionalTemplateVariables.site | default ('offsite') == 'offsite' %}
- core-deploy-offsite
{% else %}
- core-deploy-onsite
{% endif %}
technicalConfigurationParameterSets:
- core-runtimeA ParameterSet is a container for a set of parameters that can be reused across multiple templates. This helps to avoid duplication and simplifies parameter management. ParameterSets are processed during the generation of an Environment Instance.
ParameterSets are referenced in the deployParameterSets, e2eParameterSets, and technicalConfigurationParameterSets arrays in the Cloud, and Namespace templates.
During the generation of an Environment Instance the parameters from the parameters section of a ParameterSet are assigned to the corresponding attributes of the object with which the ParameterSet is associated, as follows:
- Parameters from the
parameterssection of a ParameterSet referenced indeployParameterSetsare set on thedeployParametersattribute of the same object. - Parameters from the
parameterssection of a ParameterSet referenced ine2eParameterSetsare set one2eParameters. - Parameters from the
parameterssection of a ParameterSet referenced intechnicalConfigurationParameterSetsare set ontechnicalConfigurationParameters.
ParameterSets also allow to define application-level parameters, i.e., parameters specific to a particular application, using the application section of a ParameterSet. The parameters from application[].parameters are set on the Application object, which is created for each application entry and has the name application[].appName.
ParameterSets can be parameterized using Jinja and macros. In this case, the file should be named <paramset-name>.yaml.j2 or <paramset-name>.yml.j2.
Location: /templates/parameters/ folder and its subfolders, but with a nesting level of no more than two
# Optional
# Deprecated
version: string
# Mandatory
# The name of the Parameter Set
# Used to reference the Parameter Set in templates
# Must match the Parameter Set filename
name: string
# Mandatory
# Key-value pairs of parameters
# The actual parameters that will be set when this Parameter Set is referenced
parameters: hashmap
# Optional
# Section describing application-level parameters
# For each `appName`, an Application object will be created with parameters specified in `parameters`
application:
- # Mandatory
appName: string
# Mandatory
parameters: hashmapExample:
version: 1
name: configuration
parameters:
CONFIGURATION:
DEFAULT_MAIN_SD: "Toolset-SD"
{% if current_env.additionalTemplateVariables.site | default ('offsite') == 'offsite' %}
DBAAS_LODB_PER_NAMESPACE_AUTOBALANCE_RULES: "postgresql=>postgresql:postgres"
{% else %}
DBAAS_LODB_PER_NAMESPACE_AUTOBALANCE_RULES: "envgeneNullValue"
{% endif %}
applications:
- appName: "core"
parameters:
securityContexts:
pod:
runAsNonRoot: true
runAsUser: null
fsGroup: null
seccompProfile:
type: RuntimeDefault
containers:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALLThe filename of the ParameterSet must match the value of the name attribute. The ParameterSet name must be unique within the template repository. This is validated during processing; if the validation fails, the operation will stop with an error.
The Parameter Set schema in the template repository is identical to the Environment Specific ParameterSet.
These are customizations for performance parameters, over a Baseline Resource Profile. Such overrides are created by the configurator in the Template repository, to further adjust performance parameters on top of the Baseline Resource Profile Override for all environments of the same type.
Template Resource Profile Override are referenced in the profile.name attribute in the Cloud or Namespace templates.
During the generation of an Environment Instance, resource profiles that are associated with the Cloud and Namespace are merged or replaced with the Environment Specific Resource Profile Override and become part of the Resource Profile Override (part of the environment instance).
Template Resource Profile Override can be parameterized using Jinja and macros. In this case, the file should be named <resource-profile-override-name>.yaml.j2 or <resource-profile-override-name>.yml.j2.
In Template Resource Profile Override, you can set nested parameter values using dots in the parameter name (dot notation). For example:
...
applications:
- name: "my-app"
services:
- name: "nginx"
parameters:
- name: "resources.limits.cpu"
value: "1000m"
- name: "resources.limits.memory"
value: "512Mi"See details in resource-profile
Template Resource Profile Override JSON schema
Location: /templates/resource_profiles/ folder and its subfolders, but with a nesting level of no more than two
# Mandatory
# Resource profile override name
# Must match the filename without extension
name: string
# Optional
# Deprecated
# Not processed by Envgene
version: string
# Optional
# Name of the resource profile baseline that this override modifies
# Not processed by EnvGene
baseline: string
# Optional
# Override description
description: string
# Mandatory
applications:
- # Mandatory
# Application name to which the override applies
# Must exactly match the application name
name: string
# Optional
# Deprecated
# Not processed by Envgene
version: string
# Optional
# Deprecated
# Not processed by Envgene
sd: string
# Optional
services:
- # Mandatory
# Service name to which the override applies
# Must exactly match the service name
name: string
# Mandatory
parameters:
- # Mandatory
# Parameter key
name: string
# Mandatory
# Parameter value
value: string OR integer OR booleanExample:
name: "dev_core_override"
baseline: "dev"
applications:
- name: "Cloud-Core"
services:
- name: "facade-operator"
parameters:
- name: "FACADE_GATEWAY_MEMORY_LIMIT"
value: "96Mi"
- name: "FACADE_GATEWAY_CPU_REQUEST"
value: "50m"
- name: "tenant-manager"
parameters:
- name: "MEMORY_LIMIT"
value: "512Mi"
- name: "identity-provider"
parameters:
- name: "PG_MAX_POOL_SIZE"
value: "30"This is a Jinja template file used to render the Composite Structure object.
Location: The object is located at /templates/env_templates/*/
Example:
name: "{{ current_env.cloudNameWithCluster }}-composite-structure"
baseline:
name: "{{ current_env.name }}-core"
type: "namespace"
satellites:
- name: "{{ current_env.name }}-api"
type: "namespace"
- name: "{{ current_env.name }}-ui"
type: "namespace"This is a Jinja template file used to render the BG Domain object for environments that use Blue-Green Domain (BGD) support.
Location: /templates/env-templates/{Group name}/bg-domain.yml.j2
Example:
name: "{{ current_env.name }}-bg-domain"
type: bgdomain
originNamespace:
name: "{{ current_env.name }}-origin-bss"
type: namespace
peerNamespace:
name: "{{ current_env.name }}-peer-bss"
type: namespace
controllerNamespace:
name: "{{ current_env.name }}-bg-controller"
type: namespace
credentials: bgdomain-cred
url: https://controller-env-1-controller.qubership.orgThis is a Jinja template file used to render the Registry Definition object.
In addition to other macros, regdefs.overrides is available when rendering the Application Definition Template.
Location: /templates/regdefs/<registry-name>.yaml|yml|yml.j2|yaml.j2
Example:
name: "registry-1"
credentialsId: "registry-cred"
mavenConfig:
repositoryDomainName: "{{ regdefs.overrides.maven.RepositoryDomainName | default('maven.qubership.org') }}"
fullRepositoryUrl: "{{ regdefs.overrides.maven.fullRepositoryUrl | default('https://maven.qubership.org/repository') }}"
targetSnapshot: "snapshot"
targetStaging: "staging"
targetRelease: "release"
dockerConfig:
snapshotUri: "{{ regdefs.overrides.docker.snapshotUri | default('docker.qubership.org/snapshot') }}"
stagingUri: "{{ regdefs.overrides.docker.stagingUri | default('docker.qubership.org/staging') }}"
releaseUri: "{{ regdefs.overrides.docker.releaseUri | default('docker.qubership.org/release') }}"
groupUri: "{{ regdefs.overrides.docker.groupUri | default('docker.qubership.org/group') }}"
snapshotRepoName: "docker-snapshot"
stagingRepoName: "docker-staging"
releaseRepoName: "docker-release"
groupName: "docker-group"This is a Jinja template file used to render the Application Definition object.
In addition to other macros, appdefs.overrides is available when rendering the Application Definition Template.
Location: /templates/appdefs/<application-name>.yaml|yml|yml.j2|yaml.j2
Example:
name: "application-1"
registryName: "{{ appdefs.overrides.registryName | default('registry-1') }}"
artifactId: "application-1"
groupId: "org.qubership"This file contains Credential objects used by EnvGene to integrate with external systems like artifact registries, GitLab, GitHub, and others.
Location: /environments/configuration/credentials/credentials.yml|yaml
Example:
artifactory-cred:
type: usernamePassword
data:
username: "user-placeholder-123"
password: "pass-placeholder-123"
gitlab-token-cred:
type: secret
data:
secret: "token-placeholder-123"An Environment Instance is a file structure within the Envgene Instance Repository that describes the configuration for a specific environment/solution instance.
It is generated during the rendering process of an Environment Template. During this rendering process, environment-agnostic parameters from the Environment Template are combined with environment-specific parameters, such as Cloud Passport, environment-specific ParameterSet, environment-specific Resource Profile Overrides, to produce a set of parameters specific to a particular environment/solution instance.
The Environment Inventory is mandatory for creating an Environment Instance. It is a configuration file that describes a specific environment, including which Environment Template artifact to use and which environment-specific parameters to apply during rendering. It serves as the "recipe" for creating an Environment Instance.
The Environment Instance has a human-readable structure and is not directly used by parameter consumers. For parameter consumers, a consumer-specific structure is generated based on the Environment Instance. For example, for ArgoCD, an Effective Set is generated.
EnvGene adds the following header to all auto-generated objects (all Environment Instance objects are auto-generated):
# The contents of this file is generated from template artifact: <environment-template-artifact>.
# Contents will be overwritten by next generation.
# Please modify this contents only for development purposes or as workaround.Note
The <environment-template-artifact> placeholder is automatically replaced with the name of the EnvGene Environment Template artifact used for generation.
EnvGene sorts every Environment Instance object according to its JSON schema. This ensures that when objects are modified (e.g., when applying a new template version), the repository commits remain human-readable.
EnvGene validates each Environment Instance object against the corresponding JSON schema.
The Tenant object holds tenant-level parameters describing the tenancy, including registry configuration, ownership information, and pipeline parameters. These parameters are common to all environments within the tenant.
The Tenant object is used to generate Effective Set.
The Tenant object is generated during Environment Instance generation based on:
For each parameter in the Tenant, a comment is added indicating the source Parameter Set from which this parameter originated. This is used for traceability in the generation of the environment instance.
Location: /environments/<cluster-name>/<environment-name>/tenant.yml.
# Mandatory
# Field is used to uniquely identify the Tenant
# The name of the tenant
name: string
# Mandatory
# Deprecated
# Not processed by EnvGene
registryName: string
# Optional
# Description of the tenant
# Used for documentation and identification purposes
description: string
# Optional
# Tenant owners
# Used to identify responsible parties for the tenant
owners: string
# Optional
# Deprecated
# Not processed by EnvGene
gitRepository: string
# Optional
# Deprecated
# Not processed by EnvGene
defaultBranch: string
# Optional
# The identifier for credentials used by the deployment
# Used for authentication when performing deployment operations
credential: string
# Optional
# List of labels for Tenant
# A list of labels that should be applied to the tenant
# Used for filtering, organization, and grouping
labels: list
# Optional
# Deprecated
# Not processed by EnvGene
globalE2EParameters:
# Optional
# Deprecated
# Not processed by EnvGene
pipelineDefaultRecipients: string
# Optional
# Deprecated
# Not processed by EnvGene
recipientsStrategy: string
# Optional
# Deprecated
# Not processed by EnvGene
mergeTenantsAndE2EParameters: boolean
# Optional
# Deprecated
# Not processed by EnvGene
environmentParameters: hashmap
# Optional
# Deprecated
# Not processed by EnvGene
deployParameters: hashmapExample:
# The contents of this file is generated from template artifact: sample-template:v1.2.3.
# Contents will be overwritten by next generation.
# Please modify this contents only for development purposes or as workaround.
name: "tenant"
registryName: ""
description: "Composite Full Sample"
owners: "Qubership team"
credential: ""
labels: []The Cloud object holds cluster-level parameters describing the cluster and platform applications installed in it. These parameters are common to all namespaces in the environment.
The Cloud object is used to generate Effective Set.
The Cloud object is generated during Environment Instance generation based on:
- Cloud Template
- Template ParamSet
- Instance ParamSet
- Cloud Passport data (when used)
For each parameter in the Cloud, a comment is added indicating the source Parameter Set from which this parameter originated. This is used for traceability in the generation of the environment instance.
Location: /environments/<cluster-name>/<environment-name>/cloud.yml.
# Mandatory
# The name of the cloud configuration
# Typically combines cluster and environment name
name: string
# Mandatory
# The URL of the API endpoint of the cloud
# Used to connect to the Kubernetes cluster API server
apiUrl: string
# Mandatory
# The port on which the API runs
# Used to connect to the Kubernetes cluster API server
apiPort: integer|string
# Optional
# The private-facing URL for internal access
# Used to form service URLs accessible from within the cluster
privateUrl: string
# Optional
# The public-facing URL for external access
# Used to form service URLs accessible from outside the cluster
# Calculator macros are generated based on this URL
publicUrl: string
# Mandatory
# The URL for accessing the cloud's k8s dashboard
# Used for monitoring and management
dashboardUrl: string
# Mandatory
# A list of labels for categorizing or tagging the cloud
# Used for filtering, organization, and grouping
labels: list
# Mandatory
# The identifier for credentials used by the deployment
# Used for authentication when performing deployment
defaultCredentialsId: string
# Mandatory
# The communication protocol used
# HTTP or HTTPS
protocol: string
# Optional
# Deprecated
# Not processed by EnvGene
version: number
# Optional
# Deprecated
# Not processed by EnvGene
dbMode: string
# Optional
# Deprecated
# Not processed by EnvGene
databases: array
# Optional
# Deprecated
# Not processed by EnvGene
mergeDeployParametersAndE2EParameters: boolean
# Mandatory
# Configuration for the monitoring-as-a-service (MaaS)
maasConfig:
# Optional
# Credentials identifier for MaaS
# Used for authentication when accessing MaaS
credentialsId: string
# Mandatory
# Flag to enable or disable MaaS
# Controls whether MaaS-related parameters appear in the Effective Set
enable: boolean
# Optional
# URL for accessing MaaS
# Used to configure external access to MaaS
maasUrl: string
# Optional
# Internal address for MaaS
# Used to configure internal cluster access to MaaS
maasInternalAddress: string
# Mandatory
# Configuration for the vault service
vaultConfig:
# Optional
# Credentials identifier for the vault
# Used for authentication when accessing Vault
credentialsId: string
# Mandatory
# Flag to enable or disable vault integration
# Controls whether Vault-related parameters appear in the Effective Set
enable: boolean
# Optional
# The vault service URL
# Used to configure access to Vault
url: string
# Optional
# Database-as-a-service (DBaaS) configurations
# Multiple DBaaS instances can be configured
dbaasConfigs:
- # Optional
# Credentials identifier for DBaaS
# Used for authentication when accessing DBaaS
credentialsId: string
# Mandatory
# Flag to enable or disable DBaaS
# Controls whether DBaaS-related parameters appear in the Effective Set
enable: boolean
# Optional
# API URL for DBaaS
# Used to configure internal cluster access to DBaaS
apiUrl: string
# Optional
# URL for the DBaaS aggregator
# Used to configure external access to DBaaS
aggregatorUrl: string
# Mandatory
# Configuration for Consul service integration
consulConfig:
# Optional
# Secret token for Consul authentication
# Used for authentication when accessing Consul
tokenSecret: string
# Mandatory
# Flag to enable or disable Consul integration
# Controls whether Consul-related parameters appear in the Effective Set
enabled: boolean
# Optional
# The public URL for accessing Consul
# Used to configure external access to Consul
publicUrl: string
# Optional
# The internal URL for accessing Consul
# Used to configure internal cluster access to Consul
internalUrl: string
# Optional
# Key-value pairs of deployment parameters at the cloud level
# Used to set parameters that will be used for rendering Helm charts of applications in this cloud
deployParameters: hashmap
# Optional
# Key-value pairs of e2e parameters at the cloud level
# Used to configure the systems/pipelines managing the Environment lifecycle for this cloud
e2eParameters: hashmap
# Optional
# Key-value pairs of technical configuration parameters at the cloud level
# Used to set parameters that can be applied to the application at runtime
# without redeployment for this cloud
technicalConfigurationParameters: hashmap
# Optional
# List of deployment Parameter Set names to include at the cloud level
# Used to set parameters that will be used for rendering Helm charts of applications in this cloud
deployParameterSets: list
# Optional
# List of e2e Parameter Set names to include at the cloud level
# Used to configure the systems/pipelines managing the Environment lifecycle for this cloud
e2eParameterSets: list
# Optional
# List of technical configuration Parameter Set names to include at the cloud level
# Used to include predefined sets of parameters that can be applied to the application at runtime
# without redeployment for this cloud
technicalConfigurationParameterSets: listExample:
# The contents of this file is generated from template artifact: sample-template:v1.2.3.
# Contents will be overwritten by next generation.
# Please modify this contents only for development purposes or as workaround.
name: "cluster_01_env_01"
apiUrl: "api.cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
apiPort: "6443" # cloud passport: cluster-01 version: 1.5
privateUrl: "cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
publicUrl: "cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
dashboardUrl: "https://dashboard.cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
labels: []
defaultCredentialsId: "cloud-deploy-sa-token" # cloud passport: cluster-01 version: 1.5
protocol: "https" # cloud passport: cluster-01 version: 1.5
maasConfig:
credentialsId: "maas-cred" # cloud passport: cluster-01 version: 1.5
enable: true # cloud passport: cluster-01 version: 1.5
maasUrl: "http://maas.cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
maasInternalAddress: "http://maas.maas:8080" # cloud passport: cluster-01 version: 1.5
vaultConfig:
credentialsId: ""
enable: false
url: ""
dbaasConfigs:
- credentialsId: "dbaas-cred" # cloud passport: cluster-01 version: 1.5
enable: true # cloud passport: cluster-01 version: 1.5
apiUrl: "http://dbaas.dbaas:8080" # cloud passport: cluster-01 version: 1.5
aggregatorUrl: "https://dbaas.cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
consulConfig:
tokenSecret: "consul-cred" # cloud passport: cluster-01 version: 1.5
enabled: true # cloud passport: cluster-01 version: 1.5
publicUrl: "http://consul.consul:8080" # cloud passport: cluster-01 version: 1.5
internalUrl: "http://consul.consul:8080" # cloud passport: cluster-01 version: 1.5
deployParameters:
CLOUD_DASHBOARD_URL: "https://dashboard.cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
CMDB_URL: "https://cluster-01.qubership.org" # cloud passport: cluster-01 version: 1.5
CONSUL_ENABLED: "true" # cloud passport: cluster-01 version: 1.5
MAVEN_REPO_URL: "https://artifactory.qubership.org" # cloud passport: cluster-01 version: 1.5
MONITORING_ENABLED: "true" # cloud passport: cluster-01 version: 1.5
STORAGE_RWO_CLASS: "standard" # cloud passport: cluster-01 version: 1.5
ZOOKEEPER_ADDRESS: "zookeeper.zookeeper:2181" # cloud passport: cluster-01 version: 1.5
e2eParameters:
CLOUD_LEVEL_PARAM_1: "cloud-level-value-1" # paramset: cloud-level-params version: 25.1 source: instance
technicalConfigurationParameters: {}
deployParameterSets: []
e2eParameterSets: []
technicalConfigurationParameterSets: []The Namespace object contains namespace-level parameters — parameters that are specific to all applications within this namespace.
The Namespace object is used to generate Effective Set
The Namespace object is generated during Environment Instance generation based on:
For each parameter in the Namespace, a comment is added indicating the source Parameter Set from which this parameter originated. This is used for traceability in the generation of the environment instance.
Location: /environments/<cluster-name>/<environment-name>/Namespaces/<deploy-postfix>/namespace.yml.
# Mandatory
# The name of the namespace
# The same as the Kubernetes namespace name
name: string
# Optional
# Pointer to the credentials ID for accessing the namespace
# Used for authentication when performing deployment in this namespace
credentialsId: string
# Optional
# List of labels for the namespace
# Used for filtering, organization, and grouping
labels: list
# Mandatory
# Whether to perform parameter merging on the server side
# Controls where parameter merging happens during deployment
isServerSideMerge: boolean
# Mandatory
# Whether clean installations require approval
# Controls the approval workflow for clean installations in this namespace
cleanInstallApprovalRequired: boolean
# Mandatory
# Whether to merge deployParameters and e2eParameters
# Controls parameter merging behavior during effective set generation
mergeDeployParametersAndE2EParameters: boolean
# Optional
# Resource profile configuration for the namespace
# Used to manage performance parameters of applications in this namespace
profile:
# Mandatory
# The name of the resource profile override to use
# Used to determine which resource profile override to apply to applications in this namespace
name: string
# Mandatory
# The baseline profile to use
# Used as the base resource profile before applying overrides
baseline: string
# Optional
# Key-value pairs of deployment parameters at the namespace level
# Used to set parameters that will be used for rendering Helm charts of applications for this namespace
deployParameters: hashmap
# Optional
# Key-value pairs of e2e parameters at the namespace level
# Used to configure the systems/pipelines managing the Environment lifecycle for this namespace
e2eParameters: hashmap
# Optional
# Key-value pairs of technical configuration parameters at the namespace level
# Used to set parameters that can be applied to the application at runtime
# without redeployment for this namespace
technicalConfigurationParameters: hashmap
# Optional
# List of deployment Parameter Set names to include at the namespace level
# Used to set parameters that will be used for rendering Helm charts of applications for this namespace
deployParameterSets: list
# Optional
# List of e2e Parameter Set names to include at the namespace level
# Used to configure the systems/pipelines managing the Environment lifecycle for this namespace
e2eParameterSets: list
# Optional
# List of technical configuration Parameter Set names to include at the namespace level
# Used to include predefined sets of parameters that can be applied to the application at runtime
# without redeployment for this namespace
technicalConfigurationParameterSets: listExample:
# The contents of this file is generated from template artifact: sample-template:v1.2.3.
# Contents will be overwritten by next generation.
# Please modify this contents only for development purposes or as workaround.
name: "env-1-core"
credentialsId: ""
isServerSideMerge: false
labels:
- "solutionInstance-env-1-core"
cleanInstallApprovalRequired: false
mergeDeployParametersAndE2EParameters: false
deployParameters:
AIRFLOW_REDIS_DB: "1"
ARTIFACTORY_BASE_URL: "https://artifactory.qubership.org" # paramset: Namespace-common version: 23.4 source: template
ESCAPE_SEQUENCE: "true"
e2eParameters:
QTP_DYNAMIC_PARAMETERS: "" # paramset: nightly-parameters version: 23.4 source: template
technicalConfigurationParameters:
DBAAS_CLUSTER_DBA_CREDENTIALS_PASSWORD: "${DBAAS_CLUSTER_DBA_CREDENTIALS_PASSWORD}" # paramset: Namespace-commom-technicalConfiguration version: 23.4 source: template
DBAAS_CLUSTER_DBA_CREDENTIALS_USERNAME: "${DBAAS_CLUSTER_DBA_CREDENTIALS_USERNAME}" # paramset: Namespace-commom-technicalConfiguration version: 23.4 source: template
DBAAS_TEMP_PASS: "${DBAAS_CLUSTER_DBA_CREDENTIALS_PASSWORD}" # paramset: Namespace-commom-technicalConfiguration version: 23.4 source: template
MAAS_DEPLOYER_CLIENT_PASSWORD: "${MAAS_CREDENTIALS_PASSWORD}" # paramset: Namespace-commom-technicalConfiguration version: 23.4 source: template
MAAS_DEPLOYER_CLIENT_USERNAME: "${MAAS_CREDENTIALS_USERNAME}" # paramset: Namespace-commom-technicalConfiguration version: 23.4 source: template
deployParameterSets: []
e2eParameterSets: []
technicalConfigurationParameterSets: []The Application object defines parameters that are specific to a particular application. These parameters are isolated to the application and do not affect other applications.
The Application object is generated during the Environment Instance generation process, based on ParameterSets that contain an applications section. Generation occurs from both ParameterSets in the template repository and ParameterSets in the instance repository.
For each parameter in the Application, a comment is added indicating the source Parameter Set from which this parameter originated. This is used for traceability in the generation of the environment instance.
The Application object is used to generate Effective Set by providing application-specific parameters.
Location: Depends on which object the ParameterSet was associated with:
- Cloud:
/environments/<cluster-name>/<environment-name>/Applications/<application-name>.yml - Namespace:
/environments/<cluster-name>/<environment-name>/Namespaces/<deploy-postfix>/Applications/<application-name>.yml
# Mandatory
# The name of the Application, generated based on the `applications[].appName`
# attribute of Parameter Set
name: string
# Optional
# Key-value pairs of deployment parameters at the application level
# If the Parameter Set is associated in `deployParameterSets`, then the parameters
# from `application[].parameters` will be set in this section
deployParameters: hashmap
# Optional
# Key-value pairs of technical configuration parameters at the application level
# If the Parameter Set is associated in `technicalConfigurationParameterSets`, then the parameters
# from `application[].parameters` will be set in this section
technicalConfigurationParameters: hashmapExample:
# The contents of this file is generated from template artifact: sample-template:v1.2.3
# Contents will be overwritten by next generation.
# Please modify this contents only for development purposes or as workaround.
name: "Core"
deployParameters:
DBAAS_ISOLATION_ENABLED: "false" # paramset: wa version: 23.3
global.secrets.password: "${creds.get(\"streaming-cred\").password}" # paramset: management version: 23.3
global.secrets.username: "${creds.get(\"streaming-cred\").username}" # paramset: management version: 23.3
technicalConfigurationParameters: {}
These are customizations for performance parameters, over a Baseline Resource Profile.
During the generation of an Environment Instance, resource profiles that are associated with the Cloud and Namespace are merged or replaced with the Environment Specific Resource Profile Override and become part of the Resource Profile Override (part of the environment instance).
See details in resource-profile
Resource Profile Override JSON schema
Location: /environments/<cluster-name>/<environment-name>/Profiles
# Mandatory
# Resource profile override name
# Must match the filename without extension
name: string
# Optional
# Deprecated
# Not processed by Envgene
version: string
# Optional
# Name of the resource profile baseline that this override modifies
# Not processed by EnvGene
baseline: string
# Optional
# Override description
description: string
# Mandatory
applications:
- # Mandatory
# Application name to which the override applies
# Must exactly match the application name
name: string
# Optional
# Deprecated
# Not processed by Envgene
version: string
# Optional
# Deprecated
# Not processed by Envgene
sd: string
# Optional
services:
- # Mandatory
# Service name to which the override applies
# Must exactly match the service name
name: string
# Mandatory
parameters:
- # Mandatory
# Parameter key
# Dots in parameter keys are considered as markers of nested structure
# See details in [resource-profile](/docs/features/resource-profile.md)
name: string
# Mandatory
# Parameter value
value: string OR integer OR booleanExample:
name: "dev_core_override"
baseline: "dev"
applications:
- name: "Cloud-Core"
services:
- name: "facade-operator"
parameters:
- name: "FACADE_GATEWAY_MEMORY_LIMIT"
value: "96Mi"
- name: "FACADE_GATEWAY_CPU_REQUEST"
value: "50m"
- name: "tenant-manager"
parameters:
- name: "MEMORY_LIMIT"
value: "512Mi"
- name: "identity-provider"
parameters:
- name: "PG_MAX_POOL_SIZE"
value: "30"This object describes the composite structure of a solution. It defines the relationship between the core infrastructure namespace (baseline) that provides essential services and tools, and the satellite namespaces that consume these services.
The baseline can be either:
- A namespace (
type: namespace) that serves as the core infrastructure - A BG Domain (
type: bgdomain) that includesoriginNamespace,peerNamespace, andcontrollerNamespacefor Blue-Green deployment scenarios
The satellites array defines one or more namespaces that depend on the baseline. The Composite Structure is used by template macros (BASELINE_ORIGIN, BASELINE_PEER, BASELINE_CONTROLLER) to automatically resolve baseline references for satellite namespaces.
The Composite Structure object is generated during Environment Instance generation from the Composite Structure Template specified in the Environment Template descriptor.
It has the following structure:
name: <composite-structure-name>
baseline:
name: <baseline-namespace>
type: namespace
satellites:
- name: <satellite-namespace-1>
type: namespace
- name: <satellite-namespace-2>
type: namespaceLocation: /configuration/environments/<CLUSTER-NAME>/<ENV-NAME>/composite_structure.yml
Composite Structure JSON schema
Example:
name: "clusterA-env-1-composite-structure"
baseline:
name: "env-1-core"
type: "namespace"
satellites:
- name: "env-1-api"
type: "namespace"
- name: "env-1-ui"
type: "namespace"BD Deployment Example:
composite_structure:
name: "clusterA-env-1-composite-structure"
baseline:
type: bgdomain
name: env-1-bg-domain
originNamespace:
type: namespace
name: env-1-bss-origin
peerNamespace:
type: namespace
name: env-1-bss-peer
controllerNamespace:
type: namespace
name: env-1-bss-controller
satellites:
- type: "namespace"
name: "env-1-data-management"The BG Domain object defines the Blue-Green Domain structure and namespace mappings for environments that use BGD support. This object is used for alias resolution in the NS_BUILD_FILTER parameter and BGD lifecycle management.
The BG Domain object is generated during Environment Instance generation based on:
Location: /environments/<cluster-name>/<environment-name>/bg_domain.yml
# Mandatory
# The name of the BG Domain object
# Used to identify the BGD configuration
name: <environment-name>-bg-domain
# Mandatory
# The type of the object
# Always set to 'bgdomain' for BG Domain objects
type: bgdomain
# Mandatory
# Origin namespace definition
# Used to define the currently active BGD namespace
originNamespace:
# Mandatory
# The name of the origin namespace
# Used for BGD alias resolution and lifecycle operations
name: <origin-namespace-name>
# Mandatory
# The type of the namespace object
# Always set to 'namespace'
type: namespace
# Mandatory
# Peer namespace definition
# Used to define the standby BGD namespace
peerNamespace:
# Mandatory
# The name of the peer namespace
# Used for BGD alias resolution and lifecycle operations
name: <peer-namespace-name>
# Mandatory
# The type of the namespace object
# Always set to 'namespace'
type: namespace
# Mandatory
# Controller namespace definition
# Used for BGD lifecycle management and coordination
controllerNamespace:
# Mandatory
# The name of the controller namespace
# Used by BGD operations for lifecycle coordination
name: <controller-namespace-name>
# Mandatory
# The type of the namespace object
# Always set to 'namespace'
type: namespace
# Mandatory
# Credentials for accessing the BGD controller
# Used for authentication with BG-Operator
credentials: <bgd-controller-credentials>
# Mandatory
# URL of the BG-Operator service
# Used for BGD lifecycle operations
url: <bg-operator-url>When generating an Environment Instance that includes a BG Domain object, a Credential object with usernamePassword type is also generated in the Environment Credentials File. The ID of the Credential uses the value bg_domain.controllerNamespace.credentials.
The inventory.config.updateCredIdsWithEnvName mechanism works for this Credential as well as for all other Credentials.
Location: /environments/<cluster-name>/<env-name>/bg_domain.yml
Example:
bg_domain:
name: env-1-bg-domain
type: bgdomain
originNamespace:
name: env-1-bss-origin
type: namespace
peerNamespace:
name: env-1-bss-peer
type: namespace
controllerNamespace:
name: env-1-controller
credentials: controller-cred
type: namespace
url: https://controller-env-1-controller.qubership.orgBGD Alias Resolution: Used by NS_BUILD_FILTER parameter to resolve BGD aliases:
@controller→ controller namespace@origin→ origin namespaces@peer→ peer namespaces
This object, which is an empty file, is used to represent the current Blue-Green Domain state of the Origin and Peer namespaces via lightweight filesystem markers.
The files are maintained by the bg_manage job.
See details in Blue-Green Domain
Filename patterns:
.origin-<state>.peer-<state>
Where valid values for <state> are:
activeidlecandidatelegacyfailedw(warmup failure)failedc(commit/promote failure)
Location:
State files are located in the environment root directory:
/environments/<cluster-name>/<env-name>/
Example:
/environments/<cluster-name>/<env-name>/
├── .origin-active
├── .peer-candidate
The Solution Descriptor (SD) defines the application composition of a solution. In EnvGene it serves as the primary input for EnvGene's Effective Set calculations. The SD can also be used for template rendering through the current_env.solution_structure variable.
Other systems can use it for other reasons, for example as a deployment blueprint for external systems.
Only SD versions 2.1 and 2.2 can be used by EnvGene for the purposes described above, as their application list elements contain the deployPostfix and version attributes.
For details on how EnvGene processes SD, refer to the SD Processing documentation.
SD in EnvGene can be introduced either through a manual commit to the repository or by running the Instance repository pipeline. The parameters of this pipeline that start with SD_ relate to SD processing.
In EnvGene, there are:
Full SD: Defines the complete application composition of a solution. There can be only one Full SD per environment, located at the path /environments/<cluster-name>/<environment-name>/Inventory/solution-descriptor/sd.yml
Delta SD: A partial Solution Descriptor that contains incremental changes to be applied to the Full SD. Delta SDs enable selective updates to solution components without requiring a complete SD replacement. There can be only one Delta SD per environment, located at the path /environments/<cluster-name>/<environment-name>/Inventory/solution-descriptor/delta_sd.yml
Only Full SD is used for Effective Set calculation. The Delta SD is only needed for troubleshooting purposes.
Example:
version: 2.1
type: "solutionDeploy"
deployMode: "composite"
applications:
- version: "MONITORING:0.64.1"
deployPostfix: "platform-monitoring"
- version: "postgres:1.32.6"
deployPostfix: "postgresql"
- version: "postgres-services:1.32.6"
deployPostfix: "postgresql"
- version: "postgres:1.32.6"
deployPostfix: "postgresql-dbaas"This object is used by EnvGene to manage sensitive parameters. It is generated during environment instance creation for each <cred-id> specified in Credential macros
There are two Credential types with different structures:
Used for credentials requiring username/password pairs. Contains two mandatory credentials fields(username and password):
<cred-id>:
type: usernamePassword
data:
username: string
password: stringUsed for single-secret credentials. Contains one mandatory credentials field(secret):
<cred-id>:
type: secret
data:
secret: stringAfter generation, <value> is set to envgeneNullValue. The user must manually set the actual value.
This file stores all Credential objects of the Environment upon generation
Location: /environments/<cloud-name>/<environment-name>/Credentials/credentials.yml
Example:
db_cred:
type: usernamePassword
data:
username: "user-placeholder-123"
password: "pass-placeholder-123"
token:
type: secret
data:
secret: "token-placeholder-123"This file provides centralized storage for Credential values that can be shared across multiple environments. During Environment Instance generation, EnvGene automatically copies relevant Credential objects from these shared files into the Environment Credentials File
The relationship between Shared Credentials and Environment is established through:
- The
envTemplate.sharedMasterCredentialFilesproperty in Environment Inventory - The property value should be the filename (without extension) of the Shared Credentials File
Credentials can be defined at three scopes with different precedence:
- Environment-level
Location:
/environments/<cluster-name>/<environment-name>/Inventory/credentials/ - Cluster-level
Location:
/environments/<cluster-name>/credentials/ - Site-level
Location:
/environments/credentials/
EnvGene checks these locations in order (environment → cluster → site) and uses the first matching file found.
Any YAML file located in these folders is treated as a Shared Credentials File.
Example:
db_cred:
type: usernamePassword
data:
username: "user-placeholder-123"
password: "pass-placeholder-123"
token:
type: secret
data:
secret: "token-placeholder-123"This file contains Credential objects used by EnvGene to integrate with external systems like artifact registries, GitLab, GitHub, and others.
Location:
/environments/configuration/credentials/credentials.yml|yaml/environments/<cluster-name>/app-deployer/<any-string>-creds.yml|yaml
Example:
registry-cred:
type: usernamePassword
data:
username: "user-placeholder-123"
password: "pass-placeholder-123"
gitlab-token-cred:
type: secret
data:
secret: "token-placeholder-123"This file includes template variables that can be shared across multiple environments. During Environment Instance generation, EnvGene automatically merges variables from these shared files with additionalTemplateVariables from the Environment Inventory.
The relationship between Shared Template Variable Files and Environment is established through:
- The
envTemplate.sharedTemplateVariablesproperty in Environment Inventory - The property value should be the filename (without extension) of the Shared Template Variable File
Files can be defined at three scopes with different precedence:
- Environment-level
Location:
/environments/<cluster-name>/<environment-name>/shared-template-variables/ - Cluster-level
Location:
/environments/<cluster-name>/shared-template-variables/ - Site-level
Location:
/environments/shared-template-variables/
EnvGene checks these locations in order (environment → cluster → site) and uses the first matching file found.
The file must contain a key-value hashmap and must NOT be located in a parameters directory.
During Environment Instance generation, variables from Shared Template Variable Files are merged with additionalTemplateVariables from the Environment Inventory. Variables from additionalTemplateVariables take precedence over variables from Shared Template Variable Files if there are conflicts.
Example:
TEMPLATE_VARIABLE_1: "value-1"
TEMPLATE_VARIABLE_2: "value-2"
nested:
key1: "nested-value-1"
key2: "nested-value-2"Environment Specific ParameterSets are containers for parameters that override template-level parameters for a specific environment or group of environments. These ParameterSets are created by the configurator in the Instance repository to customize parameter values without modifying the Template repository.
The Environment-Specific ParameterSet is specified individually for each Namespace or Cloud via the envTemplate.envSpecificParamsets, envTemplate.envSpecificE2EParamsets, or envTemplate.envSpecificTechnicalParamsets parameters in the Environment Inventory.
During the generation of an Environment Instance, parameters from Environment-Specific ParameterSets are merged with parameters from Template ParameterSets, with environment-specific values taking precedence:
- Parameters from ParameterSets referenced in
envSpecificParamsetsoverride values indeployParametersof the corresponding Cloud or Namespace. - Parameters from ParameterSets referenced in
envSpecificE2EParamsetsoverride values ine2eParameters. - Parameters from ParameterSets referenced in
envSpecificTechnicalParamsetsoverride values intechnicalConfigurationParameters.
Environment Specific ParameterSets also support application-level parameters through the applications section, allowing you to override parameters for specific applications within a namespace.
Location:
When an Environment Specific ParameterSet is referenced, EnvGene searches for the corresponding YAML file in the Instance repository using the following location priority (from highest to lowest):
/environments/<cluster-name>/<environment-name>/Inventory/parameters/— Environment-specific, highest priority/environments/<cluster-name>/parameters/— Cluster-wide, applies to all environments in the cluster/environments/parameters/— Global, common for the entire repository
The first match found is used as the environment-specific override for the given Cloud or Namespace.
# Optional
# Deprecated
version: string
# Mandatory
# The name of the Parameter Set
# Used to reference the Parameter Set in env_definition.yml
# Must match the Parameter Set filename
name: string
# Mandatory
# Key-value pairs of parameters that will override template-level parameters
parameters: hashmap
# Optional
# Section describing application-level parameters
# For each `appName`, parameters will be merged with the Application object parameters
applications:
- # Mandatory
appName: string
# Mandatory
parameters: hashmapExample:
# File: environments/prod-cluster/prod-env/Inventory/parameters/billing-prod-deploy.yml
# Deployment parameters - used for Helm chart rendering during deployment
name: billing-prod-deploy
version: 1.0
parameters:
INGRESS_HOST: "billing.prod.example.com"
INGRESS_TLS_ENABLED: "true"
STORAGE_CLASS: "ssd-retain"
DATABASE_NAME: "billing_prod"
FEATURE_NEW_PAYMENT_GATEWAY: "true"
FEATURE_INVOICE_GENERATOR: "true"
applications:
- appName: billing-api
parameters:
SERVICE_TYPE: "LoadBalancer"
EXTERNAL_PORT: "8443"
HEALTH_CHECK_PATH: "/api/health"
- appName: billing-worker
parameters:
CRON_SCHEDULE: "0 */6 * * *"
PERSISTENCE_ENABLED: "true"Referenced in env_definition.yml:
envTemplate:
envSpecificParamsets:
billing:
- billing-prod-deployThe filename of the ParameterSet must match the value of the name attribute. The ParameterSet name must be unique within the repository scope where it is located. This is validated during processing; if the validation fails, the operation will stop with an error.
The Environment Specific ParameterSet schema is identical to the Template ParameterSet.
These are customizations for performance parameters, over a Baseline Resource Profile and Template Resource Profile Override. Such overrides are created by the configurator in the Instance repository, to further adjust performance parameters on top of the Baseline Resource Profile and Template Resource Profile Override.
The Environment-Specific Resource Profile Override is specified individually for each Namespace or Cloud via envTemplate.envSpecificResourceProfiles parameter of the Environment Inventory.
During the generation of an Environment Instance, resource profiles that are associated with the Cloud and Namespace are merged or replaced with the Environment Specific Resource Profile Override and become part of the Resource Profile Override (part of the environment instance).
Environment Specific Resource Profile Override can be parameterized using Jinja and macros. In this case, the file should be named <resource-profile-override-name>.yaml.j2 or <resource-profile-override-name>.yml.j2.
In Environment Specific Resource Profile Override, you can set nested parameter values using dots in the parameter name (dot notation). For example:
...
applications:
- name: "my-app"
services:
- name: "nginx"
parameters:
- name: "resources.limits.cpu"
value: "1000m"
- name: "resources.limits.memory"
value: "512Mi"See details in resource-profile
Environment Specific Resource Profile Override JSON schema
Location:
When an Environment Specific Resource Profile Override is referenced, EnvGene searches for the corresponding YAML file in the Instance repository using the following location priority (from highest to lowest):
/environments/<cluster-name>/<environment-name>/Inventory/resource_profiles— Environment-specific, highest priority/environments/<cluster-name>/resource_profiles— Cluster-wide, applies to all environments in the cluster/environments/resource_profiles— Global, common for the entire repository
The first match found is used as the environment-specific override for the given Cloud or Namespace.
# Mandatory
# Resource profile override name
# Must match the filename without extension
name: string
# Optional
# Deprecated
# Not processed by Envgene
version: string
# Optional
# Name of the resource profile baseline that this override modifies
# Not processed by EnvGene
baseline: string
# Optional
# Override description
description: string
# Mandatory
applications:
- # Mandatory
# Application name to which the override applies
# Must exactly match the application name
name: string
# Optional
# Deprecated
# Not processed by Envgene
version: string
# Optional
# Deprecated
# Not processed by Envgene
sd: string
# Optional
services:
- # Mandatory
# Service name to which the override applies
# Must exactly match the service name
name: string
# Mandatory
parameters:
- # Mandatory
# Parameter key
# Dots in parameter keys are considered as markers of nested structure
# See details in [resource-profile](/docs/features/resource-profile.md)
name: string
# Mandatory
# Parameter value
value: string OR integer OR booleanExample:
name: "dev_core_override"
baseline: "dev"
applications:
- name: "Cloud-Core"
services:
- name: "facade-operator"
parameters:
- name: "FACADE_GATEWAY_MEMORY_LIMIT"
value: "96Mi"
- name: "FACADE_GATEWAY_CPU_REQUEST"
value: "50m"
- name: "tenant-manager"
parameters:
- name: "MEMORY_LIMIT"
value: "512Mi"
- name: "identity-provider"
parameters:
- name: "PG_MAX_POOL_SIZE"
value: "30"Cloud Passport is contracted set of environment-specific deployment parameters that enables a business solution instance's (Environment) applications to access cloud infrastructure resources from a platform solution instance (Environment).
A Cloud Passport can be obtained either through cloud discovery (using the Cloud Passport Discovery Tool) or manually gathered.
Contains non-sensitive Cloud Passport parameters
Location: /environments/<cluster-name>/cloud-passport/<any-string>.yml|yaml
Contains sensitive Cloud Passport parameters
Location: /environments/<cluster-name>/cloud-passport/<any-string>-creds.yml|yaml
This object describes where the environment template artifact is stored in the registry. It is used to convert the application:version format of an artifact template into the registry and Maven artifact parameters needed to download it.
Location: /configuration/artifact_definitions/<artifact-definition-name>.yaml
The filename must match the value of the name attribute.
Two versions of this object are supported
# Mandatory
# Name of the artifact template. This corresponds to the `application` part in the `application:version` notation.
name: string
# Mandatory
# Artifact template Maven group id
groupId: string
# Mandatory
# Artifact template Maven artifact id
artifactId: string
# Mandatory
registry:
# Mandatory
# Name of the registry where the artifact is stored
name: string
# Mandatory
# Pointer to the EnvGene Credential object.
# Credential with this ID must be located in /configuration/credentials/credentials.yml
credentialsId: string
# Mandatory
mavenConfig:
# Mandatory
# URL of the registry where the artifact is stored
repositoryDomainName: string
# Mandatory
# Snapshot repository name
# EnvGene checks repositories in this order: release -> staging -> snapshot
# It stops when it finds the artifact
targetSnapshot: string
# Mandatory
# Staging repository name
targetStaging: string
# Mandatory
# Release repository name
targetRelease: stringExample:
name: "env-template"
groupId: "org.qubership"
artifactId: "env-template"
registry:
name: "sandbox"
credentialsId: "artifactory-cred"
mavenConfig:
repositoryDomainName: "https://artifactory.qubership.org"
targetSnapshot: "mvn.snapshot"
targetStaging: "mvn.staging"
targetRelease: "mvn.release"Artifact Definition JSON schema
This version of Artifact Definition uses Registry Definition v2.0 structure with support for advanced authentication configurations, including public cloud registries (AWS, Azure, GCP).
Location: /configuration/artifact_definitions/<artifact-definition-name>.yaml
The filename must match the value of the name attribute.
# Mandatory
# Artifact Definition object version
version: "2.0"
# Mandatory
# Name of the artifact template. This corresponds to the `application` part in the `application:version` notation.
name: string
# Mandatory
# Artifact template Maven group id
groupId: string
# Mandatory
# Artifact template Maven artifact id
artifactId: string
# Mandatory
registry:
# Mandatory
# Name of the registry where the artifact is stored
name: string
# Optional
# Deprecated
# Use authConfig section instead
# Pointer to the EnvGene Credential object.
# Credential with this ID must be located in /configuration/credentials/credentials.yml
credentialsId: string
# Optional
# Authentication configs
# Supports advanced authentication methods including public cloud registries
authConfig:
<auth-config-name>:
# Optional
# Not used in case of `authMethod: anonymous`
# Pointer to the EnvGene Credential object.
# Depending on `authType`, it can be:
# access key (username) + secret (password) for longLived
# Credential with this ID must be located in /configuration/credentials/credentials.yml
credentialsId: string
# Optional
# Public cloud registry authentication strategy
# Used in case of public cloud registries
authType: enum [ shortLived, longLived ]
# Mandatory
# Registry type
provider: enum [ aws, azure, gcp, nexus, artifactory ]
# Mandatory
# In case of non-cloud public registries, `user_pass` is used
# In case of public cloud registries valid values, depends on `provider`:
# `nexus`: `user_pass` or `anonymous`
# `artifactory`: `user_pass` or `anonymous`
# `aws`: `secret`, `assume_role` or `anonymous`
# `gcp`: `federation`, `service_account` or `anonymous`
# `azure`: `oauth2` or `anonymous`
authMethod: enum [ secret, assume_role, federation, service_account, oauth2, user_pass, anonymous ]
# Optional
# Region of the AWS cloud
# Used with `provider: aws` only
awsRegion: string
# Optional
# Domain of the AWS cloud
# Used with `provider: aws` only
# Required for CodeArtifact
awsDomain: string
# Optional
# Amazon Resource Name (ARN) of the role to assume
# Used with `provider: aws` AND `authMethod: assume_role` only
awsRoleARN: string
# Optional
# Constant session name part to be used to generate --role-session-name parameter for AssumeRole
# Used with `provider: aws` AND `authMethod: assume_role` only
awsRoleSessionPrefix: string
# Optional
# Section, that describes OIDC interaction
# Used with `provider: gcp` AND `authMethod: federation` only
gcpOIDC:
# Mandatory
# URL of external OIDC server
URL: string
# Optional
# Custom parameters for external OIDC server
customParams:
- <key>: <value>
- <keyN>: <valueN>
# Optional
# GCP project number
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegProject: string
# Optional
# Workload identity pool ID
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegPoolId: string
# Optional
# Workload identity Provider ID
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegProviderId: string
# Optional
# Service account email
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegSAEmail: string
# Optional
# Azure AD tenant ID
# Used with `provider: azure` only
azureTenantId: string
# Optional
# Target resource for ACR
# Used with `provider: azure` only
azureACRResource: string
# Optional
# Azure Container Registry name
# Used with `provider: azure` only
# Required for ACR
azureACRName: string
# Optional
# Target resource for Azure Artifacts
# Used with `provider: azure` only
azureArtifactsResource: string
# Mandatory
mavenConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Optional
# Used in case of provider nexus or artifactory only
# Snapshot repository name
# EnvGene checks repositories in this order: release -> staging -> snapshot
# It stops when it finds the artifact
targetSnapshot: string
# Optional
# Used in case of provider nexus or artifactory only
# Staging repository name
targetStaging: string
# Optional
# Used in case of provider nexus or artifactory only
# Release repository name
targetRelease: string
# Optional
# Used in case of provider nexus or artifactory only
# Snapshot Maven repository group name
snapshotGroup: string
# Optional
# Release Maven repository group name
releaseGroup: stringExample with simple authentication:
version: "2.0"
name: "env-template"
groupId: "org.qubership"
artifactId: "env-template"
registry:
name: "sandbox"
authConfig:
maven-auth:
authType: longLived
provider: nexus
authMethod: user_pass
credentialsId: "artifactory-cred"
mavenConfig:
authConfig: maven-auth
repositoryDomainName: "https://artifactory.qubership.org"
targetSnapshot: "mvn.snapshot"
targetStaging: "mvn.staging"
targetRelease: "mvn.release"
snapshotGroup: "mvn.snapshot-group"
releaseGroup: "mvn.release-group"Example with AWS CodeArtifact:
version: "2.0"
name: "env-template"
groupId: "org.qubership"
artifactId: "env-template"
registry:
name: "aws-codeartifact"
authConfig:
aws-maven:
authType: shortLived
provider: aws
authMethod: assume_role
credentialsId: "aws-key-secret"
awsRegion: "eu-west-1"
awsDomain: "codeartifact.eu-west-1.amazonaws.com"
awsRoleARN: "arn:aws:iam::123456789012:role/CodeArtifactRole"
awsRoleSessionPrefix: "envgene-session"
mavenConfig:
authConfig: aws-maven
repositoryDomainName: "https://codeartifact.eu-west-1.amazonaws.com/maven/app"
targetSnapshot: "snapshots"
targetStaging: "staging"
targetRelease: "releases"
snapshotGroup: "snapshot-group"
releaseGroup: "release-group"Example with GCP Artifact Registry:
version: "2.0"
name: "env-template"
groupId: "org.qubership"
artifactId: "env-template"
registry:
name: "gcp-artifact-registry"
authConfig:
gcp-maven:
authType: shortLived
provider: gcp
authMethod: federation
credentialsId: "oidc-token"
gcpOIDC:
URL: "https://external-oidc-server-url"
customParams:
- key1: value1
- key2: value2
gcpRegProject: "123456789012"
gcpRegPoolId: "idp-pool-id"
gcpRegProviderId: "idp-provider"
gcpRegSAEmail: "test@test.iam.gserviceaccount.com"
mavenConfig:
authConfig: gcp-maven
repositoryDomainName: "https://artifactregistry.googleapis.com"
targetSnapshot: "maven-snapshots"
targetStaging: "maven-staging"
targetRelease: "maven-releases"
snapshotGroup: "maven-snapshots-group"
releaseGroup: "maven-releases-group"Example with Azure Artifacts:
version: "2.0"
name: "env-template"
groupId: "org.qubership"
artifactId: "env-template"
registry:
name: "azure-artifacts"
authConfig:
azure-maven:
authType: shortLived
provider: azure
authMethod: oauth2
credentialsId: "azure-ad"
azureTenantId: "tenant-id"
azureACRResource: "management"
azureACRName: "acr-name"
azureArtifactsResource: "499b84ac-1321-427f-aa17-267ca6975798"
mavenConfig:
authConfig: azure-maven
repositoryDomainName: "https://pkgs.dev.azure.com"
targetSnapshot: "maven-snapshots"
targetStaging: "maven-staging"
targetRelease: "maven-releases"
snapshotGroup: "maven-snapshots-group"
releaseGroup: "maven-releases-group"Authentication Configuration Dependencies:
The authConfig section has complex dependencies between attributes. The following table shows which fields are required based on provider and authMethod values:
| Field | Condition | Required |
|---|---|---|
provider |
Always | REQUIRED |
authMethod |
Always | REQUIRED |
credentialsId |
authMethod != "anonymous" |
REQUIRED |
authType |
provider IN ["aws", "azure", "gcp"] |
OPTIONAL |
awsRegion |
provider == "aws" |
OPTIONAL |
awsDomain |
provider == "aws" (required for CodeArtifact) |
REQUIRED |
awsRoleARN |
provider == "aws" AND authMethod == "assume_role" |
REQUIRED |
awsRoleSessionPrefix |
provider == "aws" AND authMethod == "assume_role" |
OPTIONAL |
gcpOIDC |
provider == "gcp" AND authMethod == "federation" |
REQUIRED |
gcpOIDC.URL |
Inside gcpOIDC |
REQUIRED |
gcpOIDC.customParams |
Inside gcpOIDC |
OPTIONAL |
gcpRegProject |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegPoolId |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegProviderId |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegSAEmail |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
azureTenantId |
provider == "azure" |
OPTIONAL |
azureACRResource |
provider == "azure" |
OPTIONAL |
azureACRName |
provider == "azure" (required for ACR) |
REQUIRED |
azureArtifactsResource |
provider == "azure" |
OPTIONAL |
Valid authMethod values per provider:
| Provider | Valid authMethod values |
|---|---|
nexus |
user_pass, anonymous |
artifactory |
user_pass, anonymous |
aws |
secret, assume_role, anonymous |
gcp |
federation, service_account, anonymous |
azure |
oauth2, anonymous |
Artifact Definition v2.0 JSON schema
This object describes registry where artifacts (other than environment template artifacts) are stored.
It is used by external systems to convert the application:version format of an artifact template into the registry and Maven artifact parameters required to download it.
A separate definition file is used for each individual registry. Each Environment uses its own set of Registry Definitions.
The filename must match the value of the name attribute.
Location: /environments/<cluster-name>/<environment-name>/RegDefs/<registry-name>.yml
Two versions of this object are supported
# Mandatory
# Name of the registry
name: string
# Mandatory
# Pointer to the EnvGene Credential object.
# Credential with this ID must be located in /configuration/credentials/credentials.yml
credentialsId: string
# Mandatory
mavenConfig:
# Mandatory
# Domain name of the Maven registry
repositoryDomainName: string
# Mandatory
# Full URL of the Maven registry
fullRepositoryUrl: string
# Mandatory
# Snapshot Maven repository name
targetSnapshot: string
# Mandatory
# Staging Maven repository name
targetStaging: string
# Mandatory
# Release Maven repository name
targetRelease: string
# Mandatory
# Snapshot Maven repository name
snapshotGroup: string
# Mandatory
# Release Maven repository name
releaseGroup: string
# Mandatory
dockerConfig:
# Mandatory
# URI for Docker snapshot registry
snapshotUri: string
# Mandatory
# URI for Docker staging repository
stagingUri: string
# Mandatory
# URI for Docker release repository
releaseUri: string
# Mandatory
# URI for Docker group repository
groupUri: string
# Mandatory
# Name of Docker snapshot repository
snapshotRepoName: string
# Mandatory
# Name of Docker staging repository
stagingRepoName: string
# Mandatory
# Name of Docker release repository
releaseRepoName: string
# Mandatory
# Name of Docker group
groupName: string
# Optional
helmConfig:
# Mandatory
# Helm staging repository name
helmTargetStaging: string
# Mandatory
# Helm release repository name
helmTargetRelease: string
# Optional
helmAppConfig:
# Mandatory
# Helm staging repository name for application charts
helmStagingRepoName: string
# Mandatory
# Helm release repository name for application charts
helmReleaseRepoName: string
# Mandatory
# Helm group repository name for application charts
helmGroupRepoName: string
# Mandatory
# Helm dev repository name for application charts
helmDevRepoName: string
# Optional
goConfig:
# Mandatory
# Go snapshot repository name
goTargetSnapshot: string
# Mandatory
# Go release repository name
goTargetRelease: string
# Mandatory
# Go proxy repository URL
goProxyRepository: string
# Optional
rawConfig:
# Mandatory
# Raw snapshot repository name
rawTargetSnapshot: string
# Mandatory
# Raw release repository name
rawTargetRelease: string
# Mandatory
# Raw staging repository name
rawTargetStaging: string
# Mandatory
# Raw proxy repository name
rawTargetProxy: string
# Optional
npmConfig:
# Mandatory
# npm snapshot repository name
npmTargetSnapshot: string
# Mandatory
# npm release repository name
npmTargetRelease: stringExample:
name: sandbox
credentialsId: nexus-credentials
mavenConfig:
repositoryDomainName: nexus.qubership.org
fullRepositoryUrl: https://nexus.qubership.org/repository
targetSnapshot: maven-snapshots
targetStaging: maven-staging
targetRelease: maven-releases
snapshotGroup: maven-snapshots-group
releaseGroup: maven-releases-group
dockerConfig:
snapshotUri: docker.qubership.org/snapshots
stagingUri: docker.qubership.org/staging
releaseUri: docker.qubership.org/releases
groupUri: docker.qubership.org/group
snapshotRepoName: docker-snapshots
stagingRepoName: docker-staging
releaseRepoName: docker-releases
groupName: docker-groupRegistry Definition v1.0 JSON schema
# Mandatory
# Registry Definition object version
version: "2.0"
# Mandatory
# Name of the registry
name: string
# Optional
# Authentication configs
authConfig:
<auth-config-name>:
# Optional
# Not used in case of `authMethod: anonymous`
# Pointer to the EnvGene Credential object.
# Depending on `authType`, it can be:
# access key (username) + secret (password) for longLived
# Credential with this ID must be located in /configuration/credentials/credentials.yml
credentialsId: string
# Optional
# Public cloud registry authentication strategy
# Used in case of public cloud registries
authType: enum [ shortLived, longLived ]
# Mandatory
# Registry type
provider: enum [ aws, azure, gcp, nexus, artifactory ]
# Mandatory
# In case of non-cloud public registries, `user_pass` is used
# In case of public cloud registries valid values, depends on `provider`:
# `nexus`: `user_pass` or `anonymous`
# `artifactory`: `user_pass` or `anonymous`
# `aws`: `secret`, `assume_role` or `anonymous`
# `gcp`: `federation`, `service_account` or `anonymous`
# `azure`: `oauth2` or `anonymous`
authMethod: enum [ secret, assume_role, federation, service_account, oauth2, user_pass, anonymous ]
# Optional
# Region of the AWS cloud
# Used with `provider: aws` only
awsRegion: string
# Optional
# Domain of the AWS cloud
# Used with `provider: aws` only
# Required for CodeArtifact
awsDomain: string
# Optional
# Amazon Resource Name (ARN) of the role to assume
# Used with `provider: aws` AND `authMethod: assume_role` only
awsRoleARN: string
# Optional
# Constant session name part to be used to generate --role-session-name parameter for AssumeRole
# Used with `provider: aws` AND `authMethod: assume_role` only
awsRoleSessionPrefix: string
# Optional
# Section, that describes OIDC interaction
# Used with `provider: gcp` AND `authMethod: federation` only
gcpOIDC:
# Mandatory
# URL of external OIDC server
URL: string
# Optional
# Custom parameters for external OIDC server
customParams:
- <key>: <value>
- <keyN>: <valueN>
# Optional
# GCP project number
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegProject: string
# Optional
# Workload identity pool ID
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegPoolId: string
# Optional
# Workload identity Provider ID
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegProviderId: string
# Optional
# Service account email
# Used with `provider: gcp` AND `authMethod: federation` only
gcpRegSAEmail: string
# Optional
# Azure AD tenant ID
# Used with `provider: azure` only
azureTenantId: string
# Optional
# Region of the GCP cloud
# Used with `provider: gcp` only
gcpRegion: string
# Optional
# Target resource for ACR
# Used with `provider: azure` only
azureACRResource: string
# Optional
# Azure Container Registry name
# Used with `provider: azure` only
# Required for ACR
azureACRName: string
# Optional
# Target resource for Azure Artifacts
# Used with `provider: azure` only
azureArtifactsResource: string
# Mandatory
mavenConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Optional
# Used in case of authMethod nexus or artifactory only
# Snapshot Maven repository name
targetSnapshot: string
# Optional
# Used in case of authMethod nexus or artifactory only
# Staging Maven repository name
targetStaging: string
# Optional
# Used in case of authMethod nexus or artifactory only
# Release Maven repository name
targetRelease: string
# Optional
# Used in case of authMethod nexus or artifactory only
# Snapshot Maven repository name
snapshotGroup: string
# Optional
# Release Maven repository name
releaseGroup: string
# Optional
dockerConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# URI for Docker snapshot registry
snapshotUri: string
# Mandatory
# URI for Docker staging repository
stagingUri: string
# Mandatory
# URI for Docker release repository
releaseUri: string
# Mandatory
# URI for Docker group repository
groupUri: string
# Mandatory
# Name of Docker snapshot repository
snapshotRepoName: string
# Mandatory
# Name of Docker staging repository
stagingRepoName: string
# Mandatory
# Name of Docker release repository
releaseRepoName: string
# Mandatory
# Name of Docker group
groupName: string
# Optional
helmConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Mandatory
# Helm staging repository name
helmTargetStaging: string
# Mandatory
# Helm release repository name
helmTargetRelease: string
# Optional
helmAppConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Mandatory
# Helm staging repository name for application charts
helmStagingRepoName: string
# Mandatory
# Helm release repository name for application charts
helmReleaseRepoName: string
# Mandatory
# Helm group repository name for application charts
helmGroupRepoName: string
# Mandatory
# Helm dev repository name for application charts
helmDevRepoName: string
# Optional
goConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Mandatory
# Go snapshot repository name
goTargetSnapshot: string
# Mandatory
# Go release repository name
goTargetRelease: string
# Mandatory
# Go proxy repository URL
goProxyRepository: string
# Optional
npmConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Mandatory
# npm snapshot repository name
npmTargetSnapshot: string
# Mandatory
# npm release repository name
npmTargetRelease: string
# Optional
rawConfig:
# Mandatory
# Pointer to authentication config described in `authConfig` section
authConfig: string
# Mandatory
# Domain name of the registry
repositoryDomainName: string
# Mandatory
# Raw snapshot repository name
rawTargetSnapshot: string
# Mandatory
# Raw release repository name
rawTargetRelease: string
# Mandatory
# Raw staging repository name
rawTargetStaging: string
# Mandatory
# Raw proxy repository name
rawTargetProxy: stringAuthentication Configuration Dependencies:
The authConfig section has complex dependencies between attributes. The following table shows which fields are required based on provider and authMethod values:
| Field | Condition | Required |
|---|---|---|
provider |
Always | REQUIRED |
authMethod |
Always | REQUIRED |
credentialsId |
authMethod != "anonymous" |
REQUIRED |
authType |
provider IN ["aws", "azure", "gcp"] |
OPTIONAL |
awsRegion |
provider == "aws" |
OPTIONAL |
awsDomain |
provider == "aws" (required for CodeArtifact) |
REQUIRED |
awsRoleARN |
provider == "aws" AND authMethod == "assume_role" |
REQUIRED |
awsRoleSessionPrefix |
provider == "aws" AND authMethod == "assume_role" |
OPTIONAL |
gcpOIDC |
provider == "gcp" AND authMethod == "federation" |
REQUIRED |
gcpOIDC.URL |
Inside gcpOIDC |
REQUIRED |
gcpOIDC.customParams |
Inside gcpOIDC |
OPTIONAL |
gcpRegProject |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegPoolId |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegProviderId |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegSAEmail |
provider == "gcp" AND authMethod == "federation" |
OPTIONAL |
gcpRegion |
provider == "gcp" |
OPTIONAL |
azureTenantId |
provider == "azure" |
OPTIONAL |
azureACRResource |
provider == "azure" |
OPTIONAL |
azureACRName |
provider == "azure" (required for ACR) |
REQUIRED |
azureArtifactsResource |
provider == "azure" |
OPTIONAL |
Valid authMethod values per provider:
| Provider | Valid authMethod values |
|---|---|
nexus |
user_pass, anonymous |
artifactory |
user_pass, anonymous |
aws |
secret, assume_role, anonymous |
gcp |
federation, service_account, anonymous |
azure |
oauth2, anonymous |
Examples of different auth sections:
authConfig:
maven-aws-secret:
authType: longLived
provider: aws
authMethod: secret
credentialsId: aws-key-secret
awsRegion: aws-region
awsDomain: codeartifact-domain
maven-aws-assume-role:
authType: shortLived
provider: aws
authMethod: assume_role
credentialsId: aws-key-secret
awsRoleARN: arn:aws:iam::123456789012:role/YourRole
awsRegion: aws-region
awsDomain: codeartifact-domain
awsRoleSessionPrefix: devops-custom-session-prefix
maven-gcp-federation:
authType: shortLived
provider: gcp
authMethod: federation
credentialsId: oidc-token
gcpOIDC:
URL: https://external-oidc-server-url
customParams:
- key1: value1
- key2: value2
gcpRegProject: 123456789012
gcpRegPoolId: idp-pool-id
gcpRegProviderId: idp-provider
gcpRegSAEmail: test@test.iam.gserviceaccount.com
maven-gcp-sa:
authType: shortLived
provider: gcp
authMethod: service_account
credentialsId: sa-json
maven-azure-oauth2:
authType: shortLived
provider: azure
authMethod: oauth2
credentialsId: azure-ad
azureTenantId: tenant-id
azureACRResource: management
azureACRName: acr-name
azureArtifactsResource: 499b84ac-1321-427f-aa17-267ca6975798
helm-nexus:
authType: longLived
provider: nexus
authMethod: user_pass
credentialsId: cred-nexus
docker-anonymous:
provider: nexus
authMethod: anonymousExample:
version: "2.0"
name: registry
authConfig:
aws:
authType: shortLived
provider: aws
authMethod: assume_role
credentialsId: role-aws
awsRegion: eu-west-1
awsDomain: codeartifact.eu-west-1.amazonaws.com
awsRoleARN: arn:aws:iam::123456789012:role/YourRole
helm:
authType: longLived
provider: nexus
authMethod: user_pass
credentialsId: cred-nexus
public-repo:
provider: nexus
authMethod: anonymous
mavenConfig:
authConfig: aws
repositoryDomainName: https://codeartifact.eu-west-1.amazonaws.com/maven/app
targetSnapshot: snapshots
targetStaging: staging
targetRelease: releases
snapshotGroup: snapshot-group
releaseGroup: staging-group
dockerConfig:
authConfig: aws
snapshotUri: 123456789.dkr.ecr.eu-west-1.amazonaws.com:18080
stagingUri: 123456789.dkr.ecr.eu-west-1.amazonaws.com:18081
releaseUri: 123456789.dkr.ecr.eu-west-1.amazonaws.com:18082
groupUri: 123456789.dkr.ecr.eu-west-1.amazonaws.com:18083
snapshotRepoName: docker-snapshots
stagingRepoName: docker-staging
releaseRepoName: docker-releases
groupName: docker
helmConfig:
authConfig: helm
repositoryDomainName: https://nexus.mycompany.internal/repository/helm-charts
helmTargetStaging: helm-staging
helmTargetRelease: helm-releases
helmAppConfig:
authConfig: helm
repositoryDomainName: https://nexus.mycompany.internal/repository/helm-charts
helmDevRepoName: helm-dev
helmStagingRepoName: helm-staging
helmReleaseRepoName: helm-releases
helmGroupRepoName: helm-group
goConfig:
authConfig: public-repo
repositoryDomainName: https://nexus.mycompany.internal/repository/go
goTargetSnapshot: go-snapshots
goTargetRelease: go-releases
goProxyRepository: https://goproxy.internal/go/
npmConfig:
authConfig: public-repo
repositoryDomainName: https://mycompany.internal
npmTargetSnapshot: npm-snapshots
npmTargetRelease: npm-releases
rawConfig:
authConfig: public-repo
repositoryDomainName: https://proxy.raw.local/raw
rawTargetSnapshot: raw/snapshots
rawTargetRelease: raw/releases
rawTargetStaging: raw/staging
rawTargetProxy: https://proxy.raw.local/Registry Definition v2.0 JSON schema
This object describes application artifact parameters - artifact ID, group ID and pointer to Registry Definition
It is used by external systems to convert the application:version format of an artifact template into the registry and Maven artifact parameters required to download it.
A separate definition file is used for each individual application. Each Environment uses its own set of Application Definitions.
The filename must match the value of the name attribute.
Location: /environments/<cluster-name>/<environment-name>/AppDefs/<application-name>.yml
# Optional
metadata:
# Optional
# Describes the strategy for generating the Helm release name.
# Deployment automation relies on this attribute to form a unique Helm release name.
# Available options:
# `perApplication` - Unique per application
# `perVersion` - Unique per application version
# `perDeployment` - Unique per deployment of this application
helmReleaseNameStrategy: enum[ perApplication, perVersion, perDeployment ]
# Mandatory
# Name of the artifact application. This corresponds to the `application` part in the `application:version` notation.
name: string
# Mandatory
# Reference to Registry Definition
registryName: string
# Mandatory
# Application artifact ID
artifactId: string
# Mandatory
# Application group ID
groupId: stringExample:
name: qip
registryName: sandbox
artifactId: qip
groupId: org.qubershipApplication Definition JSON schema
TBD