GoogleContainerTools / GoogleContainerTools/skaffold

Dependencies in kubectl deployments?

Open
#3,321 5 comments 1 reaction 0 assignees View on GitHub
area/ci-cd area/deploy deploy/kubectl kind/feature-request kind/todo priority/p2
Dominant language
Go
Stars
15.9k
Forks
1.7k
Avg merge
3d 9h
Merged PRs (30d)
10

Description

Is there any possibility to take care of dependencies or to enforce that separate kubectl commands are launched (instead of a single one)? I am facing the issue, that the deployment fails due to an "unable to recognize"-error:

error: unable to recognize "c:\\\\daten\\\\projects\\\\kubernetes\\\\nodejsSkaffold\\\\kubernetes-manifests\\\\4_rate_limiting.yaml": no matches for kind "KongPlugin" in version "configuration.konghq.com/v1"

See log file:
[log.txt](https://github.com/GoogleContainerTools/skaffold/files/3901708/log.txt)

This is caused due to the fact that 0_all-in-one-dbless.yaml needs to be deployed first of all (as KongPlugin is defined in this file).

### Expected behavior
Enforce seperate execution of kubectl for certain files:

1st step: execute ./kubernetes-manifests/0_all-in-one-dbless.yaml
2nd step: execute
- ./kubernetes-manifests/1_nodejs.deployment.yaml
- ./kubernetes-manifests/2_nodejs.service.deployment.yaml
- ./kubernetes-manifests/3_nodejs.ingress.deployment.yaml
- ./kubernetes-manifests/4_rate_limiting.yaml

### Actual behavior
Currently a single kubectl is executed:

kubectl --context docker-desktop create --validate=false --dry-run -oyaml -f c:\\daten\\projects\\kubernetes\nodejsSkaffold\\kubernetes-manifests\\0_all-in-one-dbless.yaml -f c:\\daten\\projects\\kubernetes\\nodejsSkaffold\\kubernetes-manifests\\1_nodejs.deployment.yaml -f c:\\daten\\projects\\kubernetes\\nodejsSkaffold\\kubernetes-manifests\\2_nodejs.service.deployment.yaml -f c:\\daten\\projects\\kubernetes\\nodejsSkaffold\\kubernetes-manifests\\3_nodejs.ingress.deployment.yaml -f c:\\daten\\projects\\kubernetes\\nodejsSkaffold\\kubernetes-manifests\\4_rate_limiting.yaml

### Information

- Skaffold version: v1.0.1
- Operating system: Windows 10
- Contents of skaffold.yaml:

apiVersion: skaffold/v1beta15
kind: Config
build:
tagPolicy:
sha256: {}
# defines where to find the code at build time and where to push the resulting image
artifacts:
- image: nodejs
context: .
docker:
noCache: true
# defines the Kubernetes manifests to deploy on each run
deploy:
kubectl:
flags:
apply:
- "--validate=false"
manifests:
# 0_all-in-one-dbless.yaml contents https://raw.githubusercontent.com/Kong/kubernetes-ingress-controller/master/deploy/single/all-in-one-dbless.yaml
- ./kubernetes-manifests/0_all-in-one-dbless.yaml
- ./kubernetes-manifests/1_nodejs.deployment.yaml
- ./kubernetes-manifests/2_nodejs.service.deployment.yaml
- ./kubernetes-manifests/3_nodejs.ingress.deployment.yaml
- ./kubernetes-manifests/4_rate_limiting.yaml

### Steps to reproduce the behavior

1. a clonable repository with the sample skaffold project
2. `skaffold `
3. ...

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.