Kubernetes Autostopping tutorial
This quickstart shows you how to create and test an AutoStopping rule for your Kubernetes cluster.
Install a sample application
To test AutoStopping, you can use a sample nginx application. Perform the following steps to install this sample application:
Apply the following YAML in your Kubernetes cluster:
apiVersion: v1
kind: Namespace
metadata:
name: autostopping-sample
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: autostopping-sample-app
namespace: autostopping-sample
labels:
app: autostopping-sample-app
spec:
replicas: 1
selector:
matchLabels:
app: autostopping-sample-app
template:
metadata:
labels:
app: autostopping-sample-app
spec:
containers:
- name: autostopping-sample-app
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: autostopping-sample-svc
namespace: autostopping-sample
spec:
selector:
app: autostopping-sample-app
ports:
- protocol: TCP
port: 80
targetPort: 80
This installs a demo application named autostopping-sample-app
that runs three pods running nginx in the autostopping-sample
namespace.
Supported ingress controllers for Kubernetes AutoStopping
Kubernetes AutoStopping support is fully available for the following ingress controllers and API gateways:
- Nginx
- Istio
- Traefik
- Ambassador
- HAProxy
Setting up AutoStopping Rules for each of these are shown below.
Kubernetes AutoStopping for Nginx
Expose your application by creating an ingress rule.
Apply the following YAML to the cluster.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: autostopping-sample-ig
namespace: autostopping-sample
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: autostopping-sample-svc
port:
number: 80
Create an AutoStopping Rule
Before applying this YAML, make sure that the cloud-connector-id
is updated and the namespace of the Rule is the same as the autostopping-sample-app
application.
apiVersion: ccm.harness.io/v1
kind: AutoStoppingRule
metadata:
name: autostopping-sample-rule
namespace: autostopping-sample
annotations:
harness.io/cloud-connector-id: Lightwing_Non_Prod
spec:
service:
name: autostopping-sample-svc
port: 80
ingress:
name: autostopping-sample-ig
controllerName: nginx
idleTimeMins: 5
ahideProgressPage: false
Your sample application is now managed by an AutoStopping Rule called autostopping-sample-ru
.
Kubernetes AutoStopping for Istio
Expose your application by creating an ingress rule.
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
namespace: autostopping-sample
spec:
gateways:
- http-gateway
http:
- match:
- uri:
prefix: /autostopping-test
route:
- destination:
port:
number: 80
host: autostopping-sample-svc
Create an AutoStopping Rule
Before applying this YAML, make sure that the cloud-connector-id
is updated and the namespace of the Rule is the same as the autostopping-sample-app
application.
apiVersion: ccm.harness.io/v1
kind: AutoStoppingRule
metadata:
name: autostopping-sample-rule
namespace: autostopping-sample
annotations:
harness.io/cloud-connector-id: [CloudConnectorID]
spec:
service:
name: autostopping-sample-svc
port: 80
istio:
virtualServices:
- httpbin
idleTimeMins: 5
hideProgressPage: false
Your sample application is now managed by an AutoStopping Rule called autostopping-sample-rule
.