StatefulSet
Definition
A StatefulSet is a Kubernetes resource used to manage stateful applications. Unlike a Deployment, a StatefulSet maintains a unique identity for each of its Pods, ensuring that they are created in a specific order and have stable network identities. This is particularly useful for applications that require persistent storage and stable network identifiers, such as databases or distributed systems.
Secure Settings Example
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: secure-statefulset
spec:
serviceName: "secure-service"
replicas: 3
selector:
matchLabels:
app: secure-app
template:
metadata:
labels:
app: secure-app
spec:
securityContext:
runAsNonRoot: true
fsGroup: 1000
containers:
- name: secure-container
image: secure-image:latest
ports:
- containerPort: 80
volumeMounts:
- name: secure-storage
mountPath: /data
volumeClaimTemplates:
- metadata:
name: secure-storage
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
Insecure Settings Example
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: insecure-statefulset
spec:
serviceName: "insecure-service"
replicas: 3
selector:
matchLabels:
app: insecure-app
template:
metadata:
labels:
app: insecure-app
spec:
containers:
- name: insecure-container
image: insecure-image:latest
ports:
- containerPort: 80
volumeMounts:
- name: insecure-storage
mountPath: /data
volumeClaimTemplates:
- metadata:
name: insecure-storage
spec:
accessModes: ["ReadWriteMany"]
resources:
requests:
storage: 1Gi