{ "$schema" : "https://json-schema.org/draft/2020-12/schema", "$defs" : { "ExampleAppSchema-nullable" : { "type" : [ "object", "null" ], "properties" : { "baseDomain" : { "type" : [ "string", "null" ], "description" : "The domain under which a subdomain these applications will be made available" } }, "additionalProperties" : false }, "HelmConfigWithValues-nullable" : { "type" : [ "object", "null" ], "properties" : { "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" } }, "additionalProperties" : false }, "Map(String,Object)-nullable" : { "type" : [ "object", "null" ] }, "Map(String,String)" : { "type" : "object", "additionalProperties" : { "type" : "string" } }, "RepositorySchema-nullable" : { "type" : [ "object", "null" ], "properties" : { "url" : { "type" : [ "string", "null" ], "description" : "HTTP URL of the repo" } }, "additionalProperties" : false }, "RepositorySchemaWithRef-nullable" : { "type" : [ "object", "null" ], "properties" : { "ref" : { "type" : [ "string", "null" ], "description" : "Ref of the repo to use, e.g. a tag, commit or branch" }, "url" : { "type" : [ "string", "null" ], "description" : "HTTP URL of the repo" } }, "additionalProperties" : false } }, "type" : "object", "properties" : { "application" : { "type" : [ "object", "null" ], "properties" : { "baseUrl" : { "type" : [ "string", "null" ], "description" : "the external base url (TLD) for all tools, e.g. https://example.com or http://localhost:8080. The individual -url params for argocd, grafana, vault and mailhog take precedence." }, "destroy" : { "type" : [ "boolean", "null" ], "description" : "Unroll playground" }, "gitEmail" : { "type" : [ "string", "null" ], "description" : "Sets git author and committer email used for initial commits" }, "gitName" : { "type" : [ "string", "null" ], "description" : "Sets git author and committer name used for initial commits" }, "insecure" : { "type" : [ "boolean", "null" ], "description" : "Sets insecure-mode in cURL which skips cert validation" }, "mirrorRepos" : { "type" : [ "boolean", "null" ], "description" : "Changes the sources of deployed tools so they are not pulled from the internet, but are pulled from git and work in air-gapped environments." }, "namePrefix" : { "type" : [ "string", "null" ], "description" : "Set name-prefix for repos, jobs, namespaces" }, "namespaceIsolation" : { "type" : [ "boolean", "null" ], "description" : "Configure tools to explicitly work with the given namespaces only, and not cluster-wide. This way GOP can be installed without having cluster-admin permissions." }, "netpols" : { "type" : [ "boolean", "null" ], "description" : "Sets Network Policies" }, "openshift" : { "type" : [ "boolean", "null" ], "description" : "When set, openshift specific resources and configurations are applied" }, "password" : { "type" : [ "string", "null" ], "description" : "Set initial admin passwords" }, "podResources" : { "type" : [ "boolean", "null" ], "description" : "Write kubernetes resource requests and limits on each pod" }, "remote" : { "type" : [ "boolean", "null" ], "description" : "Expose services as LoadBalancers" }, "skipCrds" : { "type" : [ "boolean", "null" ], "description" : "Skip installation of CRDs. This requires prior installation of CRDs" }, "urlSeparatorHyphen" : { "type" : [ "boolean", "null" ], "description" : "Use hyphens instead of dots to separate application name from base-url" }, "username" : { "type" : [ "string", "null" ], "description" : "Set initial admin username" }, "yes" : { "type" : [ "boolean", "null" ], "description" : "Skip confirmation" } }, "additionalProperties" : false, "description" : "Application configuration parameter for GOP" }, "features" : { "type" : [ "object", "null" ], "properties" : { "argocd" : { "type" : [ "object", "null" ], "properties" : { "active" : { "type" : [ "boolean", "null" ], "description" : "Install ArgoCD" }, "emailFrom" : { "type" : [ "string", "null" ], "description" : "Notifications, define Argo CD sender email address" }, "emailToAdmin" : { "type" : [ "string", "null" ], "description" : "Notifications, define Argo CD admin recipient email address" }, "emailToUser" : { "type" : [ "string", "null" ], "description" : "Notifications, define Argo CD user / app-team recipient email address" }, "env" : { "description" : "Pass a list of env vars to Argo CD components. Currently only works with operator", "type" : [ "array", "null" ], "items" : { "$ref" : "#/$defs/Map(String,String)", "additionalProperties" : { "type" : "string" } } }, "operator" : { "type" : [ "boolean", "null" ], "description" : "Install ArgoCD via an already running ArgoCD Operator" }, "resourceInclusionsCluster" : { "type" : [ "string", "null" ], "description" : "Internal Kubernetes API Server URL https://IP:PORT (kubernetes.default.svc). Needed in argocd-operator resourceInclusions. Use this parameter if argocd.operator=true and NOT running inside a Pod (remote mode). Full URL needed, for example: https://100.125.0.1:443" }, "url" : { "type" : [ "string", "null" ], "description" : "The URL where argocd is accessible. It has to be the full URL with http:// or https://" } }, "additionalProperties" : false, "description" : "Config Parameter for the ArgoCD Operator" }, "certManager" : { "type" : [ "object", "null" ], "properties" : { "active" : { "type" : [ "boolean", "null" ], "description" : "Sets and enables Cert Manager" }, "helm" : { "type" : [ "object", "null" ], "properties" : { "acmeSolverImage" : { "type" : [ "string", "null" ], "description" : "Sets acmeSolver Image for Cert Manager" }, "cainjectorImage" : { "type" : [ "string", "null" ], "description" : "Sets cainjector Image for Cert Manager" }, "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "image" : { "type" : [ "string", "null" ], "description" : "Sets image for Cert Manager" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "startupAPICheckImage" : { "type" : [ "string", "null" ], "description" : "Sets startupAPICheck Image for Cert Manager" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" }, "webhookImage" : { "type" : [ "string", "null" ], "description" : "Sets webhook Image for Cert Manager" } }, "additionalProperties" : false, "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." } }, "additionalProperties" : false, "description" : "Config parameters for the Cert Manager" }, "exampleApps" : { "type" : [ "object", "null" ], "properties" : { "nginx" : { "$ref" : "#/$defs/ExampleAppSchema-nullable", "description" : "Config parameters for the NGINX example apps apps and exercises" }, "petclinic" : { "$ref" : "#/$defs/ExampleAppSchema-nullable", "description" : "Config parameters for the petclinic example apps apps and exercises" } }, "additionalProperties" : false, "description" : "Config parameters for the example apps and exercises" }, "ingressNginx" : { "type" : [ "object", "null" ], "properties" : { "active" : { "type" : [ "boolean", "null" ], "description" : "Sets and enables Nginx Ingress Controller" }, "helm" : { "type" : [ "object", "null" ], "properties" : { "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "image" : { "type" : [ "string", "null" ], "description" : "The image of the Helm chart to be installed" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" } }, "additionalProperties" : false, "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." } }, "additionalProperties" : false, "description" : "Config parameters for the NGINX Ingress Controller" }, "mail" : { "type" : [ "object", "null" ], "properties" : { "helm" : { "type" : [ "object", "null" ], "properties" : { "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "image" : { "type" : [ "string", "null" ], "description" : "The image of the Helm chart to be installed" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" } }, "additionalProperties" : false, "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." }, "mailhog" : { "type" : [ "boolean", "null" ], "description" : "Installs MailHog as Mail server." }, "mailhogUrl" : { "type" : [ "string", "null" ], "description" : "Sets url for MailHog" }, "smtpAddress" : { "type" : [ "string", "null" ], "description" : "Sets smtp port of external Mailserver" }, "smtpPassword" : { "type" : [ "string", "null" ], "description" : "Sets smtp password of external Mailserver" }, "smtpPort" : { "type" : [ "integer", "null" ], "description" : "Sets smtp port of external Mailserver" }, "smtpUser" : { "type" : [ "string", "null" ], "description" : "Sets smtp username for external Mailserver" } }, "additionalProperties" : false, "description" : "Config parameters for mail servers" }, "monitoring" : { "type" : [ "object", "null" ], "properties" : { "active" : { "type" : [ "boolean", "null" ], "description" : "Installs the Kube-Prometheus-Stack. This includes Prometheus, the Prometheus operator, Grafana and some extra resources" }, "grafanaEmailFrom" : { "type" : [ "string", "null" ], "description" : "Notifications, define grafana alerts sender email address" }, "grafanaEmailTo" : { "type" : [ "string", "null" ], "description" : "Notifications, define grafana alerts recipient email address" }, "grafanaUrl" : { "type" : [ "string", "null" ], "description" : "Sets url for grafana" }, "helm" : { "type" : [ "object", "null" ], "properties" : { "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "grafanaImage" : { "type" : [ "string", "null" ], "description" : "Sets image for grafana" }, "grafanaSidecarImage" : { "type" : [ "string", "null" ], "description" : "Sets image for grafana's sidecar" }, "prometheusConfigReloaderImage" : { "type" : [ "string", "null" ], "description" : "Sets image for prometheus-operator's config-reloader" }, "prometheusImage" : { "type" : [ "string", "null" ], "description" : "Sets image for prometheus" }, "prometheusOperatorImage" : { "type" : [ "string", "null" ], "description" : "Sets image for prometheus-operator" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" } }, "additionalProperties" : false, "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." } }, "additionalProperties" : false, "description" : "Config parameters for the Monitoring system (prometheus)" }, "secrets" : { "type" : [ "object", "null" ], "properties" : { "externalSecrets" : { "type" : [ "object", "null" ], "properties" : { "helm" : { "type" : [ "object", "null" ], "properties" : { "certControllerImage" : { "type" : [ "string", "null" ], "description" : "Sets image for external secrets operator's controller" }, "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "image" : { "type" : [ "string", "null" ], "description" : "Sets image for external secrets operator" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" }, "webhookImage" : { "type" : [ "string", "null" ], "description" : "Sets image for external secrets operator's webhook" } }, "additionalProperties" : false, "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." } }, "additionalProperties" : false, "description" : "Config parameters for the external secrets operator" }, "vault" : { "type" : [ "object", "null" ], "properties" : { "helm" : { "type" : [ "object", "null" ], "properties" : { "chart" : { "type" : [ "string", "null" ], "description" : "Name of the Helm chart" }, "image" : { "type" : [ "string", "null" ], "description" : "Sets image for vault" }, "repoURL" : { "type" : [ "string", "null" ], "description" : "Repository url from which the Helm chart should be obtained" }, "values" : { "$ref" : "#/$defs/Map(String,Object)-nullable", "description" : "Helm values of the chart, allows overriding defaults and setting values that are not exposed as explicit configuration" }, "version" : { "type" : [ "string", "null" ], "description" : "The version of the Helm chart to be installed" } }, "additionalProperties" : false, "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." }, "mode" : { "anyOf" : [ { "type" : "null" }, { "type" : "string", "enum" : [ "dev", "prod" ] } ], "description" : "Installs Hashicorp vault and the external secrets operator. Possible values: dev, prod." }, "url" : { "type" : [ "string", "null" ], "description" : "Sets url for vault ui" } }, "additionalProperties" : false, "description" : "Config parameters for the secrets-vault" } }, "additionalProperties" : false, "description" : "Config parameters for the secrets management" } }, "additionalProperties" : false, "description" : "Config parameters for features or tools" }, "images" : { "type" : [ "object", "null" ], "properties" : { "helm" : { "type" : [ "string", "null" ], "description" : "Sets image for helm" }, "helmKubeval" : { "type" : [ "string", "null" ], "description" : "Sets image for helmkubeval" }, "kubectl" : { "type" : [ "string", "null" ], "description" : "Sets image for kubectl" }, "kubeval" : { "type" : [ "string", "null" ], "description" : "Sets image for kubeval" }, "maven" : { "type" : [ "string", "null" ], "description" : "Sets image for maven" }, "nginx" : { "type" : [ "string", "null" ], "description" : "Sets image for nginx used in various applications" }, "petclinic" : { "type" : [ "string", "null" ], "description" : "Sets image for petclinic used in various applications" }, "yamllint" : { "type" : [ "string", "null" ], "description" : "Sets image for yamllint" } }, "additionalProperties" : false, "description" : "Config params for images that do not belong to specific features" }, "jenkins" : { "type" : [ "object", "null" ], "properties" : { "additionalEnvs" : { "anyOf" : [ { "type" : "null" }, { "$ref" : "#/$defs/Map(String,String)" } ], "description" : "Set additional environments to Jenkins", "additionalProperties" : { "type" : "string" } }, "helm" : { "$ref" : "#/$defs/HelmConfigWithValues-nullable", "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." }, "mavenCentralMirror" : { "type" : [ "string", "null" ], "description" : "URL for maven mirror, used by applications built in Jenkins" }, "metricsPassword" : { "type" : [ "string", "null" ], "description" : "Mandatory when jenkins-url is set and monitoring enabled" }, "metricsUsername" : { "type" : [ "string", "null" ], "description" : "Mandatory when jenkins-url is set and monitoring enabled" }, "password" : { "type" : [ "string", "null" ], "description" : "Mandatory when jenkins-url is set" }, "url" : { "type" : [ "string", "null" ], "description" : "The url of your external jenkins" }, "username" : { "type" : [ "string", "null" ], "description" : "Mandatory when jenkins-url is set" } }, "additionalProperties" : false, "description" : "Config parameters for Jenkins CI/CD Pipeline Server" }, "registry" : { "type" : [ "object", "null" ], "properties" : { "createImagePullSecrets" : { "type" : [ "boolean", "null" ], "description" : "Create image pull secrets for registry and proxy-registry for all GOP namespaces and helm charts. Uses proxy-username, read-only-username or registry-username (in this order). Use this if your cluster is not auto-provisioned with credentials for your private registries or if you configure individual helm images to be pulled from the proxy-registry that requires authentication." }, "helm" : { "$ref" : "#/$defs/HelmConfigWithValues-nullable", "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." }, "internalPort" : { "type" : [ "integer", "null" ], "description" : "Port of registry registry. Ignored when a registry*url params are set" }, "password" : { "type" : [ "string", "null" ], "description" : "Optional when registry-url is set" }, "path" : { "type" : [ "string", "null" ], "description" : "Optional when registry-url is set" }, "proxyPassword" : { "type" : [ "string", "null" ], "description" : "Use with registry-proxy-url, added to Jenkins as credentials and created as pull secrets, when create-image-pull-secrets is set." }, "proxyUrl" : { "type" : [ "string", "null" ], "description" : "The url of your proxy-registry. Used in pipelines to authorize pull base images. Use in conjunction with petclinic base image. Used in helm charts when create-image-pull-secrets is set. Use in conjunction with helm.*image fields." }, "proxyUsername" : { "type" : [ "string", "null" ], "description" : "Use with registry-proxy-url, added to Jenkins as credentials and created as pull secrets, when create-image-pull-secrets is set." }, "readOnlyPassword" : { "type" : [ "string", "null" ], "description" : "Optional alternative password for registry-url with read-only permissions that is used when create-image-pull-secrets is set." }, "readOnlyUsername" : { "type" : [ "string", "null" ], "description" : "Optional alternative username for registry-url with read-only permissions that is used when create-image-pull-secrets is set." }, "url" : { "type" : [ "string", "null" ], "description" : "The url of your external registry, used for pushing images" }, "username" : { "type" : [ "string", "null" ], "description" : "Optional when registry-url is set" } }, "additionalProperties" : false, "description" : "Config parameters for Registry" }, "repositories" : { "type" : [ "object", "null" ], "properties" : { "cesBuildLib" : { "$ref" : "#/$defs/RepositorySchema-nullable", "description" : "Repo to pull the ces-build-lib, used in examples and exercises as depedency of the gitops-build-lib" }, "gitopsBuildLib" : { "$ref" : "#/$defs/RepositorySchema-nullable", "description" : "Repo to pull the gitops-build-lib, used in examples and exercises" }, "springBootHelmChart" : { "$ref" : "#/$defs/RepositorySchemaWithRef-nullable", "description" : "Repo to pull the generic Spring Boot Helm chart, used in examples and exercises" }, "springPetclinic" : { "$ref" : "#/$defs/RepositorySchemaWithRef-nullable", "description" : "Repo to pull the Spring Petclinic, used in examples and exercises" } }, "additionalProperties" : false, "description" : "Config params for repositories used within GOP" }, "scmm" : { "type" : [ "object", "null" ], "properties" : { "helm" : { "$ref" : "#/$defs/HelmConfigWithValues-nullable", "description" : "Common Config parameters for the Helm package manager: Name of Chart (chart), URl of Helm-Repository (repoURL) and Chart Version (version). Note: These config is intended to obtain the chart from a different source (e.g. in air-gapped envs), not to use a different version of a helm chart. Using a different helm chart or version to the one used in the GOP version will likely cause errors." }, "password" : { "type" : [ "string", "null" ], "description" : "Mandatory when scmm-url is set" }, "provider" : { "type" : [ "string", "null" ], "description" : "Sets the scm Provider. Possible Options are \"scm-manager\" and \"gitlab\"" }, "rootPath" : { "type" : [ "string", "null" ], "description" : "Sets the root path for the Git Repositories. In SCM-Manager it is always \"repo\"" }, "url" : { "type" : [ "string", "null" ], "description" : "The host of your external scm-manager" }, "username" : { "type" : [ "string", "null" ], "description" : "Mandatory when scmm-url is set" } }, "additionalProperties" : false, "description" : "Config parameters for SCMManager (Git repository Server, https://scm-manager.org/)" } }, "additionalProperties" : false }