Skip to content

Fix: Support Ubuntu deployment in routed/relay environments #207

@forryz

Description

@forryz

Step 1: Extract addons.cpio

Create a temporary workspace and extract the existing archive.

mkdir -p /tmp/confluent-mod
cd /tmp/confluent-mod

# Locate and extract the addons.cpio (usually a symlink to /opt/confluent/lib/osdeploy/...)
cpio -idmv < /opt/confluent/lib/osdeploy/ubuntu24.04/initramfs/addons.cpio

Step 2: Edit the Scripts

Apply the logic discussed in Modification 1 and Modification 2 using your preferred editor:

For the complete script contents, please refer to the attached files:

vi scripts/init-premount/confluent
vi scripts/casper-bottom/99confluent

Step 3: Repack addons.cpio

Backup the original file and create the new archive using the newc format.

# Backup original
cp /opt/confluent/lib/osdeploy/ubuntu24.04/initramfs/addons.cpio /opt/confluent/lib/osdeploy/ubuntu24.04/initramfs/addons.cpio.bak

# Repack
find . | cpio -H newc -o > /opt/confluent/lib/osdeploy/ubuntu24.04/initramfs/addons.cpio

Step 4: Server-Side Configuration

To allow clortho to successfully connect to the CredServer (port 13001) across different subnets, the server-side configuration must be updated. This is because credserver.py performs a trust check on the source IP via address_is_somewhat_trusted(). If the subnet is not defined in trusted.subnets, the client will enter an infinite retry loop.

Configuration Commands:

# Allow CredServer to accept connections from the VLAN 241 subnet
nodeattrib node241 trusted.subnets=172.19.241.0/24

# For deployments with multiple VLANs, use group attributes
nodegroupattrib everything trusted.subnets="172.19.241.0/24,172.19.242.0/24,172.19.243.0/24"

Step 5: profile.yaml Adjustments

To trigger the newly implemented routed deployment workflow, the profile.yaml must be updated to include the confluent= kernel argument.

Important Notes:

  • ip=dhcp: Must be preserved so that the casper function configure_networking can successfully obtain an IP address via DHCP in the initramfs.
  • confluent=<IP>: Set this to the IPv4 address of your management server.
  • Remove BOOTIF: It is recommended to remove BOOTIF=01-${net0/mac:hexhyp} in relay environments, as it can sometimes lead to interface binding issues when crossing subnets.
  • Key Uniqueness: Ensure there is only one kernelargs: key; YAML will only respect the last instance if duplicated.

Updated profile.yaml Example:

label: Ubuntu 24.04.3 x86_64 (Default Profile)
kernelargs: console=ttyS1,115200n8 earlycon=uart8250,io,0x2f8,115200n8 console=tty0 osprofile=ubuntu-24.04.3-x86_64-default ip=dhcp confluent=172.19.54.250

Step 6: Regenerate Boot Images

Update the deployment profile to incorporate the modified addons.cpio and profile.yaml into the final boot images.

osdeploy updateboot ubuntu-24.04.3-x86_64-default

Note: I am opening this issue just to share my experience and this workaround with the community. Feel free to close it at any time.

confluent.txt
99confluent.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions