Knative services are Kubernetes services that a user creates to deploy a serverless application. Each Knative service is defined by a route and a configuration, contained in a .yaml file.

Creating a Knative service

To create a service, you must create the service.yaml file.

You can copy the sample below. This sample will create a sample golang application called helloworld-go and allows you to specify the image for that application.

apiVersion: serving.knative.dev/v1alpha1 (1)
kind: Service
  name: helloworld-go (2)
  namespace: default (3)
        - image: gcr.io/knative-samples/helloworld-go (4)
            - name: TARGET (5)
              value: "Go Sample v1"
1 Current version of Knative
2 The name of the application
3 The namespace the application will use
4 The URL to the image of the application
5 The environment variable printed out by the sample application

Deploying a serverless application

To deploy a serverless application, you must apply the service.yaml file.

  1. Navigate to the directory where the service.yaml file is contained.

  2. Deploy the application by applying the service.yaml file.

    $ oc apply --filename service.yaml

Now that service has been created and the application has been deployed, Knative will create a new immutable revision for this version of the application.

Knative will also perform network programming to create a route, ingress, service, and load balancer for your application, and will automatically scale your pods up and down based on traffic, including inactive pods.