hashicorp / hashicorp/nomad

Enable to sidecar_service for macOS, Windows and Qemu VMs.

Open
#12,917 0 comments 4 reactions 0 assignees View on GitHub
type/enhancement
Dominant language
Go
Stars
17k
Forks
2.1k
Avg merge
1d 9h
Merged PRs (30d)
105

Description

### Proposal

Support defining a `sidecar_service` stanza without this spinning up the associated Consul Envoy proxy. For example by specifying no driver for the task:

```
connect {
sidecar_service {}
sidecar_task {
driver = false
}
}
```

### Use-cases

The use case I'm trying to solve is two-fold:

1. Support macOS and Window. Using the `sidecar_service` does not work on macOS or windows because it requires CNI bridge networking. If it's possible to disable the `sidecar_task`, this also might drop the need for the bridge networking constraint. That way the config for Linux and macOS/Windows work the same and does not require configuring Consul manually.

2. Ability to run the Consul Envoy proxy in a Nomad managed Qemu VM, to enable Consul connect there as well! If the Consul Envoy proxy is running outside the Qemu VM, then Envoy cannot forward traffic to a local service without port-forwarding the necessary port in the VM, defeating the purpose having Consul connect setup in the first place as folks will be able to access the VM port from the host.

### Attempted Solutions

This is an example of a kubernetes master and worker setup using Nomad Qemu jobs where the master can access the worker through a Consul Envoy proxy running inside the Qemu VM. If this proposal would be implemented the `register-proxy` and `deregister-proxy` tasks would not be necessary making the setup a lot cleaner.

**example.nomad**
```
job "kubernetes" {
datacenters = ["dc1"]
type = "service"

group "master" {
count = 1

network {
port "ssh" {
}

port "sidecar" {
}
}

service {
name = "kubernetes-master"
}

task "register-proxy" {
lifecycle {
hook = "prestart"
}

template {
data = <

Contributor guide

No contributing guide indexed for this repository

Research direction

No source files or tests are named. Start with the `sidecar_service` stanza and the `example.nomad` configuration, then determine how the requested behavior should apply on macOS, Windows, and Qemu VMs; done means those environments can use the stanza without the associated Envoy proxy being started.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
devops, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.