Chapter 2. Creating functions

Before you can build and deploy a function, you must create it. You can create functions using the Knative (kn) CLI.

2.1. Creating a function by using the Knative CLI

You can specify the path, runtime, template, and image registry for a function as flags on the command line, or use the -c flag to start the interactive experience in the terminal.

Prerequisites

  • The OpenShift Serverless Operator and Knative Serving are installed on the cluster.
  • You have installed the Knative (kn) CLI.

Procedure

  • Create a function project:

    $ kn func create -r <repository> -l <runtime> -t <template> <path>
    • Accepted runtime values include quarkus, node, typescript, go, python, springboot, and rust.
    • Accepted template values include http and cloudevents.

      Example command

      $ kn func create -l typescript -t cloudevents examplefunc

      Example output

      Created typescript function in /home/user/demo/examplefunc

    • Alternatively, you can specify a repository that contains a custom template.

      Example command

      $ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc

      Example output

      Created node function in /home/user/demo/examplefunc

2.2. Creating a function in the web console

You can create a function from a Git repository by using the Developer perspective of the Red Hat OpenShift Serverless web console.

Prerequisites

  • Before you can create a function by using the web console, a cluster administrator must complete the following steps:

    • Install the OpenShift Serverless Operator and Knative Serving on the cluster.
    • Install the OpenShift Pipelines Operator on the cluster.
    • Create the following pipeline tasks so that they are available for all namespaces on the cluster:

      func-s2i task

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.31/pkg/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yaml

      func-deploy task

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.31/pkg/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml

      Node.js function

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.31/pkg/pipelines/resources/tekton/pipeline/dev-console/0.1/nodejs-pipeline.yaml

  • You must log into the Red Hat OpenShift Serverless web console.
  • You must create a project or have access to a project with the appropriate roles and permissions to create applications and other workloads in Red Hat OpenShift Serverless.
  • You must create or have access to a Git repository that contains the code for your function. The repository must contain a func.yaml file and use the s2i build strategy.

Procedure

  1. In the Developer perspective, navigate to +AddCreate Serverless function. The Create Serverless function page is displayed.
  2. Enter a Git Repo URL that points to the Git repository that contains the code for your function.
  3. In the Pipelines section:

    1. Select the Build, deploy and configure a Pipeline Repository radio button to create a new pipeline for your function.
    2. Select the Use Pipeline from this cluster radio button to connect your function to an existing pipeline in the cluster.
  4. Click Create.

Verification

  • After you have created a function, you can view it in the Topology view of the Developer perspective.