Fission CRD Reference

Fission Custom Resources Definition(CRD) Reference

API Reference

Packages

fission.io/v1

Package v1 contains API Schema definitions for the fission.io v1 API group

Resource Types

AllowedFunctionsPerContainer

Underlying type: string

AllowedFunctionsPerContainer defaults to ‘single’. Related to Fission Workflows

Appears in:

Archive

Archive contains or references a collection of sources or binary files.

Appears in:

FieldDescriptionDefaultValidation
type ArchiveTypeType defines how the package is specified: literal or URL.
Available value:
- literal
- url
literal integer arrayLiteral contents of the package. Can be used for
encoding packages below TODO (256 KB?) size.
url stringURL references a package.
checksum ChecksumChecksum ensures the integrity of packages
referenced by URL. Ignored for literals.

ArchiveType

Underlying type: string

ArchiveType is either literal or URL, indicating whether the package is specified in the Archive struct or externally.

Appears in:

BuildStatus

Underlying type: string

BuildStatus indicates the current build status of a package.

Appears in:

Builder

Builder is the setting for environment builder.

Appears in:

FieldDescriptionDefaultValidation
image stringImage for containing the language compilation environment.
command string(Optional) Default build command to run for this build environment.
container Container(Optional) Container allows the modification of the deployed builder
container using the Kubernetes Container spec. Fission overrides
the following fields:
- Name
- Image; set to the Builder.Image
- Command; set to the Builder.Command
- TerminationMessagePath
- ImagePullPolicy
- ReadinessProbe
podspec PodSpecPodSpec will store the spec of the pod that will be applied to the pod created for the builder

CanaryConfig

CanaryConfig is for canary deployment of two functions.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringCanaryConfig
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec CanaryConfigSpec
status CanaryConfigStatus

CanaryConfigSpec

CanaryConfigSpec defines the canary configuration spec

Appears in:

FieldDescriptionDefaultValidation
trigger stringHTTP trigger that this config references
newfunction stringNew version of the function
oldfunction stringOld stable version of the function
weightincrement integerWeight increment step for function
duration stringWeight increment interval, string representation of time.Duration, ex : 1m, 2h, 2d (default: “2m”)
failurethreshold integerThreshold in percentage beyond which the new version of the function is considered unstable
failureType FailureType

CanaryConfigStatus

CanaryConfigStatus represents canary config status

Appears in:

FieldDescriptionDefaultValidation
status string

Checksum

Checksum of package contents when the contents are stored outside the Package struct. Type is the checksum algorithm; “sha256” is the only currently supported one. Sum is hex encoded.

Appears in:

FieldDescriptionDefaultValidation
type ChecksumType
sum string

ChecksumType

Underlying type: string

ChecksumType specifies the checksum algorithm, such as sha256, used for a checksum.

Appears in:

ConfigMapReference

ConfigMapReference is a reference to a kubernetes configmap.

Appears in:

FieldDescriptionDefaultValidation
namespace string
name string

Environment

Environment is environment for building and running user functions.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringEnvironment
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec EnvironmentSpec

EnvironmentReference

EnvironmentReference is a reference to an environment.

Appears in:

FieldDescriptionDefaultValidation
namespace string
name string

EnvironmentSpec

EnvironmentSpec contains with builder, runtime and some other related environment settings.

Appears in:

FieldDescriptionDefaultValidation
version integerVersion is the Environment API version

Version “1” allows user to run code snippet in a file, and
it’s supported by most of the environments except tensorflow-serving.

Version “2” supports downloading and compiling user function if source archive is not empty.

Version “3” is almost the same with v2, but you’re able to control the size of pre-warm pool of the environment.
runtime RuntimeRuntime is configuration for running function, like container image etc.
builder Builder(Optional) Builder is configuration for builder manager to launch environment builder to build source code into
deployable binary.
allowedFunctionsPerContainer AllowedFunctionsPerContainer(Optional) defaults to ‘single’. Fission workflow uses
‘infinite’ to load multiple functions in one function pod.
Available value:
- single
- infinite
allowAccessToExternalNetwork booleanIstio default blocks all egress traffic for safety.
To enable accessibility of external network for builder/function pod, set to ’true’.
(Optional) defaults to ‘false’
resources ResourceRequirementsThe request and limit CPU/MEM resource setting for poolmanager to set up pods in the pre-warm pool.
(Optional) defaults to no limitation.
poolsize integerThe initial pool size for environment
terminationGracePeriod integerThe grace time for pod to perform connection draining before termination. The unit is in seconds.
(Optional) defaults to 360 seconds
keeparchive booleanKeepArchive is used by fetcher to determine if the extracted archive
or unarchived file should be placed, which is then used by specialize handler.
(This is mainly for the JVM environment because .jar is one kind of zip archive.)
imagepullsecret stringImagePullSecret is the secret for Kubernetes to pull an image from a
private registry.

