From d9e2124cab6d6837a0bc3bb578f92419de61d01d Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Mon, 22 Apr 2024 18:30:17 +0200 Subject: [PATCH] Allow to define which ports should be exposed --- internal/agentdeployer/_static/docker-agent-base.yml.tmpl | 6 ++++++ internal/agentdeployer/agent.go | 1 + internal/agentdeployer/info.go | 2 ++ internal/testrunner/runners/system/runner.go | 1 + internal/testrunner/runners/system/test_config.go | 1 + 5 files changed, 11 insertions(+) diff --git a/internal/agentdeployer/_static/docker-agent-base.yml.tmpl b/internal/agentdeployer/_static/docker-agent-base.yml.tmpl index 608c2c5f6..4878ef92f 100644 --- a/internal/agentdeployer/_static/docker-agent-base.yml.tmpl +++ b/internal/agentdeployer/_static/docker-agent-base.yml.tmpl @@ -18,6 +18,12 @@ services: - {{ . }} {{- end }} {{ end }} + {{ if .exposePorts }} + ports: + {{- range .exposePorts }} + - "{{ . }}" + {{- end }} + {{ end }} environment: - FLEET_ENROLL=1 - FLEET_URL=https://fleet-server:8220 diff --git a/internal/agentdeployer/agent.go b/internal/agentdeployer/agent.go index 0927333dc..db4807438 100644 --- a/internal/agentdeployer/agent.go +++ b/internal/agentdeployer/agent.go @@ -256,6 +256,7 @@ func (d *DockerComposeAgentDeployer) installDockerfile(agentInfo AgentInfo) (str "capabilities": agentInfo.Agent.LinuxCapabilities, "runtime": agentInfo.Agent.Runtime, "pidMode": agentInfo.Agent.PidMode, + "exposePorts": agentInfo.Agent.ExposePorts, }) if err != nil { return "", fmt.Errorf("failed to create contents of the docker-compose file %q: %w", customAgentDockerfile, err) diff --git a/internal/agentdeployer/info.go b/internal/agentdeployer/info.go index 3da8ea4ef..d1b45b9ca 100644 --- a/internal/agentdeployer/info.go +++ b/internal/agentdeployer/info.go @@ -82,6 +82,8 @@ type AgentInfo struct { Runtime string // LinuxCapabilities is a list of the capabilities needed to run the Elastic Agent process LinuxCapabilities []string + // ExposePorts is a list of ports to make them available to communicate to the Elastic Agent process + ExposePorts []string } // CustomProperties store additional data used to boot up the service, e.g. AWS credentials. diff --git a/internal/testrunner/runners/system/runner.go b/internal/testrunner/runners/system/runner.go index 67d1686c6..29bfb3379 100644 --- a/internal/testrunner/runners/system/runner.go +++ b/internal/testrunner/runners/system/runner.go @@ -338,6 +338,7 @@ func (r *runner) createAgentInfo(policy *kibana.Policy, config *testConfig, agen info.Agent.LinuxCapabilities = config.Agent.LinuxCapabilities info.Agent.Runtime = config.Agent.Runtime info.Agent.PidMode = config.Agent.PidMode + info.Agent.ExposePorts = config.Agent.ExposePorts // If user is defined in the configuration file, it has preference // and it should not be overwritten by the value in the manifest diff --git a/internal/testrunner/runners/system/test_config.go b/internal/testrunner/runners/system/test_config.go index 662ceb7dd..1cc8e3f5b 100644 --- a/internal/testrunner/runners/system/test_config.go +++ b/internal/testrunner/runners/system/test_config.go @@ -58,6 +58,7 @@ type testConfig struct { PidMode string `config:"pid_mode"` LinuxCapabilities []string `config:"linux_capabilities"` Runtime string `config:"runtime"` + ExposePorts []string `config:"expose_ports"` } `config:"agent"` }