Skip to main content

app.appvia.io/v2beta1

Package v2beta1 contains API Schema definitions for the App API group

Exported Resource Types

AppComponent

Component represents an application you are planning to use Wayfinder to serve environments for.

FieldDescription

apiVersion
string

app.appvia.io/v2beta1

kind
string

AppComponent
metadata
Kubernetes meta/v1.ObjectMeta

Refer to the Kubernetes API documentation for the fields of the metadata field.

spec
AppComponentSpec
name

string

Name is the unique name for this component within the application.

application

string

Application is the name of the application the component is a part of

key

string

Key is a unique (within the app) DNS-compatible name for this component. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

type
AppComponentType

Type is the component type

container
AppComponentContainer

Container defines the settings for a container component, required if Type is Container

cloudResource
AppComponentCloudResource

CloudResource defines the settings for a cloud resource component, required if Type is CloudResource

labels

map[string]string

Labels are the labels to apply to all generated manifests

dependsOn

[]string

DependsOn is a list of other components that this component depends on - e.g. if this is a container component and needs access to the outputs of a cloud resource, place the name of the cloud resource component here.

status
AppComponentStatus
CommonStatus
CommonStatus

(Members of CommonStatus are embedded into this type.)

AppEnv

AppEnv represents a deployable environment for an application - i.e. a namespace for the application’s usage.

FieldDescription

apiVersion
string

app.appvia.io/v2beta1

kind
string

AppEnv
metadata
Kubernetes meta/v1.ObjectMeta

Refer to the Kubernetes API documentation for the fields of the metadata field.

spec
AppEnvSpec
cloud

string

Cloud defines which cloud provider this application is being developed for.

application

string

Application is the name of the application that this environment belongs to.

name

string

Name is the unique (within the application) human-readable name for this environment.

key

string

Key is a unique (within the appliction), short DNS-compatible name for this environment. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

clusterRef
Ownership

ClusterRef defines the cluster on which this application environment should be hosted. Either ClusterPlan or ClusterRef must be specified. If unspecified, the reference to the created cluster will be set by Wayfinder.

cloudAccessConfigRef
CloudAccessConfigRef

CloudAccessConfigRef is a reference to the cloud access configuration to use when building the cluster Deprecated: Only new AppEnvs with ClusterRef are now supported.

plan

string

Plan is the name of the plan to use to build a new cluster for this environment. Deprecated: Use ClusterRef instead.

region

string

Region is the cloud region. Deprecated: The region was only used for cluster provisioning, which is also deprecated.

namespace

string

Namespace is the requested name for the environment’s namespace on the specified cluster. If unpopulated, Wayfinder will auto-populate this with a sensible name on entry.

stage

string

Stage is the infrastructure stage to which this environment belongs

order

int

Order gives a numeric ordering of this environment, used to sort environments in a logical sequence. If two environments for an app have the same order, their display order is undefined and may change.

vars
AppEnvVars

Vars is a set of variables specific to this app environment. These variables can be used in container component environment variables (see AppComponent spec.container.containers[].env) and cloud resource component input variables (see AppComponent spec.cloudResource.envVars)

status
AppEnvStatus
CommonStatus
CommonStatus

(Members of CommonStatus are embedded into this type.)

hostEnv
AppEnvHostEnv

HostEnv provides details about where this app env is hosted

dnsZone

string

DNSZone is the DNS zone which should be used for this environment.

dnsZoneDedicated

bool

DNSZoneDedicated will be true if the DNS zone provided is dedicated to this specific appenv.

certIssuers

[]string

CertIssuers are the certificate issuers which can be used in this app env

ingressClasses
[]IngressClass

IngressClasses are the ingress classes which can be used in the app env

deployment
AppEnvDeploymentStatus

Deployment shows the deployed status of the app to this environment. The deployment status will be updated approximately once per minute, to get up to date status, call the deploystatus subresource API of the appenv.

deploymentLastChecked
Kubernetes meta/v1.Time

