Converting a Kubernetes Deployment to a Knative Service¶
This topic shows how to convert a Kubernetes Deployment to a Knative Service.
Benefits¶
Converting to a Knative Service has the following benefits:
- Reduces the footprint of the service instance because the instance scales to 0 when it becomes idle.
- Improves performance due to built-in autoscaling for the Knative Service.
Determine if your workload is a good fit for Knative¶
In general, if your Kubernetes workload is a good fit for Knative, you can remove a lot of your manifest to create a Knative Service.
There are three aspects you need to consider:
- All work done is triggered by HTTP.
- The container is stateless. All state is stored elsewhere or can be re-created.
- Your workload uses only Secret and ConfigMap volumes.
Example conversion¶
The following example shows a Kubernetes Nginx Deployment and Service, and shows how it converts to a Knative Service.
Kubernetes Nginx Deployment and Service¶
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    run: my-nginx
Knative Service¶
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: my-nginx
spec:
  template:
    spec:
      containers:
      - image: nginx
        ports:
        - containerPort: 80