ExecutionStrategy

ExecutionStrategy specifies low-level parameters for function execution, such as the number of instances.

MinScale affects the cold start behavior for a function. If MinScale is 0 then the deployment is created on first invocation of function and is good for requests of asynchronous nature. If MinScale is greater than 0 then MinScale number of pods are created at the time of creation of function. This ensures faster response during first invocation at the cost of consuming resources.

MaxScale is the maximum number of pods that function will scale to based on TargetCPUPercent and resources allocated to the function pod.

Appears in:

FieldDescriptionDefaultValidation
ExecutorType ExecutorTypeExecutorType is the executor type of function used. Defaults to “poolmgr”.

Available value:
- poolmgr
- newdeploy
- container
MinScale integerThis is only for newdeploy to set up minimum replicas of deployment.
MaxScale integerThis is only for newdeploy to set up maximum replicas of deployment.
TargetCPUPercent integerDeprecated: use hpaMetrics instead.
This is only for executor type newdeploy and container to set up target CPU utilization of HPA.
Applicable for executor type newdeploy and container.
SpecializationTimeout integerThis is the timeout setting for executor to wait for pod specialization.
hpaMetrics MetricSpec arrayhpaMetrics is the list of metrics used to determine the desired replica count of the Deployment
created for the function.
Applicable for executor type newdeploy and container.
hpaBehavior HorizontalPodAutoscalerBehaviorhpaBehavior is the behavior of HPA when scaling in up/down direction.
Applicable for executor type newdeploy and container.

ExecutorType

Underlying type: string

ExecutorType is the primary executor for an environment

Appears in:

FailureType

Underlying type: string

FailureType refers to the type of failure

Appears in:

Function

Function is function runs within environment runtime with given package and secrets/configmaps.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringFunction
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec FunctionSpec

FunctionPackageRef

FunctionPackageRef includes the reference to the package also the entrypoint of package.

Appears in:

FieldDescriptionDefaultValidation
packageref PackageRefPackage reference
functionName stringFunctionName specifies a specific function within the package. This allows
functions to share packages, by having different functions within the same
package.

Fission itself does not interpret this path. It is passed verbatim to
build and runtime environments.

This is optional: if unspecified, the environment has a default name.

FunctionReference

FunctionReference refers to a function

Appears in:

FieldDescriptionDefaultValidation
type FunctionReferenceTypeType indicates whether this function reference is by name or selector. For now,
the only supported reference type is by “name”. Future reference types:
* Function by label or annotation
* Branch or tag of a versioned function
* A “rolling upgrade” from one version of a function to another
Available value:
- name
- function-weights
name stringName of the function.
functionweights object (keys:string, values:integer)Function Reference by weight. this map contains function name as key and its weight
as the value. This is for canary upgrade purpose.

FunctionReferenceType

Underlying type: string

FunctionReferenceType refers to type of Function

Appears in:

FunctionSpec

FunctionSpec describes the contents of the function.

Appears in:

FieldDescriptionDefaultValidation
environment EnvironmentReferenceEnvironment is the build and runtime environment that this function is
associated with. An Environment with this name should exist, otherwise the
function cannot be invoked.
package FunctionPackageRefReference to a package containing deployment and optionally the source.
secrets SecretReference arrayReference to a list of secrets.
configmaps ConfigMapReference arrayReference to a list of configmaps.
resources ResourceRequirementscpu and memory resources as per K8S standards
This is only for newdeploy to set up resource limitation
when creating deployment for a function.
InvokeStrategy InvokeStrategyInvokeStrategy is a set of controls which affect how function executes
functionTimeout integerFunctionTimeout provides a maximum amount of duration within which a request for
a particular function execution should be complete.
This is optional. If not specified default value will be taken as 60s
idletimeout integerIdleTimeout specifies the length of time that a function is idle before the
function pod(s) are eligible for deletion. If no traffic to the function
is detected within the idle timeout, the executor will then recycle the
function pod(s) to release resources.
concurrency integerMaximum number of pods to be specialized which will serve requests
This is optional. If not specified default value will be taken as 500
requestsPerPod integerRequestsPerPod indicates the maximum number of concurrent requests that can be served by a specialized pod
This is optional. If not specified default value will be taken as 1
onceOnly booleanOnceOnly specifies if specialized pod will serve exactly one request in its lifetime and would be garbage collected after serving that one request
This is optional. If not specified default value will be taken as false
retainPods integerRetainPods specifies the number of specialized pods that should be retained after serving requests
This is optional. If not specified default value will be taken as 0
podspec PodSpecPodspec specifies podspec to use for executor type container based functions
Different arguments mentioned for container based function are populated inside a pod.

