From be83f63f26095e9805903303f32295eb1565a4d9 Mon Sep 17 00:00:00 2001 From: Guillaume Lours <705411+glours@users.noreply.github.com> Date: Mon, 26 May 2025 15:16:40 +0200 Subject: [PATCH] add e2e tests for bridge convert and transformers ls commands Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com> --- pkg/e2e/bridge_test.go | 59 +++++++++++++++++++ pkg/e2e/fixtures/bridge/Dockerfile | 18 ++++++ pkg/e2e/fixtures/bridge/compose.yaml | 31 ++++++++++ .../fixtures/bridge/expected-helm/Chart.yaml | 12 ++++ .../templates/0-bridge-namespace.yaml | 8 +++ .../templates/bridge-configs.yaml | 12 ++++ .../templates/my-secrets-secret.yaml | 13 ++++ .../private-network-network-policy.yaml | 24 ++++++++ .../public-network-network-policy.yaml | 24 ++++++++ .../templates/serviceA-deployment.yaml | 45 ++++++++++++++ .../templates/serviceA-expose.yaml | 19 ++++++ .../templates/serviceA-service.yaml | 25 ++++++++ .../templates/serviceB-deployment.yaml | 46 +++++++++++++++ .../templates/serviceB-expose.yaml | 19 ++++++ .../templates/serviceB-service.yaml | 21 +++++++ .../fixtures/bridge/expected-helm/values.yaml | 13 ++++ .../base/0-bridge-namespace.yaml | 8 +++ .../base/bridge-configs.yaml | 12 ++++ .../base/kustomization.yaml | 16 +++++ .../base/my-secrets-secret.yaml | 13 ++++ .../base/private-network-network-policy.yaml | 24 ++++++++ .../base/public-network-network-policy.yaml | 24 ++++++++ .../base/serviceA-deployment.yaml | 44 ++++++++++++++ .../base/serviceA-expose.yaml | 18 ++++++ .../base/serviceA-service.yaml | 23 ++++++++ .../base/serviceB-deployment.yaml | 45 ++++++++++++++ .../base/serviceB-expose.yaml | 18 ++++++ .../base/serviceB-service.yaml | 19 ++++++ .../overlays/desktop/kustomization.yaml | 9 +++ .../overlays/desktop/serviceA-service.yaml | 13 ++++ .../overlays/desktop/serviceB-service.yaml | 9 +++ pkg/e2e/fixtures/bridge/my-config.txt | 1 + pkg/e2e/fixtures/bridge/not-so-secret.txt | 1 + 33 files changed, 686 insertions(+) create mode 100644 pkg/e2e/bridge_test.go create mode 100644 pkg/e2e/fixtures/bridge/Dockerfile create mode 100644 pkg/e2e/fixtures/bridge/compose.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/Chart.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/0-bridge-namespace.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/bridge-configs.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/my-secrets-secret.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/private-network-network-policy.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/public-network-network-policy.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-deployment.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-expose.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-service.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-deployment.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-expose.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-service.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-helm/values.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/0-bridge-namespace.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/bridge-configs.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/kustomization.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/my-secrets-secret.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/private-network-network-policy.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/public-network-network-policy.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-deployment.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-expose.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-service.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-deployment.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-expose.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-service.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/kustomization.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceA-service.yaml create mode 100755 pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceB-service.yaml create mode 100644 pkg/e2e/fixtures/bridge/my-config.txt create mode 100644 pkg/e2e/fixtures/bridge/not-so-secret.txt diff --git a/pkg/e2e/bridge_test.go b/pkg/e2e/bridge_test.go new file mode 100644 index 000000000..6f8e10600 --- /dev/null +++ b/pkg/e2e/bridge_test.go @@ -0,0 +1,59 @@ +/* + Copyright 2020 Docker Compose CLI authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package e2e + +import ( + "fmt" + "strings" + "testing" + + "gotest.tools/v3/assert" +) + +func TestConvertAndTransformList(t *testing.T) { + c := NewParallelCLI(t) + + const projectName = "bridge" + tmpDir := t.TempDir() + + t.Run("kubernetes manifests", func(t *testing.T) { + kubedir := fmt.Sprintf("%s/kubernetes", tmpDir) + res := c.RunDockerComposeCmd(t, "-f", "./fixtures/bridge/compose.yaml", "--project-name", projectName, "bridge", "convert", + "--output", kubedir) + assert.NilError(t, res.Error) + assert.Equal(t, res.ExitCode, 0) + res = c.RunCmd(t, "diff", "-r", kubedir, "./fixtures/bridge/expected-kubernetes") + assert.NilError(t, res.Error, res.Combined()) + }) + + t.Run("helm charts", func(t *testing.T) { + helmDir := fmt.Sprintf("%s/helm", tmpDir) + res := c.RunDockerComposeCmd(t, "-f", "./fixtures/bridge/compose.yaml", "--project-name", projectName, "bridge", "convert", + "--output", helmDir, "--transformation", "docker/compose-bridge-helm") + assert.NilError(t, res.Error) + assert.Equal(t, res.ExitCode, 0) + res = c.RunCmd(t, "diff", "-r", helmDir, "./fixtures/bridge/expected-helm") + assert.NilError(t, res.Error, res.Combined()) + }) + + t.Run("list transformers images", func(t *testing.T) { + res := c.RunDockerComposeCmd(t, "--project-name", projectName, "bridge", "transformations", + "ls") + assert.Assert(t, strings.Contains(res.Stdout(), "docker/compose-bridge-helm"), res.Combined()) + assert.Assert(t, strings.Contains(res.Stdout(), "docker/compose-bridge-kubernetes"), res.Combined()) + }) +} diff --git a/pkg/e2e/fixtures/bridge/Dockerfile b/pkg/e2e/fixtures/bridge/Dockerfile new file mode 100644 index 000000000..4cdd98577 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/Dockerfile @@ -0,0 +1,18 @@ +# Copyright 2020 Docker Compose CLI authors + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM alpine +ENV ENV_FROM_DOCKERFILE=1 +EXPOSE 8081 +CMD ["echo", "Hello from Dockerfile"] diff --git a/pkg/e2e/fixtures/bridge/compose.yaml b/pkg/e2e/fixtures/bridge/compose.yaml new file mode 100644 index 000000000..4fbd9bd94 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/compose.yaml @@ -0,0 +1,31 @@ +services: + serviceA: + image: alpine + build: . + ports: + - 80:8080 + networks: + - private-network + configs: + - source: my-config + target: /etc/my-config1.txt + serviceB: + image: alpine + build: . + ports: + - 8081:8082 + secrets: + - my-secrets + networks: + - private-network + - public-network +configs: + my-config: + file: my-config.txt +secrets: + my-secrets: + file: not-so-secret.txt +networks: + private-network: + internal: true + public-network: {} diff --git a/pkg/e2e/fixtures/bridge/expected-helm/Chart.yaml b/pkg/e2e/fixtures/bridge/expected-helm/Chart.yaml new file mode 100755 index 000000000..44a000011 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/Chart.yaml @@ -0,0 +1,12 @@ +#! Chart.yaml +apiVersion: v2 +name: bridge +version: 0.0.1 +# kubeVersion: >= 1.29.1 +description: A generated Helm Chart for bridge generated via compose-bridge. +type: application +keywords: + - bridge +appVersion: 'v0.0.1' +sources: +annotations: diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/0-bridge-namespace.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/0-bridge-namespace.yaml new file mode 100755 index 000000000..40e4b0e23 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/0-bridge-namespace.yaml @@ -0,0 +1,8 @@ +#! 0-bridge-namespace.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Namespace +metadata: + name: bridge + labels: + com.docker.compose.project: bridge diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/bridge-configs.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/bridge-configs.yaml new file mode 100755 index 000000000..822d2e076 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/bridge-configs.yaml @@ -0,0 +1,12 @@ +#! bridge-configs.yaml +# Generated code, do not edit +apiVersion: v1 +kind: ConfigMap +metadata: + name: bridge + namespace: bridge + labels: + com.docker.compose.project: bridge +data: + my-config: | + My config file diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/my-secrets-secret.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/my-secrets-secret.yaml new file mode 100755 index 000000000..63659713b --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/my-secrets-secret.yaml @@ -0,0 +1,13 @@ +#! my-secrets-secret.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Secret +metadata: + name: my-secrets + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.secret: my-secrets +data: + my-secrets: bm90LXNlY3JldA== +type: Opaque diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/private-network-network-policy.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/private-network-network-policy.yaml new file mode 100755 index 000000000..0300049be --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/private-network-network-policy.yaml @@ -0,0 +1,24 @@ +#! private-network-network-policy.yaml +# Generated code, do not edit +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: private-network-network-policy + namespace: {{ .Values.namespace }} +spec: + podSelector: + matchLabels: + com.docker.compose.network.private-network: "true" + policyTypes: + - Ingress + - Egress + ingress: + - from: + - podSelector: + matchLabels: + com.docker.compose.network.private-network: "true" + egress: + - to: + - podSelector: + matchLabels: + com.docker.compose.network.private-network: "true" diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/public-network-network-policy.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/public-network-network-policy.yaml new file mode 100755 index 000000000..da042b3e8 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/public-network-network-policy.yaml @@ -0,0 +1,24 @@ +#! public-network-network-policy.yaml +# Generated code, do not edit +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: public-network-network-policy + namespace: {{ .Values.namespace }} +spec: + podSelector: + matchLabels: + com.docker.compose.network.public-network: "true" + policyTypes: + - Ingress + - Egress + ingress: + - from: + - podSelector: + matchLabels: + com.docker.compose.network.public-network: "true" + egress: + - to: + - podSelector: + matchLabels: + com.docker.compose.network.public-network: "true" diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-deployment.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-deployment.yaml new file mode 100755 index 000000000..225ff13a9 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-deployment.yaml @@ -0,0 +1,45 @@ +#! serviceA-deployment.yaml +# Generated code, do not edit +apiVersion: apps/v1 +kind: Deployment +metadata: + name: servicea + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + strategy: + type: Recreate + template: + metadata: + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + com.docker.compose.network.private-network: "true" + spec: + containers: + - name: servicea + image: {{ .Values.serviceA.image }} + imagePullPolicy: {{ .Values.serviceA.imagePullPolicy }} + ports: + - name: servicea-8080 + containerPort: 8080 + volumeMounts: + - name: etc-my-config1-txt + mountPath: /etc/my-config1.txt + subPath: my-config + readOnly: true + volumes: + - name: etc-my-config1-txt + configMap: + name: bridge + items: + - key: my-config + path: my-config diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-expose.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-expose.yaml new file mode 100755 index 000000000..5d733bd22 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-expose.yaml @@ -0,0 +1,19 @@ +#! serviceA-expose.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: servicea + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + app.kubernetes.io/managed-by: Helm +spec: + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + ports: + - name: servicea-8080 + port: 8080 + targetPort: servicea-8080 diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-service.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-service.yaml new file mode 100755 index 000000000..4b29a6477 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceA-service.yaml @@ -0,0 +1,25 @@ +# check if there is at least one published port + +#! serviceA-service.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: servicea-published + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + app.kubernetes.io/managed-by: Helm +spec: + type: LoadBalancer + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + ports: + - name: servicea-80 + port: 80 + protocol: TCP + targetPort: servicea-8080 + +# check if there is at least one published port diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-deployment.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-deployment.yaml new file mode 100755 index 000000000..abdf8b242 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-deployment.yaml @@ -0,0 +1,46 @@ +#! serviceB-deployment.yaml +# Generated code, do not edit +apiVersion: apps/v1 +kind: Deployment +metadata: + name: serviceb + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + selector: + matchLabels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + strategy: + type: Recreate + template: + metadata: + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + com.docker.compose.network.private-network: "true" + com.docker.compose.network.public-network: "true" + spec: + containers: + - name: serviceb + image: {{ .Values.serviceB.image }} + imagePullPolicy: {{ .Values.serviceB.imagePullPolicy }} + ports: + - name: serviceb-8082 + containerPort: 8082 + volumeMounts: + - name: run-secrets-my-secrets + mountPath: /run/secrets/my-secrets + subPath: my-secrets + readOnly: true + volumes: + - name: run-secrets-my-secrets + secret: + secretName: my-secrets + items: + - key: my-secrets + path: my-secrets diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-expose.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-expose.yaml new file mode 100755 index 000000000..f413254dc --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-expose.yaml @@ -0,0 +1,19 @@ +#! serviceB-expose.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: serviceb + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + app.kubernetes.io/managed-by: Helm +spec: + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + ports: + - name: serviceb-8082 + port: 8082 + targetPort: serviceb-8082 diff --git a/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-service.yaml b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-service.yaml new file mode 100755 index 000000000..52ec6fe94 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/templates/serviceB-service.yaml @@ -0,0 +1,21 @@ +#! serviceB-service.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: serviceb-published + namespace: {{ .Values.namespace }} + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + app.kubernetes.io/managed-by: Helm +spec: + type: LoadBalancer + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + ports: + - name: serviceb-8081 + port: 8081 + protocol: TCP + targetPort: serviceb-8082 diff --git a/pkg/e2e/fixtures/bridge/expected-helm/values.yaml b/pkg/e2e/fixtures/bridge/expected-helm/values.yaml new file mode 100755 index 000000000..b312fbc69 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-helm/values.yaml @@ -0,0 +1,13 @@ +#! values.yaml +# Namespace +namespace: bridge +# Services variables + +serviceA: + image: alpine + imagePullPolicy: IfNotPresent +serviceB: + image: alpine + imagePullPolicy: IfNotPresent + +# You can apply the same logic to loop on networks, volumes, secrets and configs... diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/0-bridge-namespace.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/0-bridge-namespace.yaml new file mode 100755 index 000000000..40e4b0e23 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/0-bridge-namespace.yaml @@ -0,0 +1,8 @@ +#! 0-bridge-namespace.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Namespace +metadata: + name: bridge + labels: + com.docker.compose.project: bridge diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/bridge-configs.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/bridge-configs.yaml new file mode 100755 index 000000000..822d2e076 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/bridge-configs.yaml @@ -0,0 +1,12 @@ +#! bridge-configs.yaml +# Generated code, do not edit +apiVersion: v1 +kind: ConfigMap +metadata: + name: bridge + namespace: bridge + labels: + com.docker.compose.project: bridge +data: + my-config: | + My config file diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/kustomization.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/kustomization.yaml new file mode 100755 index 000000000..ff8428fea --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/kustomization.yaml @@ -0,0 +1,16 @@ +#! kustomization.yaml +# Generated code, do not edit +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - 0-bridge-namespace.yaml + - bridge-configs.yaml + - my-secrets-secret.yaml + - private-network-network-policy.yaml + - public-network-network-policy.yaml + - serviceA-deployment.yaml + - serviceA-expose.yaml + - serviceA-service.yaml + - serviceB-deployment.yaml + - serviceB-expose.yaml + - serviceB-service.yaml diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/my-secrets-secret.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/my-secrets-secret.yaml new file mode 100755 index 000000000..559eba6a2 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/my-secrets-secret.yaml @@ -0,0 +1,13 @@ +#! my-secrets-secret.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Secret +metadata: + name: my-secrets + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.secret: my-secrets +data: + my-secrets: bm90LXNlY3JldA== +type: Opaque diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/private-network-network-policy.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/private-network-network-policy.yaml new file mode 100755 index 000000000..3f59b22dd --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/private-network-network-policy.yaml @@ -0,0 +1,24 @@ +#! private-network-network-policy.yaml +# Generated code, do not edit +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: private-network-network-policy + namespace: bridge +spec: + podSelector: + matchLabels: + com.docker.compose.network.private-network: "true" + policyTypes: + - Ingress + - Egress + ingress: + - from: + - podSelector: + matchLabels: + com.docker.compose.network.private-network: "true" + egress: + - to: + - podSelector: + matchLabels: + com.docker.compose.network.private-network: "true" diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/public-network-network-policy.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/public-network-network-policy.yaml new file mode 100755 index 000000000..04913d4b9 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/public-network-network-policy.yaml @@ -0,0 +1,24 @@ +#! public-network-network-policy.yaml +# Generated code, do not edit +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: public-network-network-policy + namespace: bridge +spec: + podSelector: + matchLabels: + com.docker.compose.network.public-network: "true" + policyTypes: + - Ingress + - Egress + ingress: + - from: + - podSelector: + matchLabels: + com.docker.compose.network.public-network: "true" + egress: + - to: + - podSelector: + matchLabels: + com.docker.compose.network.public-network: "true" diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-deployment.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-deployment.yaml new file mode 100755 index 000000000..0779cf562 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-deployment.yaml @@ -0,0 +1,44 @@ +#! serviceA-deployment.yaml +# Generated code, do not edit +apiVersion: apps/v1 +kind: Deployment +metadata: + name: servicea + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA +spec: + replicas: 1 + selector: + matchLabels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + strategy: + type: Recreate + template: + metadata: + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + com.docker.compose.network.private-network: "true" + spec: + containers: + - name: servicea + image: alpine + imagePullPolicy: IfNotPresent + ports: + - name: servicea-8080 + containerPort: 8080 + volumeMounts: + - name: etc-my-config1-txt + mountPath: /etc/my-config1.txt + subPath: my-config + readOnly: true + volumes: + - name: etc-my-config1-txt + configMap: + name: bridge + items: + - key: my-config + path: my-config diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-expose.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-expose.yaml new file mode 100755 index 000000000..d0bd013ec --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-expose.yaml @@ -0,0 +1,18 @@ +#! serviceA-expose.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: servicea + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA +spec: + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + ports: + - name: servicea-8080 + port: 8080 + targetPort: servicea-8080 diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-service.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-service.yaml new file mode 100755 index 000000000..628cf0418 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceA-service.yaml @@ -0,0 +1,23 @@ +# check if there is at least one published port + +#! serviceA-service.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: servicea-published + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA +spec: + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceA + ports: + - name: servicea-80 + port: 80 + protocol: TCP + targetPort: servicea-8080 + +# check if there is at least one published port diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-deployment.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-deployment.yaml new file mode 100755 index 000000000..191720c20 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-deployment.yaml @@ -0,0 +1,45 @@ +#! serviceB-deployment.yaml +# Generated code, do not edit +apiVersion: apps/v1 +kind: Deployment +metadata: + name: serviceb + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB +spec: + replicas: 1 + selector: + matchLabels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + strategy: + type: Recreate + template: + metadata: + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + com.docker.compose.network.private-network: "true" + com.docker.compose.network.public-network: "true" + spec: + containers: + - name: serviceb + image: alpine + imagePullPolicy: IfNotPresent + ports: + - name: serviceb-8082 + containerPort: 8082 + volumeMounts: + - name: run-secrets-my-secrets + mountPath: /run/secrets/my-secrets + subPath: my-secrets + readOnly: true + volumes: + - name: run-secrets-my-secrets + secret: + secretName: my-secrets + items: + - key: my-secrets + path: my-secrets diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-expose.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-expose.yaml new file mode 100755 index 000000000..202586899 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-expose.yaml @@ -0,0 +1,18 @@ +#! serviceB-expose.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: serviceb + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB +spec: + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + ports: + - name: serviceb-8082 + port: 8082 + targetPort: serviceb-8082 diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-service.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-service.yaml new file mode 100755 index 000000000..941041858 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/base/serviceB-service.yaml @@ -0,0 +1,19 @@ +#! serviceB-service.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: serviceb-published + namespace: bridge + labels: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB +spec: + selector: + com.docker.compose.project: bridge + com.docker.compose.service: serviceB + ports: + - name: serviceb-8081 + port: 8081 + protocol: TCP + targetPort: serviceb-8082 diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/kustomization.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/kustomization.yaml new file mode 100755 index 000000000..a192e45f0 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/kustomization.yaml @@ -0,0 +1,9 @@ +#! kustomization.yaml +# Generated code, do not edit +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ../../base +patches: + - path: serviceA-service.yaml + - path: serviceB-service.yaml diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceA-service.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceA-service.yaml new file mode 100755 index 000000000..6453b5adb --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceA-service.yaml @@ -0,0 +1,13 @@ +# check if there is at least one published port + +#! serviceA-service.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: servicea-published + namespace: bridge +spec: + type: LoadBalancer + +# check if there is at least one published port diff --git a/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceB-service.yaml b/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceB-service.yaml new file mode 100755 index 000000000..f21b67433 --- /dev/null +++ b/pkg/e2e/fixtures/bridge/expected-kubernetes/overlays/desktop/serviceB-service.yaml @@ -0,0 +1,9 @@ +#! serviceB-service.yaml +# Generated code, do not edit +apiVersion: v1 +kind: Service +metadata: + name: serviceb-published + namespace: bridge +spec: + type: LoadBalancer diff --git a/pkg/e2e/fixtures/bridge/my-config.txt b/pkg/e2e/fixtures/bridge/my-config.txt new file mode 100644 index 000000000..24d11e40b --- /dev/null +++ b/pkg/e2e/fixtures/bridge/my-config.txt @@ -0,0 +1 @@ +My config file \ No newline at end of file diff --git a/pkg/e2e/fixtures/bridge/not-so-secret.txt b/pkg/e2e/fixtures/bridge/not-so-secret.txt new file mode 100644 index 000000000..4e76a78ae --- /dev/null +++ b/pkg/e2e/fixtures/bridge/not-so-secret.txt @@ -0,0 +1 @@ +not-secret \ No newline at end of file