Skip to content

Commit 545d7b6

Browse files
committed
feat: permit specifying API server DNS name
closes #158 Signed-off-by: Clément Nussbaumer <clement.nussbaumer@postfinance.ch>
1 parent b87a8ee commit 545d7b6

File tree

6 files changed

+20
-1
lines changed

6 files changed

+20
-1
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ The following command can be used to install kubenurse with Helm: `helm upgrade
125125
| histogram_buckets | Sets `KUBENURSE_HISTOGRAM_BUCKETS` environment variable | |
126126
| extra_ca | Sets `KUBENURSE_EXTRA_CA` environment variable | |
127127
| extra_checks | Sets `KUBENURSE_EXTRA_CHECKS` environment variable | |
128+
| kubernetes_service_dns | Sets `KUBERNETES_SERVICE_DNS` environment variable | |
128129
| check_api_server_direct | Sets `KUBENURSE_CHECK_API_SERVER_DIRECT` environment variable | `true` |
129130
| check_api_server_dns | Sets `KUBENURSE_CHECK_API_SERVER_DNS` environment variable | `true` |
130131
| check_me_ingress | Sets `KUBENURSE_CHECK_ME_INGRESS` environment variable | `true` |
@@ -169,6 +170,10 @@ Following variables are injected to the Pod by Kubernetes and should not be defi
169170
- `KUBERNETES_SERVICE_HOST`: Host to communicate to the kube-apiserver
170171
- `KUBERNETES_SERVICE_PORT`: Port to communicate to the kube-apiserver
171172

173+
The DNS name of the API server can be configured with the
174+
`KUBERNETES_SERVICE_DNS` environment variable, and it defaults to
175+
`kubernetes.default.svc.cluster.local`.
176+
172177
</details>
173178

174179
## HTTP Endpoints

helm/kubenurse/templates/daemonset.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ spec:
5555
value: {{ default (printf "http://%s.%s.svc.cluster.local:%.f" $fullName .Release.Namespace .Values.service.port) .Values.service_url }}
5656
- name: KUBENURSE_INSECURE
5757
value: {{ .Values.insecure | quote }}
58+
- name: KUBERNETES_SERVICE_DNS
59+
value: {{ .Values.kubernetes_service_dns | quote }}
5860
- name: KUBENURSE_ALLOW_UNSCHEDULABLE
5961
value: {{ .Values.allow_unschedulable | quote }}
6062
- name: KUBENURSE_NAMESPACE

helm/kubenurse/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ serviceMonitor:
3333
insecure: true
3434
# KUBENURSE_SERVICE_URL
3535
service_url: ""
36+
# KUBERNETES_SERVICE_DNS
37+
kubernetes_service_dns: "kubernetes.default.svc.cluster.local"
3638
# KUBENURSE_ALLOW_UNSCHEDULABLE
3739
allow_unschedulable: false
3840
# KUBENURSE_NEIGHBOUR_FILTER

internal/kubenurse/server.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ func New(c client.Client) (*Server, error) { //nolint:funlen // TODO: use a flag
154154
chk.KubenurseServiceURL = os.Getenv("KUBENURSE_SERVICE_URL")
155155
chk.KubernetesServiceHost = os.Getenv("KUBERNETES_SERVICE_HOST")
156156
chk.KubernetesServicePort = os.Getenv("KUBERNETES_SERVICE_PORT")
157+
chk.KubernetesServiceDNS = getOrDefault("KUBERNETES_SERVICE_DNS", "kubernetes.default.svc.cluster.local")
157158
chk.KubenurseNamespace = os.Getenv("KUBENURSE_NAMESPACE")
158159
chk.NeighbourFilter = os.Getenv("KUBENURSE_NEIGHBOUR_FILTER")
159160
neighLimit := os.Getenv("KUBENURSE_NEIGHBOUR_LIMIT")
@@ -307,3 +308,11 @@ func (s *Server) Shutdown() error {
307308

308309
return nil
309310
}
311+
312+
func getOrDefault(envVar, defaultVal string) string {
313+
if val := os.Getenv(envVar); len(val) > 0 {
314+
return val
315+
}
316+
317+
return defaultVal
318+
}

internal/servicecheck/servicecheck.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ func (c *Checker) APIServerDNS(ctx context.Context) string {
152152
return skippedStr
153153
}
154154

155-
apiurl := fmt.Sprintf("https://kubernetes.default.svc.cluster.local:%s/version", c.KubernetesServicePort)
155+
apiurl := fmt.Sprintf("https://%s:%s/version", c.KubernetesServiceDNS, c.KubernetesServicePort)
156156

157157
return c.doRequest(ctx, apiurl, false)
158158
}

internal/servicecheck/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type Checker struct {
2929
ShutdownDuration time.Duration
3030

3131
// Kubernetes API
32+
KubernetesServiceDNS string
3233
KubernetesServiceHost string
3334
KubernetesServicePort string
3435
SkipCheckAPIServerDirect bool

0 commit comments

Comments
 (0)