From 3c94e2a03df35757078d0e894d53b18e007c6491 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Wed, 26 Jun 2019 15:11:24 +0200 Subject: [PATCH 1/2] Update examples to latest version Signed-off-by: David Gageot --- examples/google-cloud-build/skaffold.yaml | 2 +- examples/helm-deployment-dependencies/skaffold.yaml | 2 +- integration/examples/google-cloud-build/skaffold.yaml | 2 +- integration/examples/helm-deployment-dependencies/skaffold.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/google-cloud-build/skaffold.yaml b/examples/google-cloud-build/skaffold.yaml index c25f9c7eee5..da78e757e32 100644 --- a/examples/google-cloud-build/skaffold.yaml +++ b/examples/google-cloud-build/skaffold.yaml @@ -1,4 +1,4 @@ -apiVersion: skaffold/v1beta8 +apiVersion: skaffold/v1beta11 kind: Config build: googleCloudBuild: diff --git a/examples/helm-deployment-dependencies/skaffold.yaml b/examples/helm-deployment-dependencies/skaffold.yaml index c4af62b8002..b31ba84a420 100644 --- a/examples/helm-deployment-dependencies/skaffold.yaml +++ b/examples/helm-deployment-dependencies/skaffold.yaml @@ -1,4 +1,4 @@ -apiVersion: skaffold/v1beta5 +apiVersion: skaffold/v1beta11 kind: Config build: tagPolicy: diff --git a/integration/examples/google-cloud-build/skaffold.yaml b/integration/examples/google-cloud-build/skaffold.yaml index c25f9c7eee5..5418ebd4373 100644 --- a/integration/examples/google-cloud-build/skaffold.yaml +++ b/integration/examples/google-cloud-build/skaffold.yaml @@ -1,4 +1,4 @@ -apiVersion: skaffold/v1beta8 +apiVersion: skaffold/v1beta12 kind: Config build: googleCloudBuild: diff --git a/integration/examples/helm-deployment-dependencies/skaffold.yaml b/integration/examples/helm-deployment-dependencies/skaffold.yaml index c4af62b8002..b7a01122593 100644 --- a/integration/examples/helm-deployment-dependencies/skaffold.yaml +++ b/integration/examples/helm-deployment-dependencies/skaffold.yaml @@ -1,4 +1,4 @@ -apiVersion: skaffold/v1beta5 +apiVersion: skaffold/v1beta12 kind: Config build: tagPolicy: From ad823ee5c47b2597c91877d4704f5a15abb0e1c9 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Wed, 26 Jun 2019 15:19:16 +0200 Subject: [PATCH 2/2] Copy a helm sample to testdata for integration tests Signed-off-by: David Gageot --- .../helm-deployment/skaffold-int.yaml | 29 ------------- integration/helm_test.go | 9 ++-- integration/testdata/helm/.dockerignore | 2 + integration/testdata/helm/Dockerfile | 3 ++ .../testdata/helm/skaffold-helm/.helmignore | 21 ++++++++++ .../testdata/helm/skaffold-helm/Chart.yaml | 4 ++ .../helm/skaffold-helm/templates/_helpers.tpl | 16 ++++++++ .../skaffold-helm/templates/deployment.yaml | 29 +++++++++++++ .../helm/skaffold-helm/templates/ingress.yaml | 41 +++++++++++++++++++ .../helm/skaffold-helm/templates/service.yaml | 19 +++++++++ .../testdata/helm/skaffold-helm/values.yaml | 39 ++++++++++++++++++ .../testdata/helm/skaffold.yaml | 2 - integration/testdata/helm/static/index.html | 9 ++++ integration/testdata/helm/static/style.css | 6 +++ 14 files changed, 192 insertions(+), 37 deletions(-) delete mode 100644 integration/examples/helm-deployment/skaffold-int.yaml create mode 100644 integration/testdata/helm/.dockerignore create mode 100644 integration/testdata/helm/Dockerfile create mode 100644 integration/testdata/helm/skaffold-helm/.helmignore create mode 100644 integration/testdata/helm/skaffold-helm/Chart.yaml create mode 100644 integration/testdata/helm/skaffold-helm/templates/_helpers.tpl create mode 100644 integration/testdata/helm/skaffold-helm/templates/deployment.yaml create mode 100644 integration/testdata/helm/skaffold-helm/templates/ingress.yaml create mode 100644 integration/testdata/helm/skaffold-helm/templates/service.yaml create mode 100644 integration/testdata/helm/skaffold-helm/values.yaml rename examples/helm-deployment/skaffold-int.yaml => integration/testdata/helm/skaffold.yaml (85%) create mode 100644 integration/testdata/helm/static/index.html create mode 100644 integration/testdata/helm/static/style.css diff --git a/integration/examples/helm-deployment/skaffold-int.yaml b/integration/examples/helm-deployment/skaffold-int.yaml deleted file mode 100644 index c48da1c1480..00000000000 --- a/integration/examples/helm-deployment/skaffold-int.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This config should be used for running integration tests purpose only. -# Please use to skaffold.yaml to run this example -apiVersion: skaffold/v1beta10 -kind: Config -build: - tagPolicy: - sha256: {} - artifacts: - - image: gcr.io/k8s-skaffold/skaffold-helm -deploy: - helm: - releases: - # seed test namespace in the release name. - - name: skaffold-helm-{{.TEST_NS}} - chartPath: skaffold-helm - #wait: true - #valuesFiles: - #- helm-skaffold-values.yaml - values: - image: gcr.io/k8s-skaffold/skaffold-helm - #recreatePods will pass --recreate-pods to helm upgrade - #recreatePods: true - #overrides builds an override values.yaml file to run with the helm deploy - #overrides: - # some: - # key: someValue - #setValues get appended to the helm deploy with --set. - #setValues: - #some.key: someValue diff --git a/integration/helm_test.go b/integration/helm_test.go index 123a9ac6a5e..7e41882b2af 100644 --- a/integration/helm_test.go +++ b/integration/helm_test.go @@ -36,22 +36,19 @@ func TestHelmDeploy(t *testing.T) { t.Skip("skipping gcp only test") } - helmDir := "examples/helm-deployment" + helmDir := "testdata/helm" ns, client, deleteNs := SetupNamespace(t) // To fix #1823, we make use of env variable templating for release name env := []string{fmt.Sprintf("TEST_NS=%s", ns.Name)} depName := fmt.Sprintf("skaffold-helm-%s", ns.Name) - // Please make sure to make the same changes in skaffold.yaml if you make - // any changes to skaffold-int.yaml - overrideConfigArgs := []string{"-f", "skaffold-int.yaml"} defer func() { - skaffold.Delete(overrideConfigArgs...).InDir(helmDir).InNs(ns.Name).WithEnv(env).RunOrFail(t) + skaffold.Delete().InDir(helmDir).InNs(ns.Name).WithEnv(env).RunOrFail(t) deleteNs() }() - runArgs := append(overrideConfigArgs, "--images", "gcr.io/k8s-skaffold/skaffold-helm") + runArgs := []string{"--images", "gcr.io/k8s-skaffold/skaffold-helm"} skaffold.Deploy(runArgs...).InDir(helmDir).InNs(ns.Name).WithEnv(env).RunOrFailOutput(t) diff --git a/integration/testdata/helm/.dockerignore b/integration/testdata/helm/.dockerignore new file mode 100644 index 00000000000..2928190a69c --- /dev/null +++ b/integration/testdata/helm/.dockerignore @@ -0,0 +1,2 @@ +skaffold-helm +*.swp diff --git a/integration/testdata/helm/Dockerfile b/integration/testdata/helm/Dockerfile new file mode 100644 index 00000000000..c1c9be3e29e --- /dev/null +++ b/integration/testdata/helm/Dockerfile @@ -0,0 +1,3 @@ +FROM nginx:stable + +COPY static /usr/share/nginx/html/ diff --git a/integration/testdata/helm/skaffold-helm/.helmignore b/integration/testdata/helm/skaffold-helm/.helmignore new file mode 100644 index 00000000000..f0c13194444 --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/integration/testdata/helm/skaffold-helm/Chart.yaml b/integration/testdata/helm/skaffold-helm/Chart.yaml new file mode 100644 index 00000000000..f4fcfadbec9 --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: A Helm chart for Kubernetes +name: skaffold-helm +version: 0.1.0 diff --git a/integration/testdata/helm/skaffold-helm/templates/_helpers.tpl b/integration/testdata/helm/skaffold-helm/templates/_helpers.tpl new file mode 100644 index 00000000000..537a7399829 --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/templates/_helpers.tpl @@ -0,0 +1,16 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "skaffold-helm.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "skaffold-helm.fullname" -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/integration/testdata/helm/skaffold-helm/templates/deployment.yaml b/integration/testdata/helm/skaffold-helm/templates/deployment.yaml new file mode 100644 index 00000000000..ad9894383e0 --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/templates/deployment.yaml @@ -0,0 +1,29 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ .Release.Name }} + labels: + app: {{ template "skaffold-helm.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + template: + metadata: + labels: + app: {{ template "skaffold-helm.name" . }} + release: {{ .Release.Name }} + spec: + containers: + - name: {{ .Chart.Name }} + image: {{ .Values.image }} + imagePullPolicy: {{ .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.internalPort }} + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} diff --git a/integration/testdata/helm/skaffold-helm/templates/ingress.yaml b/integration/testdata/helm/skaffold-helm/templates/ingress.yaml new file mode 100644 index 00000000000..fe1edab0529 --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/templates/ingress.yaml @@ -0,0 +1,41 @@ +{{- if .Values.ingress.enabled -}} +{{- $serviceName := include "skaffold-helm.fullname" . -}} +{{- $servicePort := .Values.service.externalPort -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: {{ template "skaffold-helm.fullname" . }} + labels: + app: {{ template "skaffold-helm.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + {{- range $key, $value := .Values.ingress.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + rules: + {{- if .Values.ingress.hosts }} + {{- range $host := .Values.ingress.hosts }} + - host: {{ $host }} + http: + paths: + - path: / + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- else }} + - http: + paths: + - path: / + backend: + serviceName: {{ $serviceName }} + servicePort: {{ $servicePort }} + {{- end -}} + {{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/integration/testdata/helm/skaffold-helm/templates/service.yaml b/integration/testdata/helm/skaffold-helm/templates/service.yaml new file mode 100644 index 00000000000..da7b3ef867b --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/templates/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ template "skaffold-helm.fullname" . }} + labels: + app: {{ template "skaffold-helm.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.externalPort }} + targetPort: {{ .Values.service.internalPort }} + protocol: TCP + name: {{ .Values.service.name }} + selector: + app: {{ template "skaffold-helm.name" . }} + release: {{ .Release.Name }} diff --git a/integration/testdata/helm/skaffold-helm/values.yaml b/integration/testdata/helm/skaffold-helm/values.yaml new file mode 100644 index 00000000000..f17c9989b5c --- /dev/null +++ b/integration/testdata/helm/skaffold-helm/values.yaml @@ -0,0 +1,39 @@ +# Default values for skaffold-helm. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +replicaCount: 1 +image: nginx:stable +# This is the helm convention on declaring images +# image: +# repository: nginx +# tag: stable +# pullPolicy: IfNotPresent +service: + name: nginx + type: ClusterIP + externalPort: 80 + internalPort: 80 +ingress: + enabled: true + # Used to create an Ingress record. + hosts: + # - chart-example.local + annotations: + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + tls: + # Secrets must be manually created in the namespace. + # - secretName: chart-example-tls + # hosts: + # - chart-example.local +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi diff --git a/examples/helm-deployment/skaffold-int.yaml b/integration/testdata/helm/skaffold.yaml similarity index 85% rename from examples/helm-deployment/skaffold-int.yaml rename to integration/testdata/helm/skaffold.yaml index c48da1c1480..0cd1afd74a4 100644 --- a/examples/helm-deployment/skaffold-int.yaml +++ b/integration/testdata/helm/skaffold.yaml @@ -1,5 +1,3 @@ -# This config should be used for running integration tests purpose only. -# Please use to skaffold.yaml to run this example apiVersion: skaffold/v1beta10 kind: Config build: diff --git a/integration/testdata/helm/static/index.html b/integration/testdata/helm/static/index.html new file mode 100644 index 00000000000..29779438762 --- /dev/null +++ b/integration/testdata/helm/static/index.html @@ -0,0 +1,9 @@ + + + Skaffold Helm + + + +

Hello world!

+ + diff --git a/integration/testdata/helm/static/style.css b/integration/testdata/helm/static/style.css new file mode 100644 index 00000000000..c6b88d966a2 --- /dev/null +++ b/integration/testdata/helm/static/style.css @@ -0,0 +1,6 @@ +h1 { + color: #27aedb; + text-align: center; + margin-top: 40vh; + font-size: 120pt; +}