Fission CRD Reference

Fission Custom Resources Definition(CRD) Reference

API Reference

Packages

fission.io/v1

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:

Field Description
type ArchiveType Type defines how the package is specified: literal or URL. Available value: - literal - url
literal integer array Literal contents of the package. Can be used for encoding packages below TODO (256 KB?) size.
url string URL references a package.
checksum Checksum Checksum 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:

Field Description
image string Image 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 PodSpec PodSpec 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.

Field Description
apiVersion string fission.io/v1
kind string CanaryConfig
TypeMeta TypeMeta
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec CanaryConfigSpec
status CanaryConfigStatus

CanaryConfigSpec

CanaryConfigSpec defines the canary configuration spec

Appears in:

Field Description
trigger string HTTP trigger that this config references
newfunction string New version of the function
oldfunction string Old stable version of the function
weightincrement integer Weight increment step for function
duration string Weight increment interval, string representation of time.Duration, ex : 1m, 2h, 2d (default: “2m”)
failurethreshold integer Threshold in percentage beyond which the new version of the function is considered unstable
failureType FailureType

CanaryConfigStatus

CanaryConfigStatus represents canary config status

Appears in:

Field Description
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:

Field Description
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:

Field Description
namespace string
name string

Environment

Environment is environment for building and running user functions.

Field Description
apiVersion string fission.io/v1
kind string Environment
TypeMeta TypeMeta
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec EnvironmentSpec

EnvironmentReference

EnvironmentReference is a reference to an environment.

Appears in:

Field Description
namespace string
name string

EnvironmentSpec

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

Appears in:

Field Description
version integer Version 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 Runtime Runtime 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 boolean Istio 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 ResourceRequirements The request and limit CPU/MEM resource setting for poolmanager to set up pods in the pre-warm pool. (Optional) defaults to no limitation.
poolsize integer The initial pool size for environment
terminationGracePeriod integer The grace time for pod to perform connection draining before termination. The unit is in seconds. (Optional) defaults to 360 seconds
keeparchive boolean KeepArchive 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 string ImagePullSecret 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:

Field Description
ExecutorType ExecutorType ExecutorType is the executor type of function used. Defaults to “poolmgr”.
Available value: - poolmgr - newdeploy - container
MinScale integer This is only for newdeploy to set up minimum replicas of deployment.
MaxScale integer This is only for newdeploy to set up maximum replicas of deployment.
TargetCPUPercent integer This is only for newdeploy to set up target CPU utilization of HPA.
SpecializationTimeout integer This is the timeout setting for executor to wait for pod specialization.

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.

Field Description
apiVersion string fission.io/v1
kind string Function
TypeMeta TypeMeta
metadata ObjectMeta Refer 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:

Field Description
packageref PackageRef Package reference
functionName string FunctionName 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:

Field Description
type FunctionReferenceType Type 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 string Name 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:

Field Description
environment EnvironmentReference Environment 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 FunctionPackageRef Reference to a package containing deployment and optionally the source.
secrets SecretReference array Reference to a list of secrets.
configmaps ConfigMapReference array Reference to a list of configmaps.
resources ResourceRequirements cpu and memory resources as per K8S standards This is only for newdeploy to set up resource limitation when creating deployment for a function.
InvokeStrategy InvokeStrategy InvokeStrategy is a set of controls which affect how function executes
functionTimeout integer FunctionTimeout 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 integer IdleTimeout 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 integer Maximum number of pods to be specialized which will serve requests This is optional. If not specified default value will be taken as 500
requestsPerPod integer RequestsPerPod 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 boolean OnceOnly 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
podspec PodSpec Podspec 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.

Field Description
apiVersion string fission.io/v1
kind string HTTPTrigger
TypeMeta TypeMeta
metadata ObjectMeta Refer 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:

Field Description
host string TODO: 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 string RelativeURL is the exposed URL for external client to access a function with.
prefix string Prefix 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 boolean When function is exposed with Prefix based path, keepPrefix decides whether to keep or trim prefix in URL while invoking function.
method string Use Methods instead of Method. This field is going to be deprecated in a future release HTTP method to access a function.
methods string array HTTP methods to access a function
functionref FunctionReference FunctionReference is a reference to the target function.
createingress boolean If CreateIngress is true, router will create an ingress definition.
ingressconfig IngressConfig TODO: make IngressConfig an independent Fission resource IngressConfig for router to set up Ingress.

IngressConfig

IngressConfig is for router to set up Ingress.

Appears in:

Field Description
annotations object (keys:string, values:string) Annotations will be added to metadata when creating Ingress.
path string Path is for path matching. The format of path depends on what ingress controller you used.
host string Host is for ingress controller to apply rules. If host is empty or “*”, the rule applies to all inbound HTTP traffic.
tls string TLS 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:

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

KubernetesWatchTrigger

KubernetesWatchTrigger watches kubernetes resource events and invokes functions.

Field Description
apiVersion string fission.io/v1
kind string KubernetesWatchTrigger
TypeMeta TypeMeta
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec KubernetesWatchTriggerSpec

KubernetesWatchTriggerSpec

KubernetesWatchTriggerSpec defines spec of KuberenetesWatchTrigger

Appears in:

Field Description
namespace string
type string Type of resource to watch (Pod, Service, etc.)
labelselector object (keys:string, values:string) Resource labels
functionref FunctionReference The 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.

Field Description
apiVersion string fission.io/v1
kind string MessageQueueTrigger
TypeMeta TypeMeta
metadata ObjectMeta Refer 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:

Field Description
functionref FunctionReference The reference to a function for message queue trigger to invoke with when receiving messages from subscribed topic.
messageQueueType MessageQueueType Type of message queue (NATS, Kafka, AzureQueue)
topic string Subscribed topic
respTopic string Topic for message queue trigger to sent response from function.
errorTopic string Topic to collect error response sent from function
maxRetries integer Maximum times for message queue trigger to retry
contentType string Content type of payload
pollingInterval integer The period to check each trigger source on every ScaledObject, and scale the deployment up or down accordingly
cooldownPeriod integer The period to wait after the last trigger reported active before scaling the deployment back to 0
minReplicaCount integer Minimum number of replicas KEDA will scale the deployment down to
maxReplicaCount integer Maximum 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 string Secret name
mqtkind string Kind 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.

Field Description
apiVersion string fission.io/v1
kind string Package
TypeMeta TypeMeta
metadata ObjectMeta Refer to Kubernetes API documentation for fields of metadata.
spec PackageSpec
status PackageStatus Status indicates the build status of package.

PackageRef

PackageRef is a reference to the package.

Appears in:

Field Description
namespace string
name string
resourceversion string Including 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:

Field Description
environment EnvironmentReference Environment is a reference to the environment for building source archive.
source Archive Source 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 Archive Deployment is the deployable archive that environment runtime used to run user function.
buildcmd string BuildCommand 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:

Field Description
buildstatus BuildStatus BuildStatus is the package build status.
buildlog string BuildLog stores build log during the compilation.
lastUpdateTimestamp Time LastUpdateTimestamp 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:

Field Description
image string Image 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:

Field Description
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.

Field Description
apiVersion string fission.io/v1
kind string TimeTrigger
TypeMeta TypeMeta
metadata ObjectMeta Refer 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:

Field Description
cron string Cron schedule
functionref FunctionReference The reference to function