DeploymentLastChecked identifies when the deployment status of this app was last checked.

Application

Application represents an application you are planning to use Wayfinder to serve environments for.

FieldDescription

apiVersion
string

app.appvia.io/v2beta1

kind
string

Application
metadata
Kubernetes meta/v1.ObjectMeta

Refer to the Kubernetes API documentation for the fields of the metadata field.

spec
ApplicationSpec
name

string

Name is the human-readable name for this application.

key

string

Key is a system-wide unique DNS-compatible name for this application. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

description

string

Description is an optional longer human-readable description of this application to help users understand a bit about it.

cloud

string

Cloud defines which cloud provider this application is being developed for.

components
[]ApplicationComponent

DEPRECATED: Components are the definition of the components that make up this application. These are optional, but if specified, Wayfinder can generate example manifests for your application with the components wired together.

status
ApplicationStatus
CommonStatus
CommonStatus

(Members of CommonStatus are embedded into this type.)

Internal Resource Types

AppComponentCloudResource

(Appears on: AppComponentSpec)

AppComponentCloudResource defines the specification of a dependency component.

FieldDescription
plan

string

Plan identifies the cloud resource plan to use for this cloud resource

planVersion

string

PlanVersion is the version of the cloud resource plan to use for this cloud resource

variables
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1.JSON

Variables is a set of variables to provide to the associated Terraform module when applying. This will be validated against the policy on the specified plan, and override any values provided in that plan.

variablesFrom
[]AppComponentCloudResourceVar

VariablesFrom allows variables to be overwritten from other sources, such as AppEnv vars.

AppComponentCloudResourceVar

(Appears on: AppComponentCloudResource)

FieldDescription
name

string

Name is the name of the variable in the cloud resource variables to overwrite.

fromAppEnv
VariableFromAppEnv

FromAppEnv gets the value from a named variable on the appenv being deployed to

AppComponentContainer

(Appears on: AppComponentSpec)

AppComponentContainer defines the containers a values to be applied to them

FieldDescription
deploymentAnnotations

map[string]string

DeploymentAnnotations are the annotations to apply to the deployment manifest specifically

expose
AppComponentContainerExpose

Expose makes this component available outside the cluster by creating an ingress for it

tls

bool

TLS ensures that the component is exposed with an HTTPS TLS certificate (only relevant if expose is true)

whitelist

[]string

Whitelist, if set, will restrict access to the specified IP ranges, specified in CIDR notation (only relevant if expose is true)

replicas

int

Replicas defines the number of pods to be created, only used if Type is Container

securityContext
ComponentSecurityContext

SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty. See type description for default values of each field.

imagePullSecrets
[]Kubernetes core/v1.LocalObjectReference

ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling down images

containers
[]Container

Containers defines the settings for a container component, required if Type is Container

AppComponentContainerExpose

(Appears on: AppComponentContainer)

AppComponentContainerExpose defines which container is accessible externally

FieldDescription
container

string

Container is the name of the container to expose

port

int32

Port is the port of the container to expose

AppComponentSpec

(Appears on: AppComponent)

AppComponentSpec defines the specification of the app

FieldDescription
name

string

Name is the unique name for this component within the application.

application

string

Application is the name of the application the component is a part of

key

string

Key is a unique (within the app) DNS-compatible name for this component. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

type
AppComponentType

Type is the component type

container
AppComponentContainer

Container defines the settings for a container component, required if Type is Container

cloudResource
AppComponentCloudResource

CloudResource defines the settings for a cloud resource component, required if Type is CloudResource

labels

map[string]string

Labels are the labels to apply to all generated manifests

dependsOn

[]string

DependsOn is a list of other components that this component depends on - e.g. if this is a container component and needs access to the outputs of a cloud resource, place the name of the cloud resource component here.

AppComponentStatus

(Appears on: AppComponent)

AppComponentStatus defines the status of an application

FieldDescription
CommonStatus
CommonStatus

(Members of CommonStatus are embedded into this type.)

