Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Add tests for operator-wandb #335

Closed
wants to merge 24 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
9b6c273
fix: Add tests for operator-wandb
danielpanzella Feb 2, 2025
e3ff218
fix: Paths for testing jobs
danielpanzella Feb 2, 2025
d32b209
fix: test older mysql version
danielpanzella Feb 2, 2025
4310105
fix: revert mysql version change, and try running tests on ubuntu 22.04
danielpanzella Feb 2, 2025
b34822a
fix: increase the timeout for helm install in tests
danielpanzella Feb 2, 2025
4d02fef
fix: try adding a startup probe to mysql
danielpanzella Feb 2, 2025
b1a3651
fix: test removing security settings
danielpanzella Feb 3, 2025
95a4e07
fix: test removing security settings
danielpanzella Feb 3, 2025
330ff9d
fix: try and older version of mysql
danielpanzella Feb 3, 2025
407728b
fix: revert some mysql changes and remove multiple k8s versions until…
danielpanzella Feb 3, 2025
19c5e9e
fix: try updating the userid in podsecurity
danielpanzella Feb 3, 2025
238b37f
fix: try allowPrivilegeEscalation instead.
danielpanzella Feb 3, 2025
5626cc2
fix: try tcp port as health check
danielpanzella Feb 3, 2025
f0dcd57
fix: Add back previous k8s versions and add a config for newer features
danielpanzella Feb 3, 2025
a7fd2fc
fix: Fix invalid cluster name in GA
danielpanzella Feb 3, 2025
8bfe0ab
fix: try to use larger runner
danielpanzella Feb 3, 2025
60526d8
fix: reduce resource requests
danielpanzella Feb 3, 2025
1467724
fix: reformat requests
danielpanzella Feb 3, 2025
c4ba5be
fix: one more try
danielpanzella Feb 3, 2025
1e69ca8
fix: explicitly request less resources
danielpanzella Feb 3, 2025
babcaa4
Merge branch 'refs/heads/main' into danielpanzella/operator-wandb-tes…
danielpanzella Feb 4, 2025
cf08efa
fix: WIP on fixing redis and adding more test scenarios
danielpanzella Feb 5, 2025
de08d37
fix: re-add k8s versions and 3 configs, bufstream is still not working
danielpanzella Feb 5, 2025
48feb4c
Merge branch 'main' into danielpanzella/operator-wandb-testing
danielpanzella Feb 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Lint Charts

