Skip to content

Commit

Permalink
feat(bootstrap): added E2E test case for pushing corefile template fr…
Browse files Browse the repository at this point in the history
…om cp to dp

Signed-off-by: Jay Chen <[email protected]>
  • Loading branch information
jijiechen committed Dec 22, 2023
1 parent 670b91a commit 84070af
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 13 deletions.
13 changes: 0 additions & 13 deletions app/kuma-dp/cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -340,16 +340,3 @@ func writeFile(filename string, data []byte, perm os.FileMode) error {
}
return os.WriteFile(filename, data, perm)
}

func writeTempFile(dirPattern, filename string, data []byte, perm os.FileMode) (string, error) {
path, err := os.MkdirTemp("", dirPattern)
fullFileName := filepath.Join(path, filename)
if err != nil {
return "", errors.Errorf("failed to create a containing directory for %s. %v", filename, err)
}
err = os.WriteFile(fullFileName, data, perm)
if err != nil {
return "", errors.Errorf("failed to write %s to disk. %v", filename, err)
}
return fullFileName, nil
}
84 changes: 84 additions & 0 deletions test/e2e_env/kubernetes/bootstrap/corefile_template.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package bootstrap

import (
"fmt"
"strings"
"time"

"github.com/gruntwork-io/terratest/modules/random"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"

"github.com/kumahq/kuma/pkg/config/core"
k8s_util "github.com/kumahq/kuma/pkg/plugins/runtime/k8s/util"
. "github.com/kumahq/kuma/test/framework"
"github.com/kumahq/kuma/test/framework/deployments/democlient"
)

func CorefileTemplate() {
var zoneCluster Cluster
appNamespace := "dns-app"
appName := "demo-dp-app"
expectedTestText := "# this dummy corefile template is loaded from control plane"
configMapName := "corefile-template"
configMap := func(ns string) string {
return fmt.Sprintf(`apiVersion: v1
kind: ConfigMap
metadata:
namespace: %s
name: %s
data:
%s: |
.:{{ .CoreDNSPort }} {
%s
log
}`, ns, configMapName, configMapName, expectedTestText)
}

dnsConfigDir := "/tmp/kuma-dp-config/coredns"
BeforeAll(func() {
zoneCluster = NewK8sCluster(NewTestingT(), Kuma2, Silent).
WithTimeout(6 * time.Second).
WithRetries(60)

Expect(NewClusterSetup().
Install(Namespace(Config.KumaNamespace)).
Install(YamlK8s(configMap(Config.KumaNamespace))).
Install(Kuma(core.Zone,
WithInstallationMode(HelmInstallationMode),
WithHelmReleaseName(fmt.Sprintf("kuma-%s", strings.ToLower(random.UniqueId()))),
WithHelmOpt("controlPlane.envVars.KUMA_BOOTSTRAP_SERVER_PARAMS_COREFILE_TEMPLATE_PATH",
dnsConfigDir+"/"+configMapName),
WithHelmOpt("controlPlane.extraConfigMaps[0].name", configMapName),
WithHelmOpt("controlPlane.extraConfigMaps[0].mountPath", dnsConfigDir),
WithHelmOpt("controlPlane.extraConfigMaps[0].readonly", "false"),
)).
Install(MeshKubernetes("default")).
Install(NamespaceWithSidecarInjection(appNamespace)).
Install(democlient.Install(
democlient.WithName(appName),
democlient.WithNamespace(appNamespace),
democlient.WithPodAnnotations(map[string]string{
"kuma.io/sidecar-env-vars": fmt.Sprintf("KUMA_DNS_CONFIG_DIR=%s", dnsConfigDir),
}),
)).
Setup(zoneCluster),
).To(Succeed())
})

E2EAfterAll(func() {
Expect(zoneCluster.DeleteKuma()).To(Succeed())
Expect(zoneCluster.DismissCluster()).To(Succeed())
})

It("should use Corefile template from control plane at data plane", func() {
dpPod, err := PodNameOfApp(zoneCluster, appName, appNamespace)
Expect(err).ToNot(HaveOccurred())

stdout, stderr, err := zoneCluster.Exec(
appNamespace, dpPod, k8s_util.KumaSidecarContainerName, "cat", dnsConfigDir+"/Corefile")
Expect(err).ToNot(HaveOccurred())
Expect(stderr).To(BeEmpty())
Expect(stdout).To(ContainSubstring(expectedTestText))
})
}
2 changes: 2 additions & 0 deletions test/e2e_env/kubernetes/kubernetes_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/kumahq/kuma/pkg/test"
"github.com/kumahq/kuma/test/e2e_env/kubernetes/api"
"github.com/kumahq/kuma/test/e2e_env/kubernetes/bootstrap"
"github.com/kumahq/kuma/test/e2e_env/kubernetes/connectivity"
"github.com/kumahq/kuma/test/e2e_env/kubernetes/container_patch"
"github.com/kumahq/kuma/test/e2e_env/kubernetes/defaults"
Expand Down Expand Up @@ -49,6 +50,7 @@ var _ = E2ESynchronizedBeforeSuite(kubernetes.SetupAndGetState, kubernetes.Resto
var _ = SynchronizedAfterSuite(func() {}, func() {})

var (
_ = Describe("Corefile Template", bootstrap.CorefileTemplate, Ordered)
_ = Describe("Virtual Probes", healthcheck.VirtualProbes, Ordered)
_ = Describe("Gateway", gateway.Gateway, Ordered)
_ = Describe("Gateway - Cross-mesh", gateway.CrossMeshGatewayOnKubernetes, Ordered)
Expand Down

0 comments on commit 84070af

Please sign in to comment.