AppComponentType

(string alias) (Appears on: AppComponentSpec, AppEnvDeployedComponentStatus)

AppComponentType defines the type of a component

ValueDescription
"CloudResource"

AppComponentTypeCloudResource defines a component which provides a cloud resource to your other components, such as a database, key-value store or messaging system. These will be serviced by cloud resource plans.

"Container"

AppComponentTypeContainer defines a component served by a single container, typically this would be for your own application components.

"OwnManifests"

AppComponentTypeOwnManifests defines a component served by a set of Kubernetes manifests, Helm charts, or other native Kubernetes tooling provided by the user. Wayfinder will not provide deployment manifests for this component.

AppEnvCloudResourceStatus

(Appears on: AppEnvDeployedComponentStatus)

FieldDescription
plan

string

Plan identifies the cloud resource plan used for this cloud resource

ready

bool

Ready indicates whether the cloud resource represented by this component is in sync with the definition last deployed - i.e. the actual cloud resource is present and correct.

moduleVersion

string

ModuleVersion identifies which Terraform version of the module was used to build this cloud resource.

AppEnvDeployedComponentStatus

(Appears on: AppEnvDeploymentStatus)

AppEnvDeployedComponentStatus defines the status of a specific app component in the environment

FieldDescription
component

string

Component identifies which component this status is about.

componentType
AppComponentType

ComponentType defines what type of component this is.

exposed

bool

Exposed will be true if this component is accessible outside the cluster, i.e. has an ingress.

tls

bool

TLS will be true if this component has TLS enabled (only relevant if exposed is true)

deployed

bool

Deployed will be true if this component is deployed in this environment.

pods
[]AppEnvPodStatus

Pods gives a detailed status for each pod for this component in the environment.

podsReady

int

PodsReady shows how many pods are in a ready state for this component in the environment.

podsTotal

int

PodsTotal shows how many pods are present for this component in the environment.

endpoint

string

Endpoint identifies the DNS endpoint for this component, if exposed.

certReady

bool

CertReady indicates if the HTTPS certificate is ready, if exposed and TLS is enabled.

cloudResource
AppEnvCloudResourceStatus

CloudResource identifies the status of the cloud resource associated with this component, when the component type is CloudResource.

AppEnvDeploymentStatus

(Appears on: AppEnvStatus)

FieldDescription
deployed

bool

Deployed will be true if one or more components are deployed to this environment

components
[]AppEnvDeployedComponentStatus

Components describes the status of the deployed components

AppEnvHostEnv

(Appears on: AppEnvStatus)

FieldDescription
cloudAccessConfigRef
CloudAccessConfigRef

CloudAccessConfigRef is a reference to the cloud access config that the host cluster for this environment is using.

accountIdentifier

string

AccountIdentifier is the identifier of the cloud account/project/subscription in which the cluster hosting this environment is located.

namespaceClaimRef
NamespaceClaimRef

NamespaceClaimRef is a reference to the namespace claim for this environment

clusterRef
ClusterRef

ClusterRef is a reference to the cluster hosting this environment

clusterDomain

string

ClusterDomain is the full domain delegated to the host cluster of this environment. This is useful to understand how wildcard certificates and DNS entries can be generated. Application components should use DNSZone, not ClusterDomain, as their suffix.

AppEnvPodStatus

(Appears on: AppEnvDeployedComponentStatus)

AppEnvPodStatus is a cut-down version of a full pod status

FieldDescription
phase
Kubernetes core/v1.PodPhase

The phase of a Pod is a simple, high-level summary of where the Pod is in its lifecycle. The conditions array, the reason and message fields, and the individual container status arrays contain more detail about the pod’s status. There are five possible phase values: Pending: The pod has been accepted by the Kubernetes system, but one or more of the container images has not been created. This includes time before being scheduled as well as time spent downloading images over the network, which could take a while. Running: The pod has been bound to a node, and all of the containers have been created. At least one container is still running, or is in the process of starting or restarting. Succeeded: All containers in the pod have terminated in success, and will not be restarted. Failed: All containers in the pod have terminated, and at least one container has terminated in failure. The container either exited with non-zero status or was terminated by the system. Unknown: For some reason the state of the pod could not be obtained, typically due to an error in communicating with the host of the pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase

