Knative Serving
Knative Serving builds on Kubernetes and Istio to support deploying and serving of serverless applications and functions. Serving is easy to get started with and scales to support advanced scenarios.
The Knative Serving project provides middleware primitives that enable:
- Rapid deployment of serverless containers
- Automatic scaling up and down to zero
- Routing and network programming for Istio components
- Point-in-time snapshots of deployed code and configurations
Serving resources
Knative Serving defines a set of objects as Kubernetes Custom Resource Definitions (CRDs). These objects are used to define and control how your serverless workload behaves on the cluster:
- Service: The
service.serving.knative.dev
resource automatically manages the whole lifecycle of your workload. It controls the creation of other objects to ensure that your app has a route, a configuration, and a new revision for each update of the service. Service can be defined to always route traffic to the latest revision or to a pinned revision. - Route: The
route.serving.knative.dev
resource maps a network endpoint to one or more revisions. You can manage the traffic in several ways, including fractional traffic and named routes. - Configuration: The
configuration.serving.knative.dev
resource maintains the desired state for your deployment. It provides a clean separation between code and configuration and follows the Twelve-Factor App methodology. Modifying a configuration creates a new revision. - Revision: The
revision.serving.knative.dev
resource is a point-in-time snapshot of the code and configuration for each modification made to the workload. Revisions are immutable objects and can be retained for as long as useful. Knative Serving Revisions can be automatically scaled up and down according to incoming traffic. See Configuring the Autoscaler for more information.
Getting Started
To get started with Serving, check out one of the hello world sample projects. These projects use the Service
resource, which manages all of the details for you.
With the Service
resource, a deployed service will automatically have a matching route and configuration created. Each time the Service
is updated, a new revision is created.
For more information on the resources and their interactions, see the Resource Types Overview in the Knative Serving repository.
More samples and demos
Debugging Knative Serving issues
Configuration and Networking
- Configuring cluster local routes
- Using a custom domain
- Assigning a static IP address for Knative on Google Kubernetes Engine
- Using subroutes
Known Issues
See the Knative Serving Issues page for a full list of known issues.
Table of contents
- Getting started
- Knative Kubernetes Services
- Deploying from private registries
- Metrics
- Targets
- Configuring scale to zero
- Configuring concurrency
- Configuring scale bounds
- Configuring the requests per second (RPS) target
- Additional autoscaling configuration for Knative Pod Autoscaler
- Creating and using Subroutes
- Gradually rolling out latest Revisions
- Debugging issues with your application
- Enabling requests to Knative services when additional authorization policies are enabled
- Configuring high-availability components
- Feature/Extension Flags
- Configuring the ingress gateway
- Setting up a custom domain
- Setting up a custom domain per Service
- Configuring HTTPS connections
- Installing cert-manager
- Configuring HTTPS with Cloud DNS
- Creating Domain Mappings (Alpha)
- Enabling auto TLS certs
- Exclude namespaces from the Knative webhook
- Using ExternalDNS on Google Cloud Platform to automate DNS setup
- Tag resolution
- Go
- Java and Spring
- Java and Vert.x
- Node.js
- gRPC Server - Go
- Go
- Java (Spark)
- Java (Spring)
- Kotlin
- Node.js
- PHP
- Python
- Ruby
- Scala
- RESTful service - Go
- Routing services - Go
- Secrets - Go
- Tag Header Based Routing
- Traffic splitting
- Routing and managing traffic