Skip to content

Commit 21c0274

Browse files
authored
Merge pull request #580 from jetstack/VC-36444-health-check
VC-36444: Add a health check and liveness probe
2 parents 70a84fa + b2cf1cc commit 21c0274

File tree

2 files changed

+37
-11
lines changed

2 files changed

+37
-11
lines changed

deploy/charts/venafi-kubernetes-agent/templates/deployment.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ spec:
9494
- containerPort: 8081
9595
name: http-metrics
9696
{{- end }}
97+
livenessProbe:
98+
httpGet:
99+
path: /healthz
100+
port: 8081
101+
initialDelaySeconds: 15
102+
periodSeconds: 20
103+
readinessProbe:
104+
httpGet:
105+
path: /readyz
106+
port: 8081
107+
initialDelaySeconds: 5
108+
periodSeconds: 10
97109
{{- with .Values.nodeSelector }}
98110
nodeSelector:
99111
{{- toYaml . | nindent 8 }}

pkg/agent/run.go

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,32 @@ func Run(cmd *cobra.Command, args []string) {
7575
}
7676
}()
7777
}
78-
if Flags.Prometheus {
79-
logs.Log.Printf("Prometheus was enabled.\nRunning prometheus server on port :8081")
80-
go func() {
78+
79+
go func() {
80+
server := http.NewServeMux()
81+
82+
if Flags.Prometheus {
83+
logs.Log.Printf("Prometheus was enabled.\nRunning prometheus on port :8081")
8184
prometheus.MustRegister(metricPayloadSize)
82-
metricsServer := http.NewServeMux()
83-
metricsServer.Handle("/metrics", promhttp.Handler())
84-
err := http.ListenAndServe(":8081", metricsServer)
85-
if err != nil && !errors.Is(err, http.ErrServerClosed) {
86-
logs.Log.Fatalf("failed to run prometheus server: %s", err)
87-
}
88-
}()
89-
}
85+
server.Handle("/metrics", promhttp.Handler())
86+
}
87+
88+
// Health check endpoint. Since we haven't figured a good way of knowning
89+
// what "ready" means for the agent, we just return 200 OK inconditionally.
90+
// The goal is to satisfy some Kubernetes distributions, like OpenShift,
91+
// that require a liveness and health probe to be present for each pod.
92+
server.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
93+
w.WriteHeader(http.StatusOK)
94+
})
95+
server.HandleFunc("/readyz", func(w http.ResponseWriter, r *http.Request) {
96+
w.WriteHeader(http.StatusOK)
97+
})
98+
99+
err := http.ListenAndServe(":8081", server)
100+
if err != nil && !errors.Is(err, http.ErrServerClosed) {
101+
logs.Log.Fatalf("failed to run the health check server: %s", err)
102+
}
103+
}()
90104

91105
_, isVenConn := preflightClient.(*client.VenConnClient)
92106
if isVenConn {

0 commit comments

Comments
 (0)