Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 9 additions & 0 deletions charts/kvisor/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,15 @@ When storage-stats-enabled (without eBPF):
{{- toYaml $secCtx -}}
{{- end -}}

{{/*
Resolve cloud provider for --cloud-provider arg.
Only used as a fallback when controller.extraArgs.cloud-provider is not set.
*/}}
{{- define "kvisor.cloudProvider" -}}
{{- $global := .Values.global | default dict -}}
{{- dig "castai" "provider" "" $global -}}
{{- end }}

{{/*https://github.com/kubernetes/kubernetes/issues/91514#issuecomment-2209311103*/}}
{{- define "GOMEMLIMITEnv" -}}
{{- $memory := . -}}
Expand Down
7 changes: 7 additions & 0 deletions charts/kvisor/templates/controller.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,13 @@ spec:
{{- if eq .Values.agent.enabled true }}
- "--agent-enabled=true"
{{- end }}
{{- $extraArgs := .Values.controller.extraArgs | default dict }}
{{- if not (hasKey $extraArgs "cloud-provider") }}
{{- $cloudProvider := include "kvisor.cloudProvider" . }}
{{- if $cloudProvider }}
- "--cloud-provider={{ $cloudProvider }}"
{{- end }}
{{- end }}
{{- if .Values.controller.netflow.staticCIDRs.mappings }}
- "--cloud-provider-static-cidrs-file=/etc/kvisor/static-cidrs/static-cidrs.yaml"
{{- end }}
Expand Down
184 changes: 184 additions & 0 deletions charts/kvisor/tests/cloud-provider/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
suite: cloud provider configuration tests
templates:
- controller.yaml
- secret.yaml
values:
- values.yaml
tests:
- it: should not include --cloud-provider arg when neither extraArgs nor global is set
asserts:
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gcp"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gke"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aws"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=eks"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=azure"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aks"
template: controller.yaml
documentIndex: 0

- it: should use global.castai.provider as fallback
set:
global.castai.provider: eks
asserts:
- contains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=eks"
template: controller.yaml
documentIndex: 0

- it: should prefer extraArgs.cloud-provider over global
set:
global.castai.provider: eks
controller.extraArgs.cloud-provider: gcp
asserts:
- contains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gcp"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=eks"
template: controller.yaml
documentIndex: 0

- it: should use extraArgs.cloud-provider when global is not set
set:
controller.extraArgs.cloud-provider: aws
asserts:
- contains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aws"
template: controller.yaml
documentIndex: 0

- it: should use global.castai.provider as fallback for azure
set:
global.castai.provider: azure
asserts:
- contains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=azure"
template: controller.yaml
documentIndex: 0

- it: should not include --cloud-provider arg when global.castai.provider is empty string
set:
global.castai.provider: ""
asserts:
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gcp"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gke"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aws"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=eks"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=azure"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aks"
template: controller.yaml
documentIndex: 0

- it: should not include --cloud-provider arg when other extraArgs are set but neither cloud-provider nor global is set
set:
controller.extraArgs:
log-level: debug
asserts:
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gcp"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=gke"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aws"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=eks"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=azure"
template: controller.yaml
documentIndex: 0
- notContains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=aks"
template: controller.yaml
documentIndex: 0
- contains:
path: spec.template.spec.containers[0].args
content: "--log-level=debug"
template: controller.yaml
documentIndex: 0

- it: should pass through other extraArgs unchanged
set:
global.castai.provider: eks
controller.extraArgs:
log-level: debug
image-scan-enabled: "true"
asserts:
- contains:
path: spec.template.spec.containers[0].args
content: "--cloud-provider=eks"
template: controller.yaml
documentIndex: 0
- contains:
path: spec.template.spec.containers[0].args
content: "--log-level=debug"
template: controller.yaml
documentIndex: 0
- contains:
path: spec.template.spec.containers[0].args
content: "--image-scan-enabled=true"
template: controller.yaml
documentIndex: 0
9 changes: 9 additions & 0 deletions charts/kvisor/tests/cloud-provider/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
agent:
enabled: true

controller:
enabled: true

castai:
apiKey: test-api-key
clusterID: test-cluster-id