Add initial support for Elastic Stack 9.x#2102
Conversation
caca34f to
0f4873e
Compare
| version := stackVersion8160 | ||
| selected := selectElasticAgentImageName(version, "systemd") | ||
| assert.Equal(t, selected, elasticAgentImageName) | ||
| assert.Equal(t, elasticAgentImageName, selected) |
There was a problem hiding this comment.
Updated the order to ensure that the values are the expected and the actual ones as required by the assert functions.
https://pkg.go.dev/github.com/stretchr/testify/assert#Equal
| var version string | ||
| selected := selectElasticAgentImageName(version, "") | ||
| assert.Equal(t, selected, elasticAgentLegacyImageName) | ||
| assert.Equal(t, elasticAgentWolfiImageName, selected) |
There was a problem hiding this comment.
This is the test changing the value, it would return the wolfi image instead.
There was a problem hiding this comment.
In principle it LGTM. Maybe another option is to return an error if the version is empty? Not sure about the implications of the change, but would look safer to me to know where/if we are passing an empty version.
There was a problem hiding this comment.
Commands like elastic-package stack down do not set any version, and if a error is returned here, it will fail the command.
2f60421 to
16f9a3c
Compare
|
/test |
1 similar comment
|
/test |
| # targets: | ||
| # update-snapshot: | ||
| # name: '[updatecli] Update latest snapshot to {{ source "latestSnapshot" }}' | ||
| # kind: file | ||
| # sourceid: latestSnapshot | ||
| # scmid: default | ||
| # spec: | ||
| # file: Makefile | ||
| # matchpattern: '(./scripts/test-stack-command.sh) 9\.[^\s]+-SNAPSHOT' | ||
| # replacepattern: '$1 {{ source "latestSnapshot" }}-SNAPSHOT' |
There was a problem hiding this comment.
To be enabled before merging
| func selectElasticAgentImageName(version, agentBaseImage string) string { | ||
| if version == "" { // as version is optional and can be empty | ||
| return elasticAgentLegacyImageName | ||
| return elasticAgentWolfiImageName |
There was a problem hiding this comment.
WDYT about changing these defaults values to use the wolfi image docker.elastic.co/elastic-agent/elastic-agent-wolfi (e.g. no version specified) instead of the legacy image (beats namespace) docker.elastic.co/beats/elastic-agent?
Or should we keep unchanged this default?
There was a problem hiding this comment.
We can adapt this to the new default, yes, if we are sure that in old versions the beats namespace is used.
There was a problem hiding this comment.
Yes, the same behaviour is kept.
As a reference, I add here the docker images used in different versions:
- 7.14.0
$ docker ps --format "{{.Names}} {{.Image}}" |grep elastic-agent elastic-package-stack-elastic-agent-1 docker.elastic.co/beats/elastic-agent:7.14.0 elastic-package-stack-fleet-server-1 docker.elastic.co/beats/elastic-agent:7.14.0 - 7.15.0
$ docker ps --format "{{.Names}} {{.Image}}" |grep elastic-agent elastic-package-stack-elastic-agent-1 docker.elastic.co/beats/elastic-agent-complete:7.15.0 elastic-package-stack-fleet-server-1 docker.elastic.co/beats/elastic-agent-complete:7.15.0 - 8.2.0
$ docker ps --format "{{.Names}} {{.Image}}" |grep elastic-agent elastic-package-stack-elastic-agent-1 docker.elastic.co/elastic-agent/elastic-agent-complete:8.2.0 elastic-package-stack-fleet-server-1 docker.elastic.co/elastic-agent/elastic-agent-complete:8.2.0 - 8.16.0 (SNAPSHOT)
$ docker ps --format "{{.Names}} {{.Image}}" |grep elastic-agent elastic-package-stack-elastic-agent-1 docker.elastic.co/elastic-agent/elastic-agent-wolfi:8.16.0-SNAPSHOT elastic-package-stack-fleet-server-1 docker.elastic.co/elastic-agent/elastic-agent-wolfi:8.16.0-SNAPSHOT - 9.0.0 (SNAPSHOT)
$ docker ps --format "{{.Names}} {{.Image}}" |grep elastic-agent elastic-package-stack-elastic-agent-1 docker.elastic.co/elastic-agent/elastic-agent-wolfi:9.0.0-SNAPSHOT elastic-package-stack-fleet-server-1 docker.elastic.co/elastic-agent/elastic-agent-wolfi:9.0.0-SNAPSHOT
This reverts commit 7f12fe8.
568547b to
d918cc2
Compare
| withGolang $env:GO_VERSION | ||
| withDocker $env:DOCKER_VERSION | ||
| withDockerCompose $env:DOCKER_COMPOSE_VERSION | ||
| withDockerCompose $env:DOCKER_COMPOSE_VERSION.Substring(1) |
There was a problem hiding this comment.
Required to remove v from the version string for the chocolotey tool. Currently, this environment variable has this value v2.24.1.
There was a problem hiding this comment.
Interesting, how has it worked in the past?
There was a problem hiding this comment.
Probably, it was failing in the past too. I realized that even if with those commands were failing, the execution of the script continued.
I see that at the beginning of the file is defined
$ErrorActionPreference = "Stop"
but it does not stopped the execution. Not sure if choco command does not return any error in that scenario, or when the error is inside a function there are some differences in how to manage the errors.
| return elasticAgentWolfiImageName | ||
| } | ||
|
|
||
| disableWolfiImages := false |
There was a problem hiding this comment.
As it is now, the Elastic Agent image is chosen as:
- If stack >= 8.16.0-SNAPSHOT,
- by default it is used wolfi image_
docker.elastic.co/elastic-agent/elastic-agent-wolfi. - if ELASTIC_PACKAGE_DISABLE_ELASTIC_AGENT_WOLFI=true, then it is selected the Elastic Agent image as before. So if stack >= 7.15.0-SNAPSHOT, it will be used the complete image.
- by default it is used wolfi image_
- If the configuration file of the system test has
base_image: complete:- It will be used the complete version of the Elastic Agent image if the stack version allows it.
- If the configuration file of the system test has
base_image: systemd:- It will be used the
systemdversion of the Elastic Agent image. That meansdocker.elastic.co/elastic-agent/elastic-agentordocker.elastic.co/beats/elastic-agentdepending on the stack version.
- It will be used the
Would that be ok? Specially if stack version is set to 9.0.0 and the environment variable to disable wolfi is set to true.
There was a problem hiding this comment.
If the same set of images is going to be available in 9.0 keeping the same logic sounds good to me.
| withGolang $env:GO_VERSION | ||
| withDocker $env:DOCKER_VERSION | ||
| withDockerCompose $env:DOCKER_COMPOSE_VERSION | ||
| withDockerCompose $env:DOCKER_COMPOSE_VERSION.Substring(1) |
There was a problem hiding this comment.
Interesting, how has it worked in the past?
| func selectElasticAgentImageName(version, agentBaseImage string) string { | ||
| if version == "" { // as version is optional and can be empty | ||
| return elasticAgentLegacyImageName | ||
| return elasticAgentWolfiImageName |
There was a problem hiding this comment.
We can adapt this to the new default, yes, if we are sure that in old versions the beats namespace is used.
| var version string | ||
| selected := selectElasticAgentImageName(version, "") | ||
| assert.Equal(t, selected, elasticAgentLegacyImageName) | ||
| assert.Equal(t, elasticAgentWolfiImageName, selected) |
There was a problem hiding this comment.
In principle it LGTM. Maybe another option is to return an error if the version is empty? Not sure about the implications of the change, but would look safer to me to know where/if we are passing an empty version.
💚 Build Succeeded
History
cc @mrodm |
Part of elastic/package-registry#1226
Add initial support for 9.0.0 stack in
elastic-package.Changes performed:
elastic-packagewill use wolfi images as it was for 8.16 stack versions.elastic-package stack commandfor 9.0.0-SNAPSHOTAuthor's checklist
elastic-package stackcommand with 9.0.0-SNAPSHOTelastic-package stack up -v --version 9.0.0-SNAPSHOT.