Installation
Install Krkn Operator using Helm
Installation Admin
Deploy Krkn Operator on Kubernetes or OpenShift using Helm.
Prerequisites
- Kubernetes 1.19+ or OpenShift 4.x
- Helm 3.0+
Quick Start
Latest Version: loading…
helm install krkn-operator oci://quay.io/krkn-chaos/charts/krkn-operator \
--version <VERSION> \
--namespace krkn-operator-system \
--create-namespace
Verify:
kubectl get pods -n krkn-operator-system -l app.kubernetes.io/name=krkn-operator
Access the console (local):
kubectl port-forward -n krkn-operator-system svc/krkn-operator-console 3000:3000
Production Installation
Choose the method that matches your environment:
| Method | External Access |
|---|---|
| Kubernetes | Gateway API (recommended) or Ingress |
| OpenShift | Routes (native) |
Install with a custom values.yaml:
helm install krkn-operator oci://quay.io/krkn-chaos/charts/krkn-operator \
--version <VERSION> \
--namespace krkn-operator-system \
--create-namespace \
-f values.yaml
Kubernetes with Gateway API
console:
enabled: true
gateway:
enabled: true
gatewayName: krkn-gateway
hostname: krkn.example.com
path: /
pathType: PathPrefix
Kubernetes with Ingress
console:
enabled: true
ingress:
enabled: true
className: nginx
hostname: krkn.example.com
tls:
- secretName: krkn-tls
hosts:
- krkn.example.com
OpenShift with Routes
console:
enabled: true
route:
enabled: true
hostname: krkn.apps.cluster.example.com
tls:
enabled: true
termination: edge
insecureEdgeTerminationPolicy: Redirect
INFO
OpenShift Security: The chart automatically detects OpenShift and configures the required Security Context Constraints (SCC). No manual SCC configuration is needed.
ACM Integration
Enable cluster discovery through Red Hat Advanced Cluster Management:
helm install krkn-operator oci://quay.io/krkn-chaos/charts/krkn-operator \
--version <VERSION> \
--namespace krkn-operator-system \
--create-namespace \
--set acm.enabled=true
Upgrade
helm upgrade krkn-operator oci://quay.io/krkn-chaos/charts/krkn-operator \
--version <VERSION> \
--namespace krkn-operator-system \
-f values.yaml
Uninstall
helm uninstall krkn-operator --namespace krkn-operator-system
INFO
CRDs are preserved after uninstall to prevent data loss. To remove them manually:
kubectl delete crds -l app.kubernetes.io/name=krkn-operator
Complete values.yaml Reference
Click to expand the full values.yaml reference
namespaceOverride: ""
operator:
image: quay.io/krkn-chaos/krkn-operator:latest
pullPolicy: IfNotPresent
enabled: true
replicaCount: 1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
dataProvider:
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
service:
type: ClusterIP
port: 8080
grpcPort: 50051
logging:
level: info
format: json
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
nodeSelector: {}
tolerations: []
affinity: {}
extraEnv: []
dataProvider:
image: quay.io/krkn-chaos/data-provider:latest
acm:
enabled: false
image: quay.io/krkn-chaos/krkn-operator-acm:latest
replicaCount: 1
config:
secretName: "application-manager"
service:
port: 8080
grpcPort: 50051
logging:
level: info
format: json
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi
nodeSelector: {}
tolerations: []
affinity: {}
console:
enabled: true
image: quay.io/krkn-chaos/console:latest
replicaCount: 1
service:
type: ClusterIP
port: 3000
nodePort: null
ingress:
enabled: false
className: nginx
hostname: krkn.example.com
annotations: {}
tls: []
gateway:
enabled: false
gatewayName: krkn-gateway
gatewayNamespace: ""
sectionName: ""
hostname: krkn.example.com
path: /
pathType: PathPrefix
annotations: {}
route:
enabled: false
hostname: ""
tls:
termination: edge
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 256Mi
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
nodeSelector: {}
tolerations: []
affinity: {}
pullSecrets: []
auth:
jwtSecret: ""
jwtExpiryHours: 24
rbac:
create: true
serviceAccount:
create: true
name: ""
annotations: {}
crds:
keep: true
monitoring:
enabled: false
service:
port: 8443
serviceMonitor:
enabled: false
interval: 30s
networkPolicy:
enabled: false
ingress: []
egress: []
updateStrategy:
type: RollingUpdate
podDisruptionBudget:
enabled: false
minAvailable: 1
commonLabels: {}
commonAnnotations: {}
nameOverride: ""
fullnameOverride: ""