Pack Operator
Pack Operator is a Kubernetes operator. It manage several CRDs such as Pack, SecretReflector, ... PO main responsibility is to manage lifecycle of helm chart installation in cluster.
Installation
helm upgrade --install pack-operator -n pack-operator --create-namespace kubit-packs/pack-operator
Usage:
Create a Pack and apply it in the cluster, the operator will helm install/upgrade it
Features
Helm chart install/upgrade lifecycle through Pack CRD
TODO: complete this section
Secret Reflection via SecretReflector CRD
TODO: complete this section
Workload redeploy via annotation
When a Pack
/Deployment
/StatefulSet
have pack-operator.k8s.kubit.ir/watch-to-redeploy
annotation, pack-operator
watch given ConfigMap
/Secret
for modification and re-deploy the workload after a short time.
pack-operator.k8s.kubit.ir/watch-to-redeploy
annotation syntax is simple as a list of comma-seperated or
whitespace-seperated resource/name
segments which resource
is one of (configmap
, secret
) and name
is name of
whatched resource in same namespace. eg: configmap/cm-1, secret/sec-2, secret/tls-secret
. Invalid syntax will rejected
Samples:
If following ConfigMap exists in cluster
apiVersion: v1
kind: ConfigMap
metadata:
name: test-cm-1
namespace: default
data:
var1: tt
var2: xx
To redeploy test
deployment when test-cm-1
configmap changed, just
add pack-operator.k8s.kubit.ir/watch-to-redeploy: configmap/test-cm-1
to it it like below.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
namespace: default
annotations:
pack-operator.k8s.kubit.ir/watch-to-redeploy: configmap/test-cm-1
spec:
selector:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: nginx
To redeploy only web
deployment workload ( created via genpack ) when test-cm-1
configmap changed, just
add pack-operator.k8s.kubit.ir/watch-to-redeploy: configmap/test-cm-1
to it like below.
apiVersion: k8s.kubit.ir/v1alpha1
kind: Pack
metadata:
name: test
namespace: default
spec:
chart:
repository:
kind: ClusterPackRepository
name: kubit-packs
name: genpack
version: ~=0.1
values:
gonbad:
workloads:
web:
kind: deployment
replicaCount: 1
annotations:
pack-operator.k8s.kubit.ir/watch-to-redeploy: configmap/test-cm-1
containers:
web:
image:
repository: nginx
worker:
kind: deployment
replicaCount: 2
containers:
web:
image:
repository: nginx