Before starting multus validation test clients, pull the client image to
all nodes. This will ensure that variations in client readiness timing
will not be affected by variations in the time nodes take to pull the
image. This is intended to reduce the number of false reports of flaky
multus networks.
Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
(cherry picked from commit 3a27cb60b3)
64 lines
2.4 KiB
YAML
64 lines
2.4 KiB
YAML
apiVersion: apps/v1
|
|
kind: DaemonSet
|
|
metadata:
|
|
name: multus-validation-test-client-{{ .ClientID }}
|
|
labels:
|
|
app: multus-validation-test-client
|
|
app.kubernetes.io/name: "client"
|
|
app.kubernetes.io/instance: "client-{{ .ClientID }}"
|
|
app.kubernetes.io/component: "client"
|
|
app.kubernetes.io/part-of: "multus-validation-test"
|
|
app.kubernetes.io/managed-by: "rook-cli"
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: multus-validation-test-client
|
|
clientID: "{{ .ClientID }}"
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: multus-validation-test-client
|
|
clientID: "{{ .ClientID }}"
|
|
annotations:
|
|
k8s.v1.cni.cncf.io/networks: "{{ .NetworksAnnotationValue }}"
|
|
spec:
|
|
# TODO: selectors, affinities, tolerations
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
containers:
|
|
{{ range $name, $address := .NetworkNamesAndAddresses }}
|
|
- name: readiness-check-web-server-{{ $name }}-addr
|
|
# use nginx image because it's already used for the web server pod and has a non-root user
|
|
image: nginxinc/nginx-unprivileged:stable-alpine
|
|
command:
|
|
- sleep
|
|
- infinity
|
|
resources: {}
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- "ALL"
|
|
# A readiness probe makes validation testing easier than investigate container logs.
|
|
# Additionally, readiness probe failures don't result in CrashLoopBackoff -- ideal here,
|
|
# where ever-longer back-offs would cause tests to run for much longer than necessary.
|
|
readinessProbe:
|
|
# Low failure threshold and high success threshold. Intended to be very sensitive to
|
|
# failures. If probe fails with any regularity, Ceph OSDs likely won't be stable.
|
|
failureThreshold: 1
|
|
successThreshold: 12
|
|
periodSeconds: 5
|
|
# Assumption: a network with a latency more than 4 seconds for this validation test's
|
|
# simple client-server response likely won't support acceptable performance for any
|
|
# production Ceph cluster.
|
|
timeoutSeconds: 4
|
|
# TODO: exec:curl works but httpGet fails. Why? need custom header?
|
|
exec:
|
|
command:
|
|
- "curl"
|
|
- "--insecure"
|
|
- "{{ $address }}:8080"
|
|
{{ end }}
|