conditions
[]Kubernetes core/v1.PodCondition

Current service state of pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions

message

string

A human readable message indicating details about why the pod is in this condition.

reason

string

A brief CamelCase message indicating details about why the pod is in this state. e.g. ‘Evicted’

initContainerStatuses
[]Kubernetes core/v1.ContainerStatus

The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

containerStatuses
[]Kubernetes core/v1.ContainerStatus

The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status

AppEnvSpec

(Appears on: AppEnv)

AppEnvSpec defines an environment for an application

FieldDescription
cloud

string

Cloud defines which cloud provider this application is being developed for.

application

string

Application is the name of the application that this environment belongs to.

name

string

Name is the unique (within the application) human-readable name for this environment.

key

string

Key is a unique (within the appliction), short DNS-compatible name for this environment. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

clusterRef
Ownership

ClusterRef defines the cluster on which this application environment should be hosted. Either ClusterPlan or ClusterRef must be specified. If unspecified, the reference to the created cluster will be set by Wayfinder.

cloudAccessConfigRef
CloudAccessConfigRef

CloudAccessConfigRef is a reference to the cloud access configuration to use when building the cluster Deprecated: Only new AppEnvs with ClusterRef are now supported.

plan

string

Plan is the name of the plan to use to build a new cluster for this environment. Deprecated: Use ClusterRef instead.

region

string

Region is the cloud region. Deprecated: The region was only used for cluster provisioning, which is also deprecated.

namespace

string

Namespace is the requested name for the environment’s namespace on the specified cluster. If unpopulated, Wayfinder will auto-populate this with a sensible name on entry.

stage

string

Stage is the infrastructure stage to which this environment belongs

order

int

Order gives a numeric ordering of this environment, used to sort environments in a logical sequence. If two environments for an app have the same order, their display order is undefined and may change.

vars
AppEnvVars

Vars is a set of variables specific to this app environment. These variables can be used in container component environment variables (see AppComponent spec.container.containers[].env) and cloud resource component input variables (see AppComponent spec.cloudResource.envVars)

AppEnvStatus

(Appears on: AppEnv)

AppEnvStatus defines the status of an application environment

FieldDescription
CommonStatus
CommonStatus

(Members of CommonStatus are embedded into this type.)

hostEnv
AppEnvHostEnv

HostEnv provides details about where this app env is hosted

dnsZone

string

DNSZone is the DNS zone which should be used for this environment.

dnsZoneDedicated

bool

DNSZoneDedicated will be true if the DNS zone provided is dedicated to this specific appenv.

certIssuers

[]string

CertIssuers are the certificate issuers which can be used in this app env

ingressClasses
[]IngressClass

IngressClasses are the ingress classes which can be used in the app env

deployment
AppEnvDeploymentStatus

Deployment shows the deployed status of the app to this environment. The deployment status will be updated approximately once per minute, to get up to date status, call the deploystatus subresource API of the appenv.

deploymentLastChecked
Kubernetes meta/v1.Time

DeploymentLastChecked identifies when the deployment status of this app was last checked.

AppEnvVar

FieldDescription
name

string

Name is the name of this variable, used to reference it in app component definitions.

value

string

Value is the value of the variable

AppEnvVars

([]github.com/appvia/wayfinder/tmpcrdref/pkg/apis/app/v2beta1.AppEnvVar alias) (Appears on: AppEnvSpec)

ApplicationComponent

(Appears on: ApplicationSpec)

ApplicationComponent defines a component of an application

FieldDescription
name

string

Name is the unique name for this component within the application.

key

string

Key is a unique (within the app) DNS-compatible name for this component. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

type
ApplicationComponentType

Type is the component type

