Files
sablier/docs/providers/kubernetes.md
Alexis Couvreur acfd612bc0 ci: fix pipelines (#418)
* ci: fix pipelines

* fix(proxywasm): bump to go 1.23 and tinygo 0.33

* ci: move to sablierapp/sablier

* ci: replace sablierapp/whoami with acouvreur/whoami

This will use mimic later

* fix wrong whoami image

* update nginx docker image for proxywasm
2024-10-23 18:13:56 -07:00

98 lines
2.0 KiB
Markdown

# Kubernetes
Sablier assumes that it is deployed within the Kubernetes cluster to use the Kubernetes API internally.
## Use the Kubernetes provider
In order to use the kubernetes provider you can configure the [provider.name](TODO) property.
<!-- tabs:start -->
#### **File (YAML)**
```yaml
provider:
name: kubernetes
```
#### **CLI**
```bash
sablier start --provider.name=kubernetes
```
#### **Environment Variable**
```bash
PROVIDER_NAME=kubernetes
```
<!-- tabs:end -->
!> **Ensure that Sablier has the necessary roles!**
```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: sablier
rules:
- apiGroups:
- apps
- ""
resources:
- deployments
- statefulsets
verbs:
- get # Retrieve info about specific dep
- list # Events
- watch # Events
- apiGroups:
- apps
- ""
resources:
- deployments/scale
- statefulsets/scale
verbs:
- patch # Scale up and down
- update # Scale up and down
- get # Retrieve info about specific dep
- list # Events
- watch # Events
```
## Register Deployments
For Sablier to work, it needs to know which deployments to scale up and down.
You have to register your deployments by opting-in with labels.
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami
labels:
app: whoami
sablier.enable: "true"
sablier.group: mygroup
spec:
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: acouvreur/whoami:v1.10.2
```
## How does Sablier knows when a deployment is ready?
Sablier checks for the deployment replicas. As soon as the current replicas matches the wanted replicas, then the deployment is considered `ready`.
?> Kubernetes uses the Pod healthcheck to check if the Pod is up and running. So the provider has a native healthcheck support.