on:
pull_request:
paths: charts/**

jobs:
lint-test:
runs-on: ubuntu-latest
environment: Helm Charts
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Set up Helm
uses: azure/[email protected]
with:
version: v3.16.3

# Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
# yamllint (https://github.com/adrienverge/yamllint) which require Python
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Set up chart-testing
uses: helm/[email protected]
with:
version: v3.11.0

- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --config ct.yaml)
if [[ -n "$changed" ]]; then
echo "::set-output name=changed::true"
fi

- name: Run chart-testing (lint)
run: ct lint --config ct.yaml
70 changes: 70 additions & 0 deletions .github/workflows/test-operator-wandb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Test operator-wandb Chart

on:
pull_request:
paths: charts/operator-wandb/**

jobs:
test:
name: Test Chart
strategy:
matrix:
k8s-version: ["v1.32.1", "v1.31.4", "v1.30.8"]
configuration: ["default", "separate-pods""runs-v2-bufstream"]
runs-on: ubuntu-latest
environment: Helm Charts
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Set up Helm
uses: azure/[email protected]
with:
version: v3.16.3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Set up chart-testing
uses: helm/[email protected]
with:
version: v3.11.0

- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --config ct.yaml)
if [[ -n "$changed" ]]; then
echo "::set-output name=changed::true"
fi

- name: Create kind cluster
uses: helm/[email protected]
with:
version: v0.26.0
cluster_name: chart-testing-${{ matrix.k8s-version }}-${{ matrix.configuration }}
node_image: kindest/node:${{ matrix.k8s-version }}
if: env.ACT || steps.list-changed.outputs.changed == 'true'

- name: Install Minio
run: kubectl --context kind-chart-testing-${{ matrix.k8s-version }}-${{ matrix.configuration }} apply -f test-configs/minio/default.yaml
if: env.ACT || steps.list-changed.outputs.changed == 'true'

- name: Wait for Minio to be Ready
run: kubectl --context kind-chart-testing-${{ matrix.k8s-version }}-${{ matrix.configuration }} -n minio wait --for=condition=Ready pod/minio --timeout=300s
if: env.ACT || steps.list-changed.outputs.changed == 'true'

- name: Run chart-testing (install)
env:
LICENSE: ${{ secrets.LICENSE }}
if: steps.list-changed.outputs.changed == 'true'
run: |
ct install \
--charts ./charts/operator-wandb \
--config ct.yaml \
--helm-extra-args '--kube-context kind-chart-testing-${{ matrix.k8s-version }}-${{ matrix.configuration }}' \
--helm-extra-set-args '--values test-configs/operator-wandb/${{ matrix.configuration }}.yaml --set=license=$LICENSE'
54 changes: 54 additions & 0 deletions .github/workflows/test-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# TODO(dpanzella): Uncomment this file when the ready for automated tests of the operator chart

#name: Test operator Chart
#
#on:
# pull_request:
# paths: charts/operator/**
#
#jobs:
# test:
# runs-on: ubuntu-latest
# environment: Helm Charts
# steps:
# - name: Checkout
# uses: actions/checkout@v2
# with:
# fetch-depth: 0
#
# - name: Set up Helm
# uses: azure/[email protected]
# with:
# version: v3.16.3
#
# # Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
# # yamllint (https://github.com/adrienverge/yamllint) which require Python
# - name: Set up Python
# uses: actions/setup-python@v4
# with:
# python-version: "3.10"
#
# - name: Set up chart-testing
# uses: helm/[email protected]
# with:
# version: v3.11.0
#
# - name: Run chart-testing (list-changed)
# id: list-changed
# run: |
# changed=$(ct list-changed --config ct.yaml)
# if [[ -n "$changed" ]]; then
# echo "::set-output name=changed::true"
# fi
#
# - name: Create kind cluster
# uses: helm/[email protected]
# with:
# version: v0.20.0
# if: env.ACT || steps.list-changed.outputs.changed == 'true'
#
# - name: Run chart-testing (install)
# env:
# LICENSE: ${{ secrets.LICENSE }}
# if: steps.list-changed.outputs.changed == 'true'
# run: ct install --charts ./charts/operator --config ct.yaml --helm-extra-set-args --set=license=$LICENSE
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
name: Lint and Test Charts
name: Test wandb Chart

on: pull_request
on:
pull_request:
paths: charts/wandb/**

jobs:
lint-test:
test:
runs-on: ubuntu-latest
environment: Helm Charts
steps:
Expand Down Expand Up @@ -37,9 +39,6 @@ jobs:
echo "::set-output name=changed::true"
fi
- name: Run chart-testing (lint)
run: ct lint --config ct.yaml

- name: Create kind cluster
uses: helm/[email protected]
with:
Expand Down
2 changes: 1 addition & 1 deletion charts/operator-wandb/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: v2
name: operator-wandb
description: A Helm chart for deploying W&B to Kubernetes
type: application
version: 0.25.0
version: 0.25.1
appVersion: 1.0.0
icon: https://wandb.ai/logo.svg

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ storage:
{{- end }}
{{- if .Values.storage.s3.accessKeyId }}
access_key_id:
string: {{ .Values.storage.s3.accessKeyId | quote }}
string: {{ tpl .Values.storage.s3.accessKeyId . | quote }}
secret_access_key:
path: /config/secrets/storage/secret_access_key
{{- end }}
Expand All @@ -40,7 +40,7 @@ storage:
etcd:
addresses:
{{- range .Values.metadata.etcd.addresses }}
- host: {{ .host | quote }}
- host: {{ tpl .host $ | quote }}
port: {{ .port }}
{{- end }}
{{- with .Values.metadata.etcd.tls }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,9 @@ spec:
{{- if and (eq .Values.storage.use "s3") (.Values.storage.s3.accessKeyId) }}
- name: storage
secret:
secretName: {{ .Values.storage.s3.secretName }}
secretName: {{ tpl .Values.storage.s3.secretName . }}
items:
- key: secret_access_key
- key: {{ tpl .Values.storage.s3.secretKeyName . }}
path: secret_access_key
{{- end }}
{{- if and (eq .Values.storage.use "gcs") (.Values.storage.gcs.secretName) }}
Expand Down
20 changes: 10 additions & 10 deletions charts/operator-wandb/charts/mysql/templates/statefulset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,17 +59,17 @@ spec:
{{- include "mysql.extraEnv" (dict "global" .Values.global "local" .Values) | nindent 12 }}
{{- include "wandb.extraEnvFrom" (dict "root" $ "local" .) | nindent 12 }}
livenessProbe:
exec:
command:
- sh
- -c
- "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
tcpSocket:
port: 3306
readinessProbe:
exec:
command:
- sh
- -c
- "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}"
tcpSocket:
port: 3306
startupProbe:
initialDelaySeconds: 20
periodSeconds: 5
failureThreshold: 60
tcpSocket:
port: 3306
volumeMounts:
- name: data
mountPath: /var/lib/mysql
Expand Down
4 changes: 2 additions & 2 deletions charts/operator-wandb/charts/mysql/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ pod:
annotations: {}
securityContext:
runAsNonRoot: true
runAsUser: 1000
runAsUser: 999
runAsGroup: 0
fsGroup: 1000
fsGroup: 999
fsGroupChangePolicy: "OnRootMismatch"
seccompProfile:
type: ""
Expand Down
2 changes: 1 addition & 1 deletion charts/operator-wandb/charts/stackdriver/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ stackdriver:
# Filter objects: project, group.id, resource.type, resource.labels.[KEY], metric.type, metric.labels.[KEY]
# https://cloud.google.com/monitoring/api/v3/filters
filters:
[]
- cloudsql.googleapis.com/database:metadata.user_labels."customer-ns"="dpanzella-test-gcp"
# - 'pubsub.googleapis.com/subscription:resource.labels.subscription_id=monitoring.regex.full_match("us-west4.*my-team.*")'
# The frequency to request
interval: "5m"
Expand Down
2 changes: 1 addition & 1 deletion charts/operator-wandb/templates/_redis.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Return name of secret where redis information is stored
{{- if .Values.global.redis.secret.secretName -}}
{{ .Values.global.redis.secret.secretName }}
{{- else -}}
{{- print .Release.Name "-redis-secret" -}}
{{- print .Release.Name "-redis" -}}
{{- end -}}
{{- end -}}

Expand Down
6 changes: 2 additions & 4 deletions charts/operator-wandb/templates/redis.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
{{- if not .Values.redis.install }}
{{- $secretName := (include "wandb.redis.passwordSecret" .) }}
{{- if not .Values.global.redis.secret.secretName }}
apiVersion: v1
kind: Secret
metadata:
name: "{{ $secretName }}"
name: "{{ include "wandb.redis.passwordSecret" . }}"
labels:
{{- include "wandb.commonLabels" . | nindent 4 }}
data:
REDIS_PASSWORD: {{ include "wandb.redis.password" . | b64enc }}
REDIS_CA_CERT: {{ include "wandb.redis.caCert" . | b64enc }}
{{- end }}

---
apiVersion: v1
kind: ConfigMap
Expand Down
23 changes: 23 additions & 0 deletions charts/operator-wandb/templates/tests/test-connection.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "wandb.fullname" . }}-test-connection"
labels:
{{- include "wandb.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wandb-verify
image: python:3.10
env:
- name: WANDB_BASE_URL
value: "http://{{ .Release.Name }}-app:8080"
- name: WANDB_API_KEY
value: "test-api-key"
# wandb verify is terribly flaky, there's a PR up to fix it until then we try 3 times
command:
- sh
- -c
- "pip install wandb==0.17.8 && (wandb verify || (sleep 10 && wandb verify) || (sleep 10 && wandb verify))"
restartPolicy: Never
14 changes: 8 additions & 6 deletions charts/operator-wandb/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ global:
redis:
host: ""
port: 6379
password: ""
password: "redis-password"
parameters: {}
caCert: ""
secret:
Expand Down Expand Up @@ -323,7 +323,9 @@ redis:
nameOverride: "redis"
architecture: standalone
auth:
enabled: false
enabled: true
existingSecret: '{{ include "wandb.redis.passwordSecret" . }}'
existingSecretPasswordKey: '{{ .Values.global.redis.secret.secretKey }}'
metrics:
enabled: false
service:
Expand Down Expand Up @@ -526,7 +528,7 @@ glue:
"{{ .Release.Name }}-mysql": "secretRef"
"{{ .Release.Name }}-bucket-configmap": "configMapRef"
"{{ .Release.Name }}-mysql-configmap": "configMapRef"
"{{ .Release.Name }}-redis-secret": "secretRef"
'{{ include "wandb.redis.passwordSecret" . }}': "secretRef"
"{{ .Release.Name }}-redis-configmap": "configMapRef"
"{{ .Release.Name }}-global-secret": "secretRef"
"{{ .Release.Name }}-gorilla-secret": "secretRef"
Expand Down Expand Up @@ -622,7 +624,7 @@ glue:
optional: true
- name: redis-ca
secret:
secretName: "{{ .Release.Name }}-redis-secret"
secretName: '{{ include "wandb.redis.passwordSecret" . }}'
items:
- key: REDIS_CA_CERT
path: redis_ca.pem
Expand Down Expand Up @@ -717,7 +719,7 @@ api:
"{{ .Release.Name }}-mysql": "secretRef"
"{{ .Release.Name }}-bucket-configmap": "configMapRef"
"{{ .Release.Name }}-mysql-configmap": "configMapRef"
"{{ .Release.Name }}-redis-secret": "secretRef"
'{{ include "wandb.redis.passwordSecret" . }}': "secretRef"
"{{ .Release.Name }}-redis-configmap": "configMapRef"
"{{ .Release.Name }}-kafka-configmap": "configMapRef"
"{{ .Release.Name }}-global-secret": "secretRef"
Expand Down Expand Up @@ -819,7 +821,7 @@ api:
optional: true
- name: redis-ca
secret:
secretName: "{{ .Release.Name }}-redis-secret"
secretName: '{{ include "wandb.redis.passwordSecret" . }}'
items:
- key: REDIS_CA_CERT
path: redis_ca.pem
Expand Down
Loading
Loading