container
ApplicationComponentContainer

Container defines the settings for a container component, required if Type is Container

cloudResource
ApplicationComponentCloudResource

CloudResource defines the settings for a cloud resource component, required if Type is CloudResource

dependsOn

[]string

DependsOn is a list of other components that this component depends on - e.g. if this is a container component and needs access to the outputs of a cloud resource, place the name of the cloud resource component here.

ApplicationComponentCloudResource

(Appears on: ApplicationComponent)

ApplicationComponentCloudResource defines the specification of a dependency component.

FieldDescription
plan

string

Plan identifies the cloud resource plan to use for this cloud resource

planVersion

string

PlanVersion is the version of the cloud resource plan to use for this cloud resource

variables
k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1.JSON

Variables is a set of variables to provide to the associated Terraform module when applying. This will be validated against the policy on the specified plan, and override any values provided in that plan.

ApplicationComponentContainer

(Appears on: ApplicationComponent)

ApplicationComponentContainer defines the specification of a container component

FieldDescription
image

string

Image is the fully-specified container image to use for this component

port

int

Port is the primary port this component exposes to other components or for external traffic

expose

bool

Expose makes this component available outside the cluster by creating an ingress for it

tls

bool

TLS ensures that the component is exposed with an HTTPS TLS certificate (only relevant if expose is true)

whitelist

[]string

Whitelist, if set, will restrict access to the specified IP ranges, specified in CIDR notation (only relevant if expose is true)

env
[]ContainerEnvVariable

Env is a set of environment variables to expose in this container

ApplicationComponentType

(string alias) (Appears on: ApplicationComponent)

ApplicationComponentType defines the type of a component

ValueDescription
"CloudResource"

ApplicationComponentTypeCloudResource defines a component which provides a cloud resource to your other components, such as a database, key-value store or messaging system. These will be serviced by cloud resource plans.

"Container"

ApplicationComponentTypeContainer defines a component served by a single container, typically this would be for your own application components.

"OwnManifests"

ApplicationComponentTypeOwnManifests defines a component served by a set of Kubernetes manifests, Helm charts, or other native Kubernetes tooling provided by the user. Wayfinder will not provide deployment manifests for this component.

ApplicationDeploymentRequest

ApplicationDeploymentRequest describes a desire to generate some manifests or do a deployment for the specified application environment. This should be posted to the ‘deploy’, ‘eject’ or ‘prepare’ subresource of the application you wish to operate on.

FieldDescription
appEnv

string

AppEnv is the name of the application environment

components

[]string

Components is the names of the components that should be returns

imageTag

string

ImageTag to use for all components, unless overridden by an entry in Images or ImageTags

images

map[string]string

Images is an optional set of image overrides for the components being deployed. If no image is specified here, the default image from the component definition will be used.

componentImageTags

map[string]string

ImageTags is an optional set of image tag overrides for the components being deployed. If no image tag is specified here (and no entry is provided in Images), the default image from the component definition will be used.

componentContainerImages

map[string]map[string]string

ComponentContainerImages is an optional list of images to be mapped to the named container

componentContainerTags

map[string]map[string]string

ComponentContainerTags is an optional list of tags to be mapped to the named container

force

bool

Force runs the patch with force to override conflicts

remove

bool

Remove causes the deployment to remove all resources from the manifest instead of deploying them.

ApplicationSpec

(Appears on: Application)

ApplicationSpec defines the specification of the app

FieldDescription
name

string

Name is the human-readable name for this application.

key

string

Key is a system-wide unique DNS-compatible name for this application. If unspecified on creation a suitable value will be derived from the name. If specified, it will be validated for uniqueness on entry.

description

string

Description is an optional longer human-readable description of this application to help users understand a bit about it.

cloud

string

Cloud defines which cloud provider this application is being developed for.

components
[]ApplicationComponent

DEPRECATED: Components are the definition of the components that make up this application. These are optional, but if specified, Wayfinder can generate example manifests for your application with the components wired together.

