connect: do not restrict auto envoy version to docker task driver (#17041)

This PR updates the envoy_bootstrap_hook to no longer disable itself if
the task driver in use is not docker. In other words, make it work for
podman and other image based task drivers. The hook now only checks that

1. the task is a connect sidecar
2. the task.config block contains an "image" field
This commit is contained in:
Seth Hoenig 2023-05-01 15:07:35 -05:00 committed by GitHub
parent 922c593203
commit 86f6a38867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 2 deletions

3
.changelog/17041.txt Normal file
View File

@ -0,0 +1,3 @@
```release-note:improvement
connect: do not restrict automatic envoy versioning to docker driver
```

View File

@ -122,8 +122,6 @@ func (_ *envoyVersionHook) interpolateImage(task *structs.Task, env *taskenv.Tas
// its envoy proxy version resolved automatically. // its envoy proxy version resolved automatically.
func (h *envoyVersionHook) skip(request *ifs.TaskPrestartRequest) bool { func (h *envoyVersionHook) skip(request *ifs.TaskPrestartRequest) bool {
switch { switch {
case request.Task.Driver != "docker":
return true
case !request.Task.UsesConnectSidecar(): case !request.Task.UsesConnectSidecar():
return true return true
case !h.needsVersion(request.Task.Config): case !h.needsVersion(request.Task.Config):
@ -158,6 +156,10 @@ func (h *envoyVersionHook) needsVersion(config map[string]interface{}) bool {
return false return false
} }
if _, exists := config["image"]; !exists {
return false
}
image := h.taskImage(config) image := h.taskImage(config)
return strings.Contains(image, envoy.VersionVar) return strings.Contains(image, envoy.VersionVar)

View File

@ -272,6 +272,7 @@ func TestTaskRunner_EnvoyVersionHook_Prestart_custom(t *testing.T) {
// Setup an Allocation // Setup an Allocation
alloc := mock.ConnectAlloc() alloc := mock.ConnectAlloc()
alloc.Job.TaskGroups[0].Tasks[0] = mock.ConnectSidecarTask() alloc.Job.TaskGroups[0].Tasks[0] = mock.ConnectSidecarTask()
alloc.Job.TaskGroups[0].Tasks[0].Driver = "podman"
alloc.Job.TaskGroups[0].Tasks[0].Config["image"] = "custom-${NOMAD_envoy_version}:latest" alloc.Job.TaskGroups[0].Tasks[0].Config["image"] = "custom-${NOMAD_envoy_version}:latest"
allocDir, cleanupDir := allocdir.TestAllocDir(t, logger, "EnvoyVersionHook", alloc.ID) allocDir, cleanupDir := allocdir.TestAllocDir(t, logger, "EnvoyVersionHook", alloc.ID)
defer cleanupDir() defer cleanupDir()