Skip to content

DOCS-2871: Migrate CC Felix config docs to dynamic component system#2560

Merged
ctauchen merged 1 commit intotigera:mainfrom
ctauchen:docs-2871-cc-felix-config-dynamic
Mar 4, 2026
Merged

DOCS-2871: Migrate CC Felix config docs to dynamic component system#2560
ctauchen merged 1 commit intotigera:mainfrom
ctauchen:docs-2871-cc-felix-config-dynamic

Conversation

@ctauchen
Copy link
Collaborator

@ctauchen ctauchen commented Mar 4, 2026

Summary

  • Replace hand-maintained static HTML tables in Calico Cloud Felix config reference docs with the same auto-generated FelixConfig React component already used by OSS and Enterprise
  • Fixes drifted defaults (e.g. dnsPolicyMode showing Inline instead of DelayDeniedPacket) and ensures CC stays in sync with EE going forward
  • Add CC support to scripts/update-felix-config.sh so future make update-felix-config runs pull CC config-params.json from the correct upstream branches

Test plan

  • Run yarn start and verify /calico-cloud/reference/resources/felixconfig renders with dynamic tables
  • Verify /calico-cloud/reference/component-resources/node/felix/configuration renders with tabbed config/env tables
  • Confirm dnsPolicyMode default shows DelayDeniedPacket (not Inline)
  • Spot-check a few fields against the EE equivalent for parity
  • Run GITHUB_TOKEN=... make update-felix-config and verify CC config-params.json files download successfully

🤖 Generated with Claude Code

Replace hand-maintained static HTML tables in Calico Cloud felix config
reference docs with the same auto-generated FelixConfig React component
already used by OSS and Enterprise. This fixes drifted defaults (e.g.
dnsPolicyMode showing Inline instead of DelayDeniedPacket) and ensures
CC stays in sync with EE going forward.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings March 4, 2026 14:18
@ctauchen ctauchen requested a review from a team as a code owner March 4, 2026 14:18
@netlify
Copy link

netlify bot commented Mar 4, 2026

Deploy Preview succeeded!

Built without sensitive environment variables

Name Link
🔨 Latest commit 87a1ee0
🔍 Latest deploy log https://app.netlify.com/projects/tigera/deploys/69a83f254a83900008e7df98
😎 Deploy Preview https://deploy-preview-2560--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: 70 (🔴 down 1 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

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

@netlify
Copy link

netlify bot commented Mar 4, 2026

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

Name Link
🔨 Latest commit 87a1ee0
🔍 Latest deploy log https://app.netlify.com/projects/calico-docs-preview-next/deploys/69a83f2646990700075047d6
😎 Deploy Preview https://deploy-preview-2560--calico-docs-preview-next.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

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

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR migrates Calico Cloud Felix configuration reference docs from static, manually maintained tables to the existing auto-generated FelixConfig component approach used in other product docs, and updates the sync script so Cloud’s config-params.json can be refreshed from upstream automatically.

Changes:

  • Replaced static FelixConfiguration spec/config/env tables in Calico Cloud docs with the FelixConfig React component (unversioned + v22-2).
  • Added Calico Cloud support to scripts/update-felix-config.sh and updated the Makefile messaging.
  • Introduced Calico Cloud copies of the FelixConfig component implementation + styles (unversioned + v22-2).

Reviewed changes

Copilot reviewed 12 out of 18 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
scripts/update-felix-config.sh Adds CC versions file parsing and CC download/update routines for config-params.json.
Makefile Updates the update-felix-config target messaging to include Cloud.
calico-cloud/reference/resources/felixconfig.mdx Switches FelixConfiguration spec docs to dynamic FelixConfig rendering and updates DNS policy sections.
calico-cloud/reference/component-resources/node/felix/configuration.mdx Switches config/env reference tables to dynamic FelixConfig rendering.
calico-cloud/_includes/components/FelixConfig/index.js Adds CC FelixConfig React component implementation.
calico-cloud/_includes/components/FelixConfig/TableResource.js Adds CC resource/YAML table renderer.
calico-cloud/_includes/components/FelixConfig/TableConfig.js Adds CC config-file table renderer.
calico-cloud/_includes/components/FelixConfig/TableEnv.js Adds CC env-var table renderer.
calico-cloud/_includes/components/FelixConfig/styles.module.css Adds CC component CSS for tables/tabs spacing.
calico-cloud_versioned_docs/version-22-2/reference/resources/felixconfig.mdx Same migration as unversioned for CC v22-2 FelixConfiguration spec.
calico-cloud_versioned_docs/version-22-2/reference/component-resources/node/felix/configuration.mdx Same migration as unversioned for CC v22-2 config/env reference.
calico-cloud_versioned_docs/version-22-2/_includes/components/FelixConfig/index.js Adds versioned CC v22-2 FelixConfig component implementation.
calico-cloud_versioned_docs/version-22-2/_includes/components/FelixConfig/TableResource.js Adds versioned CC v22-2 resource/YAML table renderer.
calico-cloud_versioned_docs/version-22-2/_includes/components/FelixConfig/TableConfig.js Adds versioned CC v22-2 config-file table renderer.
calico-cloud_versioned_docs/version-22-2/_includes/components/FelixConfig/TableEnv.js Adds versioned CC v22-2 env-var table renderer.
calico-cloud_versioned_docs/version-22-2/_includes/components/FelixConfig/styles.module.css Adds versioned CC v22-2 component CSS.

Comment on lines +319 to 333
| Value | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| DelayDeniedPacket | Felix delays any denied packet that traversed a policy that included egress domain matches, but did not match. The packet is released after a fixed time, or after the destination IP address was programmed. |
| DelayDNSResponse | Felix delays any DNS response until related IPSets are programmed. This introduces some latency to all DNS packets (even when no IPSet programming is required), but it ensures policy hit statistics are accurate. This is the recommended setting when you are making use of staged policies or policy rule hit statistics. A Linux kernel version of 3.13 or greater is required to use `DelayDNSResponse`. For earlier kernel versions, this value is modified to `DelayDeniedPacket`. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |

### NFTablesDNSPolicyMode
On Windows, or when using the eBPF dataplane, this setting is ignored. Windows always uses `NoDelay` while eBPF has its own [BPFDNSPolicyMode](#bpfdnspolicymode) option.

| Value | Description |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| DelayDeniedPacket (default) | Felix delays any denied packet that traversed a policy that included egress domain matches, but did not match. The packet is released after a fixed time, or after the destination IP address was programmed. |
| DelayDNSResponse | Felix delays any DNS response until related IPSets are programmed. This introduces some latency to all DNS packets (even when no IPSet programming is required), but it ensures policy hit statistics are accurate. This is the recommended setting when you are making use of staged policies or policy rule hit statistics. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |
### BPFDNSPolicyMode

| Value | Description |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inline | Felix does not introduce any delay to any packets. Felix's eBPF programs parse DNS responses and program policy rules immediately, before the DNS response is passed to the application. This only applies to wildcard prefixes: `*.x.y.z` will be processed in this manner, but wildcards such as `x.*.y.z` will not match. A Linux kernel version of 5.17 or greater is required. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |

Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

The DNSPolicyMode section no longer documents the Inline option, but the generated config-params (and the field schema) still list Inline as an accepted value. Please add Inline back to the table (and any related notes) so the value reference matches the actual supported enum values.

Copilot uses AI. Check for mistakes.
Comment on lines +325 to 333
On Windows, or when using the eBPF dataplane, this setting is ignored. Windows always uses `NoDelay` while eBPF has its own [BPFDNSPolicyMode](#bpfdnspolicymode) option.

| Value | Description |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| DelayDeniedPacket (default) | Felix delays any denied packet that traversed a policy that included egress domain matches, but did not match. The packet is released after a fixed time, or after the destination IP address was programmed. |
| DelayDNSResponse | Felix delays any DNS response until related IPSets are programmed. This introduces some latency to all DNS packets (even when no IPSet programming is required), but it ensures policy hit statistics are accurate. This is the recommended setting when you are making use of staged policies or policy rule hit statistics. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |
### BPFDNSPolicyMode

| Value | Description |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inline | Felix does not introduce any delay to any packets. Felix's eBPF programs parse DNS responses and program policy rules immediately, before the DNS response is passed to the application. This only applies to wildcard prefixes: `*.x.y.z` will be processed in this manner, but wildcards such as `x.*.y.z` will not match. A Linux kernel version of 5.17 or greater is required. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |

Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

The doc removes the NFTablesDNSPolicyMode section entirely, but the nftablesDNSPolicyMode field is still present in the FelixConfiguration spec (and dnsPolicyMode explicitly defers to it in nftables mode). Please restore a NFTablesDNSPolicyMode subsection that explains the allowed values and behavior.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +34
import React, { useState, useEffect } from 'react';
import jsonData from './config-params.json';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import TableResource from './TableResource';
import TableConfig from './TableConfig';
import TableEnv from './TableEnv';
import styles from './styles.module.css';

const FelixConfigTable = ({ configType, fieldData }) => {
let table;

switch (configType) {
case 'yaml':
table = <TableResource fieldData={fieldData} />;
break;
case 'config':
table = <TableConfig fieldData={fieldData} />;
break;
case 'env':
table = <TableEnv fieldData={fieldData} />;
break;
default:
table = <p>Unknown config type</p>;
}

return <div>{table}</div>;
};

const FelixConfig = ({ configType, name }) => {
const matchedGroup = jsonData.Groups.find((group) => group.Name === name);
// Debugging logs

if (!matchedGroup) {
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

useState and useEffect are imported but never used, and there’s also a leftover “Debugging logs” comment. Please remove unused imports/comments to keep the component clean and avoid lint/build warnings.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +34
import React, { useState, useEffect } from 'react';
import jsonData from './config-params.json';
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import TableResource from './TableResource';
import TableConfig from './TableConfig';
import TableEnv from './TableEnv';
import styles from './styles.module.css';

const FelixConfigTable = ({ configType, fieldData }) => {
let table;

switch (configType) {
case 'yaml':
table = <TableResource fieldData={fieldData} />;
break;
case 'config':
table = <TableConfig fieldData={fieldData} />;
break;
case 'env':
table = <TableEnv fieldData={fieldData} />;
break;
default:
table = <p>Unknown config type</p>;
}

return <div>{table}</div>;
};

const FelixConfig = ({ configType, name }) => {
const matchedGroup = jsonData.Groups.find((group) => group.Name === name);
// Debugging logs

if (!matchedGroup) {
Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

useState and useEffect are imported but never used, and there’s also a leftover “Debugging logs” comment. Please remove unused imports/comments to keep the component clean and avoid lint/build warnings.

Copilot uses AI. Check for mistakes.
Comment on lines +319 to 333
| Value | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| DelayDeniedPacket | Felix delays any denied packet that traversed a policy that included egress domain matches, but did not match. The packet is released after a fixed time, or after the destination IP address was programmed. |
| DelayDNSResponse | Felix delays any DNS response until related IPSets are programmed. This introduces some latency to all DNS packets (even when no IPSet programming is required), but it ensures policy hit statistics are accurate. This is the recommended setting when you are making use of staged policies or policy rule hit statistics. A Linux kernel version of 3.13 or greater is required to use `DelayDNSResponse`. For earlier kernel versions, this value is modified to `DelayDeniedPacket`. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |

### NFTablesDNSPolicyMode
On Windows, or when using the eBPF dataplane, this setting is ignored. Windows always uses `NoDelay` while eBPF has its own [BPFDNSPolicyMode](#bpfdnspolicymode) option.

| Value | Description |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| DelayDeniedPacket (default) | Felix delays any denied packet that traversed a policy that included egress domain matches, but did not match. The packet is released after a fixed time, or after the destination IP address was programmed. |
| DelayDNSResponse | Felix delays any DNS response until related IPSets are programmed. This introduces some latency to all DNS packets (even when no IPSet programming is required), but it ensures policy hit statistics are accurate. This is the recommended setting when you are making use of staged policies or policy rule hit statistics. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |
### BPFDNSPolicyMode

| Value | Description |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inline | Felix does not introduce any delay to any packets. Felix's eBPF programs parse DNS responses and program policy rules immediately, before the DNS response is passed to the application. This only applies to wildcard prefixes: `*.x.y.z` will be processed in this manner, but wildcards such as `x.*.y.z` will not match. A Linux kernel version of 5.17 or greater is required. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |

Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

The DNSPolicyMode section no longer documents the Inline option, but the generated config-params (and the field schema) still list Inline as an accepted value. Please add Inline back to the table (and any related notes) so the value reference matches the actual supported enum values.

Copilot uses AI. Check for mistakes.
Comment on lines +325 to 333
On Windows, or when using the eBPF dataplane, this setting is ignored. Windows always uses `NoDelay` while eBPF has its own [BPFDNSPolicyMode](#bpfdnspolicymode) option.

| Value | Description |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| DelayDeniedPacket (default) | Felix delays any denied packet that traversed a policy that included egress domain matches, but did not match. The packet is released after a fixed time, or after the destination IP address was programmed. |
| DelayDNSResponse | Felix delays any DNS response until related IPSets are programmed. This introduces some latency to all DNS packets (even when no IPSet programming is required), but it ensures policy hit statistics are accurate. This is the recommended setting when you are making use of staged policies or policy rule hit statistics. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |
### BPFDNSPolicyMode

| Value | Description |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inline | Felix does not introduce any delay to any packets. Felix's eBPF programs parse DNS responses and program policy rules immediately, before the DNS response is passed to the application. This only applies to wildcard prefixes: `*.x.y.z` will be processed in this manner, but wildcards such as `x.*.y.z` will not match. A Linux kernel version of 5.17 or greater is required. |
| NoDelay | Felix does not introduce any delay to the packets. DNS rules may not have been programmed by the time the first packet traverses the policy rules. Client applications need to handle reconnection attempts if initial connection attempts fail. This may be problematic for some applications or for very low DNS TTLs. |

Copy link

Copilot AI Mar 4, 2026

Choose a reason for hiding this comment

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

The doc removes the NFTablesDNSPolicyMode section entirely, but the nftablesDNSPolicyMode field is still present in the FelixConfiguration spec (and dnsPolicyMode explicitly defers to it in nftables mode). Please restore a NFTablesDNSPolicyMode subsection that explains the allowed values and behavior.

Copilot uses AI. Check for mistakes.
@ctauchen
Copy link
Collaborator Author

ctauchen commented Mar 4, 2026

LGTM

@ctauchen ctauchen merged commit 13c6098 into tigera:main Mar 4, 2026
14 of 15 checks passed
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