HTTPTrigger

HTTPTrigger is the trigger invokes user functions when receiving HTTP requests.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringHTTPTrigger
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec HTTPTriggerSpec

HTTPTriggerSpec

HTTPTriggerSpec is for router to expose user functions at the given URL path.

Appears in:

FieldDescriptionDefaultValidation
host stringTODO: remove this field since we have IngressConfig already
Deprecated: the original idea of this field is not for setting Ingress.
Since we have IngressConfig now, remove Host after couple releases.
relativeurl stringRelativeURL is the exposed URL for external client to access a function with.
prefix stringPrefix with which functions are exposed.
NOTE: Prefix takes precedence over URL/RelativeURL.
Note that it does not treat slashes specially ("/foobar/" will be matched by
the prefix “/foobar”).
keepPrefix booleanWhen function is exposed with Prefix based path,
keepPrefix decides whether to keep or trim prefix in URL while invoking function.
method stringUse Methods instead of Method. This field is going to be deprecated in a future release
HTTP method to access a function.
methods string arrayHTTP methods to access a function
functionref FunctionReferenceFunctionReference is a reference to the target function.
createingress booleanIf CreateIngress is true, router will create an ingress definition.
ingressconfig IngressConfigTODO: make IngressConfig an independent Fission resource
IngressConfig for router to set up Ingress.

IngressConfig

IngressConfig is for router to set up Ingress.

Appears in:

FieldDescriptionDefaultValidation
annotations object (keys:string, values:string)Annotations will be added to metadata when creating Ingress.
path stringPath is for path matching. The format of path
depends on what ingress controller you used.
host stringHost is for ingress controller to apply rules. If
host is empty or “*”, the rule applies to all
inbound HTTP traffic.
tls stringTLS is for user to specify a Secret that contains
TLS key and certificate. The domain name in the
key and crt must match the value of Host field.

InvokeStrategy

InvokeStrategy is a set of controls over how the function executes. It affects the performance and resource usage of the function.

An InvokeStrategy is of one of two types: ExecutionStrategy, which controls low-level parameters such as which ExecutorType to use, when to autoscale, minimum and maximum number of running instances, etc. A higher-level AbstractInvokeStrategy will also be supported; this strategy would specify the target request rate of the function, the target latency statistics, and the target cost (in terms of compute resources).

Appears in:

FieldDescriptionDefaultValidation
ExecutionStrategy ExecutionStrategyExecutionStrategy specifies low-level parameters for function execution,
such as the number of instances.
StrategyType StrategyTypeStrategyType is the strategy type of function.
Now it only supports ’execution’.

KubernetesWatchTrigger

KubernetesWatchTrigger watches kubernetes resource events and invokes functions.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringKubernetesWatchTrigger
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec KubernetesWatchTriggerSpec

KubernetesWatchTriggerSpec

KubernetesWatchTriggerSpec defines spec of KuberenetesWatchTrigger

Appears in:

FieldDescriptionDefaultValidation
namespace string
type stringType of resource to watch (Pod, Service, etc.)
labelselector object (keys:string, values:string)Resource labels
functionref FunctionReferenceThe reference to a function for kubewatcher to invoke with
when receiving events.

MessageQueueTrigger

MessageQueueTrigger invokes functions when messages arrive to certain topic that trigger subscribes to.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringMessageQueueTrigger
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec MessageQueueTriggerSpec

MessageQueueTriggerSpec

MessageQueueTriggerSpec defines a binding from a topic in a message queue to a function.

Appears in:

