Fission CRD Reference
API Reference
Packages
fission.io/v1
Resource Types
- CanaryConfig
- Environment
- Function
- HTTPTrigger
- KubernetesWatchTrigger
- MessageQueueTrigger
- Package
- TimeTrigger
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 |
Deprecated: 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 integer |
This is the timeout setting for executor to wait for pod specialization. |
hpaMetrics MetricSpec array |
hpaMetrics 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 HorizontalPodAutoscalerBehavior |
hpaBehavior 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.
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 |