hashicorp / hashicorp/consul

Consul WebUI have issues when loading both ARM64 and AMD64 bundle

Open
#20,981 1 comment 0 reactions 0 assignees View on GitHub
theme/ui type/bug
Dominant language
Go
Stars
30.1k
Forks
4.6k
Avg merge
1d 18h
Merged PRs (30d)
39

Description

#### Overview of the Issue

When having an autoscaling group that is configured to use both ARM64 and AMD64 nodes, consul WebUI can load bundles from different instances types, and this prevent the UI from loading correctly, as bundles are not named the same between architectures.

---

#### Reproduction Steps

1. Set up an autoscaling group containing multiples processor architectures
2. Install consul on each
3. Use a load balancer in front of the autoscaling
4. Depending on your architecture mix, you may need to refresh the page multiple time for the issue to appear.

### Consul info for both Client and Server

Client info

```
Output from client 'consul info' command here
```

```
Client agent HCL config
```

Server info

```
gent:
check_monitors = 0
check_ttls = 0
checks = 0
services = 0
build:
prerelease =
revision = 98cb473c
version = 1.18.1
version_metadata =
consul:
acl = enabled
bootstrap = false
known_datacenters = 1
leader = false
leader_addr = REDACTED:8300
server = true
raft:
applied_index = 1154473
commit_index = 1154473
fsm_pending = 0
last_contact = 59.436445ms
last_log_index = 1154473
last_log_term = 26
last_snapshot_index = 1147419
last_snapshot_term = 26
latest_configuration = [REDACTED]
latest_configuration_index = 0
num_peers = 2
protocol_version = 3
protocol_version_max = 3
protocol_version_min = 0
snapshot_version_max = 1
snapshot_version_min = 0
state = Follower
term = 26
runtime:
arch = amd64
cpu_count = 2
goroutines = 519
max_procs = 2
os = linux
version = go1.21.8
serf_lan:
coordinate_resets = 0
encrypted = true
event_queue = 0
event_time = 25
failed = 0
health_score = 0
intent_queue = 0
left = 1
member_time = 214133
members = 15
query_queue = 0
query_time = 1
serf_wan:
coordinate_resets = 0
encrypted = true
event_queue = 0
event_time = 1
failed = 0
health_score = 0
intent_queue = 0
left = 1
member_time = 62897
members = 4
query_queue = 0
query_time = 1
```

```
server = true

bind_addr = "{{ GetInterfaceIP \"ens5\" }}"
advertise_addr = "{{ GetInterfaceIP \"ens5\" }}"
client_addr = "0.0.0.0"

data_dir = "/opt/consul"

bootstrap_expect = 3

encrypt = "REDACTED"
encrypt_verify_incoming = true
encrypt_verify_outgoing = true

leave_on_terminate = true

acl = {
enabled = true
default_policy = "deny"
down_policy = "extend-cache"
enable_token_persistence = true
}

connect {
enabled = true
ca_provider = "consul"
}

ports = {
http = 8500 # TCP only
https = 8501 # TCP only
grpc = 8502 # TCP only
grpc_tls = 8503 # TCP only
dns = 8600 # TCP and UDP
server = 8300 # TCP only
serf_lan = 8301 # TCP and UDP
serf_wan = 8302 # TCP and UDP
}

node_name = REDACTED
datacenter = "ops"
primary_datacenter = "ops"

retry_join = [REDACTED]

node_meta {
instance_purpose = "consul"
ami_id = "REDACTED"
instance_type = "t3.small"
availability_zone = "eu-west-3b"
}

autopilot = {
max_trailing_logs = 250
cleanup_dead_servers = true
last_contact_threshold = "200ms"
server_stabilization_time = "10s"
}

telemetry = {
disable_hostname = true
prometheus_retention_time = "60s"
}

ui_config = {
enabled = true
}

auto_encrypt = {
allow_tls = true
}

peering = {
enabled = true
}

tls {
defaults {
verify_incoming = true
verify_outgoing = true
verify_server_hostname = true
ca_file = "/opt/consul/tls/consul-ca.pem"
key_file = "/opt/consul/tls/consul-key.pem"
cert_file = "/opt/consul/tls/consul-cert.pem"
}

https {
verify_incoming = false
}
}
```

### Operating system and Environment details

Server 1:
OS: Amazon Linux 2023
Architecture: x86_64

Server 2:
OS: Amazon Linux 2023
Architecture: AMD64

### Log Fragments

Not applicable

Contributor guide

Open the contributing guide

Research direction

No source files or tests are identified in the issue. Start by reproducing the WebUI failure with a load balancer across ARM64 and AMD64 Consul instances, then trace how the UI bundles are loaded and named. Done means the WebUI loads reliably across both architectures without repeated refreshes.

Written by the indexing model from the issue text.

Assessment

Domain
frontend, web-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.