manifests/virtualcluster/nodecontrollers/templates/config.yaml (370 lines of code) (raw):
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app: {{ .Values.name }}
name: {{ .Values.name }}
namespace: {{ .Release.Namespace }}
data:
# NOTE: https://github.com/helm/helm/issues/2798#issuecomment-470435015
kwok-config.yaml: |-{{`
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-create
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'DoesNotExist'
- key: '.status.podIP'
operator: 'DoesNotExist'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationMilliseconds: 5000
next:
event:
type: Normal
reason: Created
message: Created container
statusTemplate: |
{{ $now := Now }}
conditions:
{{ if .spec.initContainers }}
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
message: 'containers with incomplete status: [{{ range .spec.initContainers }} {{ .name }} {{ end }}]'
reason: ContainersNotInitialized
status: "False"
type: Initialized
{{ else }}
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
status: "True"
type: Initialized
{{ end }}
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
message: 'containers with unready status: [{{ range .spec.containers }} {{ .name }} {{ end }}]'
reason: ContainersNotReady
status: "False"
type: Ready
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
message: 'containers with unready status: [{{ range .spec.containers }} {{ .name }} {{ end }}]'
reason: ContainersNotReady
status: "False"
type: ContainersReady
{{ range .spec.readinessGates }}
- lastTransitionTime: {{ $now }}
status: "True"
type: {{ .conditionType }}
{{ end }}
{{ if .spec.initContainers }}
initContainerStatuses:
{{ range .spec.initContainers }}
- image: {{ .image }}
name: {{ .name }}
ready: false
restartCount: 0
started: false
state:
waiting:
reason: PodInitializing
{{ end }}
containerStatuses:
{{ range .spec.containers }}
- image: {{ .image }}
name: {{ .name }}
ready: false
restartCount: 0
started: false
state:
waiting:
reason: PodInitializing
{{ end }}
{{ else }}
containerStatuses:
{{ range .spec.containers }}
- image: {{ .image }}
name: {{ .name }}
ready: false
restartCount: 0
started: false
state:
waiting:
reason: ContainerCreating
{{ end }}
{{ end }}
hostIP: {{ NodeIPWith .spec.nodeName }}
podIP: {{ PodIPWith .spec.nodeName ( or .spec.hostNetwork false ) ( or .metadata.uid "" ) ( or .metadata.name "" ) ( or .metadata.namespace "" ) }}
phase: Pending
---
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-init-container-running
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'DoesNotExist'
- key: '.status.phase'
operator: 'In'
values:
- 'Pending'
- key: '.status.conditions.[] | select( .type == "Initialized" ) | .status'
operator: 'NotIn'
values:
- 'True'
- key: '.status.initContainerStatuses.[].state.waiting.reason'
operator: 'Exists'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationMilliseconds: 5000
next:
statusTemplate: |
{{ $now := Now }}
{{ $root := . }}
initContainerStatuses:
{{ range $index, $item := .spec.initContainers }}
{{ $origin := index $root.status.initContainerStatuses $index }}
- image: {{ $item.image }}
name: {{ $item.name }}
ready: true
restartCount: 0
started: true
state:
running:
startedAt: '{{ $now }}'
{{ end }}
---
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-init-container-completed
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'DoesNotExist'
- key: '.status.phase'
operator: 'In'
values:
- 'Pending'
- key: '.status.conditions.[] | select( .type == "Initialized" ) | .status'
operator: 'NotIn'
values:
- 'True'
- key: '.status.initContainerStatuses.[].state.running.startedAt'
operator: 'Exists'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationMilliseconds: 5000
next:
statusTemplate: |
{{ $now := Now }}
{{ $root := . }}
conditions:
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
status: "True"
type: Initialized
initContainerStatuses:
{{ range $index, $item := .spec.initContainers }}
{{ $origin := index $root.status.initContainerStatuses $index }}
- image: {{ $item.image }}
name: {{ $item.name }}
ready: true
restartCount: 0
started: false
state:
terminated:
exitCode: 0
finishedAt: '{{ $now }}'
reason: Completed
startedAt: '{{ $now }}'
{{ end }}
containerStatuses:
{{ range .spec.containers }}
- image: {{ .image }}
name: {{ .name }}
ready: false
restartCount: 0
started: false
state:
waiting:
reason: ContainerCreating
{{ end }}
---
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-ready
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'DoesNotExist'
- key: '.status.phase'
operator: 'In'
values:
- 'Pending'
- key: '.status.conditions.[] | select( .type == "Initialized" ) | .status'
operator: 'In'
values:
- 'True'
- key: '.status.conditions.[] | select( .type == "ContainersReady" ) | .status'
operator: 'NotIn'
values:
- 'True'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationMilliseconds: 5000
next:
delete: false
statusTemplate: |
{{ $now := Now }}
{{ $root := . }}
conditions:
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
message: ''
reason: ''
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: '{{ $now }}'
message: ''
reason: ''
status: "True"
type: ContainersReady
containerStatuses:
{{ range $index, $item := .spec.containers }}
{{ $origin := index $root.status.containerStatuses $index }}
- image: {{ $item.image }}
name: {{ $item.name }}
ready: true
restartCount: 0
started: true
state:
running:
startedAt: '{{ $now }}'
{{ end }}
phase: Running
---
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-complete
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'DoesNotExist'
- key: '.status.phase'
operator: 'In'
values:
- 'Running'
- key: '.status.conditions.[] | select( .type == "Ready" ) | .status'
operator: 'In'
values:
- 'True'
- key: '.metadata.ownerReferences.[].kind'
operator: 'In'
values:
- 'Job'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationMilliseconds: 5000
next:
delete: false
statusTemplate: |
{{ $now := Now }}
{{ $root := . }}
containerStatuses:
{{ range $index, $item := .spec.containers }}
{{ $origin := index $root.status.containerStatuses $index }}
- image: {{ $item.image }}
name: {{ $item.name }}
ready: true
restartCount: 0
started: false
state:
terminated:
exitCode: 0
finishedAt: '{{ $now }}'
reason: Completed
startedAt: '{{ $now }}'
{{ end }}
phase: Succeeded
---
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-remove-finalizer
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'Exists'
- key: '.metadata.finalizers.[]'
operator: 'In'
values:
- 'kwok.x-k8s.io/fake'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationMilliseconds: 5000
next:
finalizers:
remove:
- value: 'kwok.x-k8s.io/fake'
event:
type: Normal
reason: Killing
message: Stopping container
---
kind: Stage
apiVersion: kwok.x-k8s.io/v1alpha1
metadata:
name: pod-delete
spec:
resourceRef:
apiGroup: v1
kind: Pod
selector:
matchExpressions:
- key: '.metadata.deletionTimestamp'
operator: 'Exists'
- key: '.metadata.finalizers'
operator: 'DoesNotExist'
weight: 1
delay:
durationMilliseconds: 1000
jitterDurationFrom:
expressionFrom: '.metadata.deletionTimestamp'
next:
delete: true`}}