Last generated December 4, 2024

App

App represents a managed app which a user intended to install. It is reconciled by app-operator.

Full name:
apps.application.giantswarm.io
Group:
application.giantswarm.io
Singular name:
app
Plural name:
apps
Scope:
Namespaced
Versions:
v1alpha1

Version v1alpha1

Example CR

apiVersion: application.giantswarm.io/v1alpha1
kind: App
metadata:
  creationTimestamp: null
  name: prometheus
  namespace: default
spec:
  catalog: my-playground-catalog
  catalogNamespace: giantswarm
  config:
    configMap:
      name: f2def-cluster-values
      namespace: f2def
    secret:
      name: f2def-cluster-values
      namespace: f2def
  install:
    skipCRDs: true
    timeout: 6m0s
  kubeConfig:
    context:
      name: f2def
    inCluster: false
    secret:
      name: f2def-kubeconfig
      namespace: f2def
  name: prometheus
  namespace: monitoring
  namespaceConfig:
    annotations:
      linkerd.io/inject: enabled
  rollback:
    timeout: 7m0s
  uninstall:
    timeout: 8m0s
  upgrade:
    timeout: 9m0s
  userConfig:
    configMap:
      name: prometheus-user-values
      namespace: f2def
    secret:
      name: prometheus-user-values
      namespace: f2def
  version: 1.0.1

Properties

.apiVersion

string

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

.kind

string

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

.metadata

object

.spec

object Required

.spec.catalog

string Required

Catalog is the name of the app catalog this app belongs to. e.g. giantswarm

.spec.catalogNamespace

string

CatalogNamespace is the namespace of the Catalog CR this app belongs to. e.g. giantswarm

.spec.config

object

Config is the config to be applied when the app is deployed.

.spec.config.configMap

object

ConfigMap references a config map containing values that should be applied to the app.

.spec.config.configMap.name

string Required

Name is the name of the config map containing app values to apply, e.g. prometheus-values.

.spec.config.configMap.namespace

string Required

Namespace is the namespace of the values config map, e.g. monitoring.

.spec.config.secret

object

Secret references a secret containing secret values that should be applied to the app.

.spec.config.secret.name

string Required

Name is the name of the secret containing app values to apply, e.g. prometheus-secret.

.spec.config.secret.namespace

string Required

Namespace is the namespace of the secret, e.g. kube-system.

.spec.extraConfigs

array

ExtraConfigs is a list of configurations to merge together based on the priority and order in the list. See: https://github.com/giantswarm/rfc/tree/main/multi-layer-app-config#enhancing-app-cr

.spec.extraConfigs[*]

object

.spec.extraConfigs[*].kind

string

Kind of configuration to look up that should be applied to the app when deployed.

.spec.extraConfigs[*].name

string Required

Name of the resource of the given kind to look up.

.spec.extraConfigs[*].namespace

string Required

Namespace where the resource with the given name and kind to look up is located.

.spec.extraConfigs[*].priority

integer

Priority is used to indicate at which stage the extra configuration should be merged. See: https://github.com/giantswarm/rfc/tree/main/multi-layer-app-config#enhancing-app-cr

.spec.install

object

Install is the config used when installing the app.

.spec.install.skipCRDs

boolean

SkipCRDs when true decides that CRDs which are supplied with the chart are not installed. Default: false.

.spec.install.timeout

string

Timeout for the Helm install. When not set the default timeout of 5 minutes is being enforced.

.spec.kubeConfig

object Required

KubeConfig is the kubeconfig to connect to the cluster when deploying the app.

.spec.kubeConfig.context

object

Deprecated: this field is no longer used.

.spec.kubeConfig.context.name

string Required

Name is the name of the kubeconfig context e.g. giantswarm-12345.

.spec.kubeConfig.inCluster

boolean Required

InCluster is a flag for whether to use InCluster credentials. When true the context name and secret should not be set.

.spec.kubeConfig.secret

object

Secret references a secret containing the kubconfig.

.spec.kubeConfig.secret.name

string Required

Name is the name of the secret containing the kubeconfig, e.g. app-operator-kubeconfig.

.spec.kubeConfig.secret.namespace

string Required

Namespace is the namespace of the secret containing the kubeconfig, e.g. giantswarm.

.spec.name

string Required

Name is the name of the app to be deployed. e.g. kubernetes-prometheus

.spec.namespace

string Required

Namespace is the target namespace where the app should be deployed e.g. monitoring, it cannot be changed.

.spec.namespaceConfig

object

NamespaceConfig is the namespace config to be applied to the target namespace when the app is deployed.

.spec.namespaceConfig.annotations

object

Annotations is a string map of annotations to apply to the target namespace.

.spec.namespaceConfig.labels

object

Labels is a string map of labels to apply to the target namespace.

.spec.rollback

object

Rollback is the config used when rolling back the app.

.spec.rollback.timeout

string

Timeout for the Helm rollback. When not set the default timeout of 5 minutes is being enforced.

.spec.uninstall

object

Uninstall is the config used when uninstalling the app.

.spec.uninstall.timeout

string

Timeout for the Helm uninstall. When not set the default timeout of 5 minutes is being enforced.

.spec.upgrade

object

Upgrade is the config used when upgrading the app.

.spec.upgrade.timeout

string

Timeout for the Helm upgrade. When not set the default timeout of 5 minutes is being enforced.

.spec.userConfig

object

UserConfig is the user config to be applied when the app is deployed.

.spec.userConfig.configMap

object

ConfigMap references a config map containing user values that should be applied to the app.

.spec.userConfig.configMap.name

string Required

Name is the name of the config map containing user values to apply, e.g. prometheus-user-values.

.spec.userConfig.configMap.namespace

string Required

Namespace is the namespace of the user values config map on the management cluster, e.g. 123ab.

.spec.userConfig.secret

object

Secret references a secret containing user secret values that should be applied to the app.

.spec.userConfig.secret.name

string Required

Name is the name of the secret containing user values to apply, e.g. prometheus-user-secret.

.spec.userConfig.secret.namespace

string Required

Namespace is the namespace of the secret, e.g. kube-system.

.spec.version

string Required

Version is the version of the app that should be deployed. e.g. 1.0.0

.status

object

Status Spec part of the App resource. Initially, it would be left as empty until the operator successfully reconciles the helm release.

.status.appVersion

string Required

AppVersion is the value of the AppVersion field in the Chart.yaml of the deployed app. This is an optional field with the version of the component being deployed. e.g. 0.21.0. https://helm.sh/docs/topics/charts/#the-chartyaml-file

.status.release

object Required

Release is the status of the Helm release for the deployed app.

.status.release.lastDeployed

string

LastDeployed is the time when the app was last deployed.

.status.release.reason

string

Reason is the description of the last status of helm release when the app is not installed successfully, e.g. deploy resource already exists.

.status.release.status

string Required

Status is the status of the deployed app, e.g. DEPLOYED.

.status.version

string Required

Version is the value of the Version field in the Chart.yaml of the deployed app. e.g. 1.0.0.


This documentation page shows information based on apiextensions-application v0.6.2.

This part of our documentation refers to our vintage product. The content may be not valid anymore for our current product. Please check our new documentation hub for the latest state of our docs.