FieldDescriptionDefaultValidation
functionref FunctionReferenceThe reference to a function for message queue trigger to invoke with
when receiving messages from subscribed topic.
messageQueueType MessageQueueTypeType of message queue
topic stringSubscribed topic
respTopic stringTopic for message queue trigger to sent response from function.
errorTopic stringTopic to collect error response sent from function
maxRetries integerMaximum times for message queue trigger to retry
contentType stringContent type of payload
pollingInterval integerThe period to check each trigger source on every ScaledObject, and scale the deployment up or down accordingly
cooldownPeriod integerThe period to wait after the last trigger reported active before scaling the deployment back to 0
minReplicaCount integerMinimum number of replicas KEDA will scale the deployment down to
maxReplicaCount integerMaximum number of replicas KEDA will scale the deployment up to
metadata object (keys:string, values:string)Refer to Kubernetes API documentation for fields of metadata.
secret stringSecret name
mqtkind stringKind of Message Queue Trigger to be created, by default its fission
podspec PodSpec(Optional) Podspec allows modification of deployed runtime pod with Kubernetes PodSpec
The merging logic is briefly described below and detailed MergePodSpec function
- Volumes mounts and env variables for function and fetcher container are appended
- All additional containers and init containers are appended
- Volume definitions are appended
- Lists such as tolerations, ImagePullSecrets, HostAliases are appended
- Structs are merged and variables from pod spec take precedence

MessageQueueType

Underlying type: string

MessageQueueType refers to Type of message queue

Appears in:

Package

Package Think of these as function-level images.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringPackage
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PackageSpec
status PackageStatusStatus indicates the build status of package.

PackageRef

PackageRef is a reference to the package.

Appears in:

FieldDescriptionDefaultValidation
namespace string
name string
resourceversion stringIncluding resource version in the reference forces the function to be updated on
package update, making it possible to cache the function based on its metadata.

PackageSpec

PackageSpec includes source/deploy archives and the reference of environment to build the package.

Appears in:

FieldDescriptionDefaultValidation
environment EnvironmentReferenceEnvironment is a reference to the environment for building source archive.
source ArchiveSource is the archive contains source code and dependencies file.
If the package status is in PENDING state, builder manager will then
notify builder to compile source and save the result as deployable archive.
deployment ArchiveDeployment is the deployable archive that environment runtime used to run user function.
buildcmd stringBuildCommand is a custom build command that builder used to build the source archive.

PackageStatus

PackageStatus contains the build status of a package also the build log for examination.

Appears in:

FieldDescriptionDefaultValidation
buildstatus BuildStatusBuildStatus is the package build status.pending
buildlog stringBuildLog stores build log during the compilation.
lastUpdateTimestamp TimeLastUpdateTimestamp will store the timestamp the package was last updated
metav1.Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON.
https://github.com/kubernetes/apimachinery/blob/44bd77c24ef93cd3a5eb6fef64e514025d10d44e/pkg/apis/meta/v1/time.go#L26-L35

Runtime

Runtime is the setting for environment runtime.

Appears in:

FieldDescriptionDefaultValidation
image stringImage for containing the language runtime.
container Container(Optional) Container allows the modification of the deployed runtime
container using the Kubernetes Container spec. Fission overrides
the following fields:
- Name
- Image; set to the Runtime.Image
- TerminationMessagePath
- ImagePullPolicy

You can set either PodSpec or Container, but not both.
kubebuilder:validation:XPreserveUnknownFields=true
podspec PodSpec(Optional) Podspec allows modification of deployed runtime pod with Kubernetes PodSpec
The merging logic is briefly described below and detailed MergePodSpec function
- Volumes mounts and env variables for function and fetcher container are appended
- All additional containers and init containers are appended
- Volume definitions are appended
- Lists such as tolerations, ImagePullSecrets, HostAliases are appended
- Structs are merged and variables from pod spec take precedence

You can set either PodSpec or Container, but not both.

SecretReference

SecretReference is a reference to a kubernetes secret.

Appears in:

FieldDescriptionDefaultValidation
namespace string
name string

StrategyType

Underlying type: string

StrategyType is the strategy to be used for function execution

Appears in:

TimeTrigger

TimeTrigger invokes functions based on given cron schedule.

FieldDescriptionDefaultValidation
apiVersion stringfission.io/v1
kind stringTimeTrigger
kind stringKind 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
apiVersion stringAPIVersion 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
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec TimeTriggerSpec

TimeTriggerSpec

TimeTriggerSpec invokes the specific function at a time or times specified by a cron string.

Appears in:

FieldDescriptionDefaultValidation
cron stringCron schedule
functionref FunctionReferenceThe reference to function

ValidationErrorType

Underlying type: integer

Appears in: