Skip to content

DOCS-2997: Write the guide for connecting workloads to a VLAN - #2947

Open
ctauchen wants to merge 1 commit into
tigera:mainfrom
ctauchen:DOCS-2997-5-connect-vlan
Open

DOCS-2997: Write the guide for connecting workloads to a VLAN#2947
ctauchen wants to merge 1 commit into
tigera:mainfrom
ctauchen:DOCS-2997-5-connect-vlan

Conversation

@ctauchen

@ctauchen ctauchen commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Fills in the main setup guide for L2 bridge networking. Fifth in the DOCS-2997 sequence. It follows the guide for preparing an existing bridge, because a reader on a shared uplink needs that first.

This is the path for nodes where Calico can take over an interface of its own, so Calico creates and owns the bridge.

The guide leads with VMs. The feature is aimed at them, and a VM is configured differently from a pod: the interface is declared in the VM specification, and the guide says plainly that the launcher pod KubeVirt creates is not annotated by hand. Pods follow as the secondary case.

Points worth a reviewer's attention:

  • Setting the multi-interface mode gets a step of its own. Installing Multus is not sufficient, nothing reports the omission, and the symptom shows up much later as a workload with two interfaces called eth0 and no connectivity.
  • The IP pool step explains why the pool is marked as an L2 workload pool. Leaving it out gives you a blackhole route and a BGP advertisement for addresses that live on your own VLAN.
  • The first-match-wins rule for host configuration entries is stated explicitly, since nothing in the API hints at it.
  • The guide notes that KubeVirt's bridge interface binding is unrelated to the Calico L2 bridge. The same word means two different things in adjacent configuration and readers will trip on it.

Three things I could not verify and would like checked:

  • The VM specification example is written from KubeVirt's documented API rather than copied from a working VM. Alex has manifests from the EP2 hash release that would be better.
  • The attachment definition sets vlan as a JSON number. Confirm that is the expected type.
  • The section on using an L2 network as the primary interface describes the capability and its consequence, but points at the Network reference for the annotation names rather than naming them, because I could not confirm the exact keys. That reference page is still to be written, so the pointer needs filling in.

Changed page: https://deploy-preview-2947--calico-docs-preview-next.netlify.app/calico-enterprise/next/networking/l2-bridge/connect-vlan

Copilot AI lite review requested due to automatic review settings August 21, 2026 10:52
@ctauchen
ctauchen requested a review from a team as a code owner August 21, 2026 10:52
@netlify

netlify Bot commented Aug 21, 2026

Copy link
Copy Markdown

Deploy Preview for calico-docs-preview-next ready!

Name Link
🔨 Latest commit 34d01e5
🔍 Latest deploy log https://app.netlify.com/projects/calico-docs-preview-next/deploys/6a88321a5bbf49000875e73f
😎 Deploy Preview https://deploy-preview-2947--calico-docs-preview-next.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify

netlify Bot commented Aug 21, 2026

Copy link
Copy Markdown

Deploy Preview succeeded!

Built without sensitive environment variables

Name Link
🔨 Latest commit 34d01e5
🔍 Latest deploy log https://app.netlify.com/projects/tigera/deploys/6a88321a2df9c20007570fb3
😎 Deploy Preview https://deploy-preview-2947--tigera.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 71 (no change from production)
Accessibility: 98 (no change from production)
Best Practices: 92 (no change from production)
SEO: 100 (no change from production)
PWA: -
View the detailed breakdown and full score reports
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the main “connect workloads to a VLAN” setup guide for Calico Enterprise L2 bridge networking (Calico-managed bridge), covering prerequisites, configuration steps, and verification for both KubeVirt VMs (primary path) and pods (secondary path).

Changes:

  • Expands the guide with explicit prerequisites and a required “MultiInterfaceMode=Multus” configuration step.
  • Documents end-to-end resource setup: IPPools (L2Workload), Network (managed bridge + trunk + VLAN/subnets), and per-VLAN NetworkAttachmentDefinition.
  • Adds workload attachment examples (KubeVirt VM spec + pod Multus annotations) and a structured verification checklist.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +16 to +18
If the only uplink on your nodes also carries the node's own IP address, $[prodname]
cannot create the bridge. Start with [Prepare an existing bridge](byo-bridge.mdx), then
return here from step 3 onwards.
Comment on lines +331 to +333
A workload can take an L2 network as its primary interface instead of an additional one,
set with annotations rather than through Multus. See the
[Network resource](../../reference/resources/network.mdx) for the annotations.
Copilot AI review requested due to automatic review settings August 21, 2026 11:08
@ctauchen
ctauchen force-pushed the DOCS-2997-5-connect-vlan branch from f5dd80b to ddd7e3a Compare August 21, 2026 11:08
Fill in the main setup guide for L2 bridge networking, for nodes where Calico
can take over an interface of its own.

The guide leads with VMs, because the feature is aimed at them and because a VM
is configured differently from a pod. The interface is declared in the VM
specification, and the guide says plainly that the launcher pod is not annotated
by hand. Pods follow as a secondary case.

Setting the multi-interface mode gets a step of its own. Installing Multus is
not sufficient, nothing reports the omission, and the symptom appears much later
as a workload with two interfaces called eth0 and no connectivity.

The IP pool step explains why the pool is marked as an L2 workload pool, since
the consequence of leaving it out is a blackhole route and a BGP advertisement
for addresses that live on the reader's own VLAN.

The guide also notes that KubeVirt's bridge interface binding is unrelated to
the Calico L2 bridge, because the same word means two different things in
adjacent configuration.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ctauchen
ctauchen force-pushed the DOCS-2997-5-connect-vlan branch from ddd7e3a to 34d01e5 Compare August 21, 2026 11:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Suppressed comments (4)

calico-enterprise/networking/l2-bridge/connect-vlan.mdx:17

  • The text says to return here “from step 3 onwards”, but the linked “Prepare an existing bridge” page currently has no numbered steps, so readers won’t know what “step 3” refers to.

If the only uplink on your nodes also carries the node's own IP address, $[prodname] cannot create the bridge.

calico-enterprise/networking/l2-bridge/connect-vlan.mdx:318

  • This section sends readers to the generic Network resource reference for the primary-interface annotations, but that reference page currently documents only VRF networks and states that only vrf is supported. That makes it a confusing reference for L2 bridge users.

A workload can take an L2 network as its primary interface instead of an additional one, set with annotations rather than through Multus.
See the [Network resource](../../reference/resources/network.mdx) for the annotations.

calico-enterprise/networking/l2-bridge/connect-vlan.mdx:32

  • This sentence points readers to “L2 bridge support and limitations” for the “full set of constraints”, but calico-enterprise/reference/l2-bridge-support.mdx is currently just an outline (headings only). As written, this over-promises content that isn’t there yet.
    calico-enterprise/networking/l2-bridge/connect-vlan.mdx:97
  • The guide introduces allowedUses: [L2Workload], but calico-enterprise/reference/resources/ippool.mdx does not list L2Workload as an accepted allowedUses value (it currently lists Workload/Tunnel/HostSecondaryInterface/LoadBalancer). This mismatch is likely to confuse readers or make them think the example is invalid.
   spec:
     cidr: 10.10.0.0/24
     allowedUses:
       - L2Workload
     disableBGPExport: true

Copilot AI review requested due to automatic review settings August 21, 2026 11:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Suppressed comments (2)

calico-enterprise/networking/l2-bridge/connect-vlan.mdx:33

  • This sentence claims the linked page contains the full set of constraints, but calico-enterprise/reference/l2-bridge-support.mdx currently appears to be a stub (headings only). That makes this wording misleading for readers; either populate the target page in this PR sequence or soften the claim here.
For the full set of constraints, see [L2 bridge support and limitations](../../reference/l2-bridge-support.mdx).

calico-enterprise/networking/l2-bridge/connect-vlan.mdx:318

  • This section says primary-interface attachment is done "with annotations" but doesn’t name the annotation key, even though it’s already documented in calico-enterprise/reference/resources/network.mdx. Naming the key here would make this step actionable without forcing readers to context-switch.
A workload can take an L2 network as its primary interface instead of an additional one, set with annotations rather than through Multus.
See the [Network resource](../../reference/resources/network.mdx) for the annotations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants