Feat: add health check for componentdefinition task (#3509)

Signed-off-by: yangsoon <songyang.song@alibaba-inc.com>

Co-authored-by: yangsoon <songyang.song@alibaba-inc.com>
This commit is contained in:
yangs
2022-03-25 16:21:57 +08:00
committed by GitHub
co-authored by yangsoon
parent 03cd0d144a
commit ccfab6ce7f
9 changed files with 148 additions and 173 deletions
@@ -244,6 +244,30 @@ spec:
// +usage=Number of consecutive failures required to determine the container is not alive (liveness probe) or not ready (readiness probe).
failureThreshold: *3 | int
}
status:
customStatus: |-
status: {
active: *0 | int
failed: *0 | int
succeeded: *0 | int
} & {
if context.output.status.active != _|_ {
active: context.output.status.active
}
if context.output.status.failed != _|_ {
failed: context.output.status.failed
}
if context.output.status.succeeded != _|_ {
succeeded: context.output.status.succeeded
}
}
message: "Active/Failed/Succeeded:\(status.active)/\(status.failed)/\(status.succeeded)"
healthPolicy: |-
succeeded: *0 | int
if context.output.status.succeeded != _|_ {
succeeded: context.output.status.succeeded
}
isHealth: succeeded == context.output.spec.parallelism
workload:
definition:
apiVersion: batch/v1
@@ -503,52 +503,35 @@ spec:
}
status:
customStatus: |-
import "strconv"
ready: {
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
readyReplicas: *0 | int
} & {
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
}
message: "Ready:" + strconv.FormatInt(ready.readyReplicas, 10) + "/" + strconv.FormatInt(context.output.spec.replicas, 10)
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
healthPolicy: |-
ready: {
if context.output.status.updatedReplicas == _|_ {
updatedReplicas : 0
updatedReplicas: *0 | int
readyReplicas: *0 | int
replicas: *0 | int
observedGeneration: *0 | int
} & {
if context.output.status.updatedReplicas != _|_ {
updatedReplicas: context.output.status.updatedReplicas
}
if context.output.status.updatedReplicas != _|_ {
updatedReplicas : context.output.status.updatedReplicas
}
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
if context.output.status.replicas == _|_ {
replicas: 0
}
if context.output.status.replicas != _|_ {
replicas: context.output.status.replicas
}
if context.output.status.observedGeneration != _|_ {
observedGeneration: context.output.status.observedGeneration
}
if context.output.status.observedGeneration == _|_ {
observedGeneration: 0
}
}
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
workload:
definition:
apiVersion: apps/v1
@@ -396,52 +396,35 @@ spec:
}
status:
customStatus: |-
import "strconv"
ready: {
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
readyReplicas: *0 | int
} & {
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
}
message: "Ready:" + strconv.FormatInt(ready.readyReplicas, 10) + "/" + strconv.FormatInt(context.output.spec.replicas, 10)
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
healthPolicy: |-
ready: {
if context.output.status.updatedReplicas == _|_ {
updatedReplicas : 0
updatedReplicas: *0 | int
readyReplicas: *0 | int
replicas: *0 | int
observedGeneration: *0 | int
} & {
if context.output.status.updatedReplicas != _|_ {
updatedReplicas: context.output.status.updatedReplicas
}
if context.output.status.updatedReplicas != _|_ {
updatedReplicas : context.output.status.updatedReplicas
}
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
if context.output.status.replicas == _|_ {
replicas: 0
}
if context.output.status.replicas != _|_ {
replicas: context.output.status.replicas
}
if context.output.status.observedGeneration != _|_ {
observedGeneration: context.output.status.observedGeneration
}
if context.output.status.observedGeneration == _|_ {
observedGeneration: 0
}
}
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
workload:
definition:
apiVersion: apps/v1
@@ -244,6 +244,30 @@ spec:
// +usage=Number of consecutive failures required to determine the container is not alive (liveness probe) or not ready (readiness probe).
failureThreshold: *3 | int
}
status:
customStatus: |-
status: {
active: *0 | int
failed: *0 | int
succeeded: *0 | int
} & {
if context.output.status.active != _|_ {
active: context.output.status.active
}
if context.output.status.failed != _|_ {
failed: context.output.status.failed
}
if context.output.status.succeeded != _|_ {
succeeded: context.output.status.succeeded
}
}
message: "Active/Failed/Succeeded:\(status.active)/\(status.failed)/\(status.succeeded)"
healthPolicy: |-
succeeded: *0 | int
if context.output.status.succeeded != _|_ {
succeeded: context.output.status.succeeded
}
isHealth: succeeded == context.output.spec.parallelism
workload:
definition:
apiVersion: batch/v1
@@ -503,52 +503,35 @@ spec:
}
status:
customStatus: |-
import "strconv"
ready: {
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
readyReplicas: *0 | int
} & {
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
}
message: "Ready:" + strconv.FormatInt(ready.readyReplicas, 10) + "/" + strconv.FormatInt(context.output.spec.replicas, 10)
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
healthPolicy: |-
ready: {
if context.output.status.updatedReplicas == _|_ {
updatedReplicas : 0
updatedReplicas: *0 | int
readyReplicas: *0 | int
replicas: *0 | int
observedGeneration: *0 | int
} & {
if context.output.status.updatedReplicas != _|_ {
updatedReplicas: context.output.status.updatedReplicas
}
if context.output.status.updatedReplicas != _|_ {
updatedReplicas : context.output.status.updatedReplicas
}
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
if context.output.status.replicas == _|_ {
replicas: 0
}
if context.output.status.replicas != _|_ {
replicas: context.output.status.replicas
}
if context.output.status.observedGeneration != _|_ {
observedGeneration: context.output.status.observedGeneration
}
if context.output.status.observedGeneration == _|_ {
observedGeneration: 0
}
}
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
workload:
definition:
apiVersion: apps/v1
@@ -396,52 +396,35 @@ spec:
}
status:
customStatus: |-
import "strconv"
ready: {
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
readyReplicas: *0 | int
} & {
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
}
message: "Ready:" + strconv.FormatInt(ready.readyReplicas, 10) + "/" + strconv.FormatInt(context.output.spec.replicas, 10)
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
healthPolicy: |-
ready: {
if context.output.status.updatedReplicas == _|_ {
updatedReplicas : 0
updatedReplicas: *0 | int
readyReplicas: *0 | int
replicas: *0 | int
observedGeneration: *0 | int
} & {
if context.output.status.updatedReplicas != _|_ {
updatedReplicas: context.output.status.updatedReplicas
}
if context.output.status.updatedReplicas != _|_ {
updatedReplicas : context.output.status.updatedReplicas
}
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
if context.output.status.replicas == _|_ {
replicas: 0
}
if context.output.status.replicas != _|_ {
replicas: context.output.status.replicas
}
if context.output.status.observedGeneration != _|_ {
observedGeneration: context.output.status.observedGeneration
}
if context.output.status.observedGeneration == _|_ {
observedGeneration: 0
}
}
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
workload:
definition:
apiVersion: apps/v1
@@ -3,12 +3,41 @@ task: {
annotations: {}
labels: {}
description: "Describes jobs that run code or a script to completion."
attributes: workload: {
definition: {
apiVersion: "batch/v1"
kind: "Job"
attributes: {
workload: {
definition: {
apiVersion: "batch/v1"
kind: "Job"
}
type: "jobs.batch"
}
status: {
customStatus: #"""
status: {
active: *0 | int
failed: *0 | int
succeeded: *0 | int
} & {
if context.output.status.active != _|_ {
active: context.output.status.active
}
if context.output.status.failed != _|_ {
failed: context.output.status.failed
}
if context.output.status.succeeded != _|_ {
succeeded: context.output.status.succeeded
}
}
message: "Active/Failed/Succeeded:\(status.active)/\(status.failed)/\(status.succeeded)"
"""#
healthPolicy: #"""
succeeded: *0 | int
if context.output.status.succeeded != _|_ {
succeeded: context.output.status.succeeded
}
isHealth: succeeded == context.output.spec.parallelism
"""#
}
type: "jobs.batch"
}
}
template: {
@@ -17,53 +17,36 @@ webservice: {
}
status: {
customStatus: #"""
import "strconv"
ready: {
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
readyReplicas: *0 | int
} & {
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
}
message: "Ready:" + strconv.FormatInt(ready.readyReplicas, 10) + "/" + strconv.FormatInt(context.output.spec.replicas, 10)
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
"""#
healthPolicy: #"""
ready: {
if context.output.status.updatedReplicas == _|_ {
updatedReplicas : 0
updatedReplicas: *0 | int
readyReplicas: *0 | int
replicas: *0 | int
observedGeneration: *0 | int
} & {
if context.output.status.updatedReplicas != _|_ {
updatedReplicas: context.output.status.updatedReplicas
}
if context.output.status.updatedReplicas != _|_ {
updatedReplicas : context.output.status.updatedReplicas
}
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
if context.output.status.replicas == _|_ {
replicas: 0
}
if context.output.status.replicas != _|_ {
replicas: context.output.status.replicas
}
if context.output.status.observedGeneration != _|_ {
observedGeneration: context.output.status.observedGeneration
}
if context.output.status.observedGeneration == _|_ {
observedGeneration: 0
}
}
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
"""#
}
}
@@ -15,53 +15,36 @@ worker: {
}
status: {
customStatus: #"""
import "strconv"
ready: {
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
readyReplicas: *0 | int
} & {
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
}
message: "Ready:" + strconv.FormatInt(ready.readyReplicas, 10) + "/" + strconv.FormatInt(context.output.spec.replicas, 10)
message: "Ready:\(ready.readyReplicas)/\(context.output.spec.replicas)"
"""#
healthPolicy: #"""
ready: {
if context.output.status.updatedReplicas == _|_ {
updatedReplicas : 0
updatedReplicas: *0 | int
readyReplicas: *0 | int
replicas: *0 | int
observedGeneration: *0 | int
} & {
if context.output.status.updatedReplicas != _|_ {
updatedReplicas: context.output.status.updatedReplicas
}
if context.output.status.updatedReplicas != _|_ {
updatedReplicas : context.output.status.updatedReplicas
}
if context.output.status.readyReplicas == _|_ {
readyReplicas: 0
}
if context.output.status.readyReplicas != _|_ {
readyReplicas: context.output.status.readyReplicas
}
if context.output.status.replicas == _|_ {
replicas: 0
}
if context.output.status.replicas != _|_ {
replicas: context.output.status.replicas
}
if context.output.status.observedGeneration != _|_ {
observedGeneration: context.output.status.observedGeneration
}
if context.output.status.observedGeneration == _|_ {
observedGeneration: 0
}
}
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
isHealth: (context.output.spec.replicas == ready.readyReplicas) && (context.output.spec.replicas == ready.updatedReplicas) && (context.output.spec.replicas == ready.replicas) && (ready.observedGeneration == context.output.metadata.generation || ready.observedGeneration > context.output.metadata.generation)
"""#
}
}