Selecting multiple profiles doesn't appear to work #8379
Closed
Description
Expected behavior
When executing skaffold run -p servicedeps,airflow
I would expect both profiles to be built and deployed.
Actual behavior
I might be missing something about how this would be expected to work, but I would expect the releases of both profiles to be deployed, where instead I'm only seeing the last item in the list being deployed. I also tried using a patch instead, but that doesn't seem to have worked either.
Information
- Skaffold version:
skaffold version
doesn't seem to have any output for whatever reason, but I'm using the hombrew install manifest located athttps://ghcr.io/v2/homebrew/core/skaffold/manifests/2.1.0
- Operating system: macOS 13.1 (22C65)
- Installed via: Homebrew
- Contents of skaffold.yaml:
apiVersion: skaffold/v3
kind: Config
metadata:
name: backend
# Release configuration that is common to our helm managed services.
.common-service-helm-config: &common-service-helm-config
upgradeOnChange: true
# Release configuration that is common to all of our services.
.common-service-release-config: &common-service-release-config
<<: *common-service-helm-config
remoteChart: syndio/syndio-service
version: 1.13.0
# Service dependencies that are deployed in the initial setup phase and are typically required
# for local development to run.
.release-servicedeps: &release-servicedeps
releases:
- &servicedeps
name: servicedeps
remoteChart: syndio/syndio-service-deps
version: 0.6.0
wait: true
upgradeOnChange: false
valuesFiles:
- helm/shared-values/development/service-deps.values.yaml
# The list of all releases aside from service dependencies.
.all-releases: &all-releases
releases:
- *servicedeps
- &accountsapi
name: accountsapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- accounts/deploy/accountsapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &permissionsapi
name: permissionsapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- permissions/deploy/permissionsapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &payeq-jobs
name: payeq-jobs
remoteChart: syndio/payeq-jobs
version: 0.12.0
<<: *common-service-helm-config
valuesFiles:
- apiv2/deploy/ce/values/config/development.values.yaml
- apiv2/deploy/ce/values/jobs/development.values.yaml
setValueTemplates:
image.tag: "{{.IMAGE_TAG_backend_python}}"
<<: *env-value-overrides
- &apiv2
name: apiv2
<<: *common-service-release-config
valuesFiles:
- apiv2/deploy/ce/values/config/development.values.yaml
- apiv2/deploy/ce/values/api/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_python}}"
<<: *env-value-overrides
- &admin
name: admin
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- admin/deploy/admin/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &apiv3
name: apiv3
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- apiv3/deploy/apiv3/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &gateway
name: gateway
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- gateway/deploy/gateway/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &oppeqapi
name: oppeqapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- oppeq/deploy/oppeqapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &oppeqliteapi:
name: oppeqliteapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- oppeqlite/deploy/oppeqliteapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &payeqapi
name: payeqapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- payeq/deploy/payeqapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &payeqqr
name: payeqqr
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- payeq/deploy/payeqqr/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &orchestrationapi
name: orchestrationapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- orchestrationapi/deploy/orchestrationapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &statsapi
name: statsapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- stats/deploy/statsapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &pubsubrouter
name: pubsubrouter
<<: *common-service-release-config
valuesFiles:
- apiv2/deploy/ce/values/config/development.values.yaml
- apiv2/deploy/ce/values/pubsubrouter/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_python}}"
<<: *env-value-overrides
- &pubsubuploader
name: pubsubuploader
<<: *common-service-release-config
valuesFiles:
- apiv2/deploy/ce/values/config/development.values.yaml
- apiv2/deploy/ce/values/pubsubuploader/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_python}}"
<<: *env-value-overrides
- &pubsubworker
name: pubsubworker
<<: *common-service-release-config
valuesFiles:
- apiv2/deploy/ce/values/config/development.values.yaml
- apiv2/deploy/ce/values/pubsubworker/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_python}}"
<<: *env-value-overrides
- &stats_cloudfunctions
name: statscloudfunctions
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- stats/deploy/cloud_functions/values/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_python}}"
<<: *env-value-overrides
- &logsapi
name: logsapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- logging/deploy/logsapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &oppeqliteqr
name: oppeqliteqr
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- oppeqlite/deploy/oppeqliteqr/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
# The set of default releases to include when initializing the local environment
# for the first time.
.release-defaults: &release-defaults
releases:
- *servicedeps
- *accountsapi
- *permissionsapi
- *payeq-jobs
- *apiv2
- *admin
- *apiv3
- *gateway
- *oppeqapi
- *oppeqliteapi
- *payeqapi
- *payeqqr
- *orchestrationapi
- *statsapi
# The set of optional releases that can be enabled or disabled as needed and are not required
# for core functionality.
.release-optional: &release-optional
releases:
- *pubsubrouter
- *pubsubuploader
- *pubsubworker
- *logsapi
- *oppeqliteqr
# Services that are optional, but that depend on Google Cloud infrastructure in some way
# and require GCP authentication to a live GCP project in order to function.
# To use these services, assign the contents of a GCP service account key to the
# variable DEV_GCLOUD_SA_KEY (documented above) and re-deploy with the needs-gcp profile
# enabled
.releases-needing-gcp-auth: &releases-needing-gcp-auth
releases:
- &ingestqr
name: ingestqr
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- ingest/deploy/ingestqr/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
- &encryptionapi
name: encryptionapi
<<: *common-service-release-config
valuesFiles:
- helm/shared-values/development/values.yaml
- encryption/deploy/encryptionapi/development.values.yaml
setValueTemplates:
app.image.tag: "{{.IMAGE_TAG_backend_go}}"
<<: *env-value-overrides
build:
local:
push: false
useBuildkit: true
concurrency: 0 # A value of 0 means no limit
tagPolicy:
gitCommit:
variant: AbbrevCommitSha
artifacts:
# We use a custom build step for building the go services which involves compiling
# the binaries on the host to take advantage of the go build cache.
- &backend_go
image: backend-go
custom:
buildCommand: ./development/scripts/go_build.sh
dependencies:
paths:
- "*/**/*.go"
- "*/**/config.default.yaml"
- "*/**/scripts/*"
ignore:
- "apiv2/"
- "development"
- &backend_python
image: backend-python
context: ./apiv2
docker:
dockerfile: ./deploy/ce/Dockerfile
- &backend_cloudfunctions
image: backend-cloudfunctions
context: .
docker:
dockerfile: ./stats/deploy/cloud_functions/dev/Dockerfile
deploy:
kubeContext: docker-desktop
helm:
<<: *release-defaults
profiles:
- name: all
deploy:
helm:
<<: *all-releases
- name: airflow
deploy:
helm:
releases:
- name: airflow
remoteChart: airflow-helm/airflow
version: 8.6.1
upgradeOnChange: false
valuesFiles:
- helm/shared-values/development/airflow.yaml
- name: needs-gcp
deploy:
helm:
<<: *releases-needing-gcp-auth
- name: servicedeps
patches:
- op: replace
path: /build/artifacts
value: []
deploy:
helm:
releases:
- *servicedeps
- name: payeq-core
deploy:
helm:
releases:
- *accountsapi
- *permissionsapi
- *payeq-jobs
- *apiv2
- *admin
- *apiv3
- *gateway
- *payeqapi
- name: accounts
build:
artifacts:
- *backend_go
deploy:
helm:
releases:
- *accountsapi
- *permissionsapi
- name: oppeq
build:
artifacts:
- *backend_go
deploy:
helm:
releases:
- *oppeqapi
- *oppeqliteapi
- *oppeqliteqr
- *stats_cloudfunctions
- name: python-workers
build:
artifacts:
- *backend_python
deploy:
helm:
releases:
- *pubsubrouter
- *pubsubuploader
- *pubsubworker
- name: python-services
build:
artifacts:
- *backend_python
deploy:
helm:
releases:
- *payeq-jobs
- *apiv2
portForward:
- resourceType: service
resourceName: syndio-service-deps-postgres
port: 5432
- resourceType: service
resourceName: syndio-service-deps-redis
port: 6379
- resourceType: service
resourceName: syndio-service-deps-fake-gcs
port: 4443
- resourceType: service
resourceName: syndio-service-deps-pubsub
port: 8085
- resourceType: service
resourceName: payeq-gateway
port: 80
localPort: 3000
Steps to reproduce the behavior
- Run Docker Desktop local k8s cluster on macOS
- Create a
skaffold.yaml
with multiple profiles similar to the one I'm using - Run
skaffold run
with two of those profiles enabled - See only the last profile listed being released to the cluster