ApplicationStatus

(Appears on: Application)

ApplicationStatus defines the status of an application

FieldDescription
CommonStatus
CommonStatus

(Members of CommonStatus are embedded into this type.)

ComponentSecurityContext

(Appears on: AppComponentContainer)

FieldDescription
fsGroup

int64

FSGroup is a special supplemental group that applies to all containers in a pod. If unset, Wayfinder will provide a default non-root FS group.

Container

(Appears on: AppComponentContainer)

ComponentContainer defines the specification of a container component

FieldDescription
name

string

Name is a human readable name for the container

image

string

Image is the fully-specified container image to use for this component

ports
[]ContainerPort

Ports are the ports this component exposes to other components or for external traffic

env
[]ContainerEnvVariable

Env is a set of environment variables to expose in this container

command

[]string

Command defines a command

args

[]string

Args defines the args of a command

securityContext
ContainerSecurityContext

SecurityContext defines the security context of the container

ContainerEnvVariable

(Appears on: ApplicationComponentContainer, Container)

ContainerEnvVariable defines environment variables for containers

FieldDescription
name

string

Name is the name of the environment variable to set in the container

value

string

Value is a hard-coded value that this environment variable should always have

fromCloudResourceOutput
VariableFromCloudResource

FromCloudResourceOutput gets the value from a dependent cloud resource component’s outputs

fromSecret
VariableFromSecret

FromSecret gets the value from a secret

fromAppEnv
VariableFromAppEnv

FromAppEnv gets the value from a named variable on the appenv being deployed to

ContainerPort

(Appears on: Container)

ContainerPort extends the v1.ContainerPort to indicate whether the container port should be exposed on the Service

FieldDescription
ContainerPort
Kubernetes core/v1.ContainerPort

(Members of ContainerPort are embedded into this type.)

expose

bool

Expose defines whether the port is exposed on the service

ContainerSecurityContext

(Appears on: Container)

FieldDescription
capabilities
Kubernetes core/v1.Capabilities

Capabilities describes the Linux capabilities that should be added or removed from the container. If this field is omitted, Wayfinder will explicitly set the capabilities to drop all.

runAsNonRoot

bool

RunAsNonRoot indicates that the container must run as a non-root user. If this is unspecified Wayfinder defaults it to true. If unset or set to true Kubernetes will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If set explicitly to false, no such validation will be performed, allowing the container to run as root. Setting this to false will fail on deployment if ‘Restricted’ pod security standard is enforced.

runAsUser

int64

RunAsUser is the UID to run the entrypoint of the container process. If unset, Wayfinder will provide a default non-root UID. If you need to run as root, you must set RunAsNonRoot to false and RunAsUser to 0. Setting this to 0 will fail on deployment if ‘Restricted’ pod security standard is enforced.

runAsGroup

int64

The GID to run the entrypoint of the container process. If unset, Wayfinder will provide a default non-root GID. If you need to run as root, you must set RunAsNonRoot to false and RunAsGroup to 0. Setting this to 0 will fail on deployment if ‘Restricted’ pod security standard is enforced.

IngressClass

(Appears on: AppEnvStatus)

FieldDescription
class

string

Class is the name of the ingress class

namespace

string

Namespace is the namespace the ingress controller is in

VariableFromAppEnv

(Appears on: AppComponentCloudResourceVar, ContainerEnvVariable)

FieldDescription
name

string

Name is the name of variable on the appenv

default

string

Default is a default value to use if the appenv does not define this variable. If this is unspecified, deploying to an appenv will cause a validation error if the appenv does not define a value for this variable.

VariableFromCloudResource

(Appears on: ContainerEnvVariable)

FieldDescription
componentName

string

ComponentName is the name of another component in this application representing the value

output

string

Output is the name of the environment variable in the cloud resource outputs that you want as the value of the environment variable

VariableFromSecret

(Appears on: ContainerEnvVariable)

FieldDescription
name

string

Name is the name of the secret

key

string

Key is the key in the secret