Skip to content

Commit cf41a68

Browse files
authored
Merge pull request #23518 from Roslaan001/feat/iso-nftables
iso: Enable kernel nftables (CONFIG_NF_TABLES) for knftables consumers
2 parents 52b3d9f + 0110e6b commit cf41a68

5 files changed

Lines changed: 90 additions & 2 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ KIC_VERSION ?= $(shell grep -E "Version =" pkg/drivers/kic/types.go | cut -d \"
2424
HUGO_VERSION ?= $(shell grep -E "HUGO_VERSION = \"" netlify.toml | cut -d \" -f2)
2525

2626
# Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
27-
ISO_VERSION ?= v1.38.0-1787134750-23516
27+
ISO_VERSION ?= v1.38.0-1787403653-23518
2828

2929
# Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta
3030
DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))

deploy/iso/minikube-iso/board/minikube/aarch64/linux_aarch64_defconfig

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,32 @@ CONFIG_NF_CONNTRACK_SANE=m
106106
CONFIG_NF_CONNTRACK_SIP=m
107107
CONFIG_NF_CONNTRACK_TFTP=m
108108
CONFIG_NF_CT_NETLINK=m
109+
CONFIG_NF_TABLES=m
110+
CONFIG_NF_TABLES_INET=y
111+
CONFIG_NF_TABLES_NETDEV=y
112+
CONFIG_NFT_NUMGEN=m
113+
CONFIG_NFT_CT=m
114+
CONFIG_NFT_FLOW_OFFLOAD=m
115+
CONFIG_NFT_CONNLIMIT=m
116+
CONFIG_NFT_LOG=m
117+
CONFIG_NFT_LIMIT=m
118+
CONFIG_NFT_MASQ=m
119+
CONFIG_NFT_REDIR=m
120+
CONFIG_NFT_NAT=m
121+
CONFIG_NFT_TUNNEL=m
122+
CONFIG_NFT_QUEUE=m
123+
CONFIG_NFT_QUOTA=m
124+
CONFIG_NFT_REJECT=m
125+
CONFIG_NFT_REJECT_INET=m
126+
CONFIG_NFT_COMPAT=m
127+
CONFIG_NFT_HASH=m
128+
CONFIG_NFT_FIB=m
129+
CONFIG_NFT_FIB_INET=m
130+
CONFIG_NFT_XFRM=m
131+
CONFIG_NFT_SOCKET=m
132+
CONFIG_NFT_OSF=m
133+
CONFIG_NFT_TPROXY=m
134+
CONFIG_NFT_SYNPROXY=m
109135
CONFIG_NETFILTER_XT_SET=m
110136
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
111137
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
@@ -209,6 +235,11 @@ CONFIG_IP_VS_SED=m
209235
CONFIG_IP_VS_NQ=m
210236
CONFIG_IP_VS_NFCT=y
211237
CONFIG_NF_LOG_ARP=m
238+
CONFIG_NF_TABLES_IPV4=y
239+
CONFIG_NFT_REJECT_IPV4=m
240+
CONFIG_NFT_DUP_IPV4=m
241+
CONFIG_NFT_FIB_IPV4=m
242+
CONFIG_NF_TABLES_ARP=y
212243
CONFIG_IP_NF_IPTABLES=m
213244
CONFIG_IP_NF_MATCH_RPFILTER=m
214245
CONFIG_IP_NF_FILTER=m
@@ -219,13 +250,20 @@ CONFIG_IP_NF_TARGET_NETMAP=m
219250
CONFIG_IP_NF_TARGET_REDIRECT=m
220251
CONFIG_IP_NF_MANGLE=m
221252
CONFIG_IP_NF_RAW=m
253+
CONFIG_NF_TABLES_IPV6=y
254+
CONFIG_NFT_REJECT_IPV6=m
255+
CONFIG_NFT_DUP_IPV6=m
256+
CONFIG_NFT_FIB_IPV6=m
222257
CONFIG_IP6_NF_IPTABLES=m
223258
CONFIG_IP6_NF_MATCH_IPV6HEADER=m
224259
CONFIG_IP6_NF_FILTER=m
225260
CONFIG_IP6_NF_TARGET_REJECT=m
226261
CONFIG_IP6_NF_MANGLE=m
227262
CONFIG_IP6_NF_NAT=m
228263
CONFIG_IP6_NF_TARGET_MASQUERADE=m
264+
CONFIG_NF_TABLES_BRIDGE=m
265+
CONFIG_NFT_BRIDGE_META=m
266+
CONFIG_NFT_BRIDGE_REJECT=m
229267
CONFIG_BRIDGE=m
230268
CONFIG_BRIDGE_VLAN_FILTERING=y
231269
CONFIG_NET_DSA=m

deploy/iso/minikube-iso/board/minikube/x86_64/linux_x86_64_defconfig

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,32 @@ CONFIG_NF_CONNTRACK_SANE=m
121121
CONFIG_NF_CONNTRACK_SIP=m
122122
CONFIG_NF_CONNTRACK_TFTP=m
123123
CONFIG_NF_CT_NETLINK=m
124+
CONFIG_NF_TABLES=m
125+
CONFIG_NF_TABLES_INET=y
126+
CONFIG_NF_TABLES_NETDEV=y
127+
CONFIG_NFT_NUMGEN=m
128+
CONFIG_NFT_CT=m
129+
CONFIG_NFT_FLOW_OFFLOAD=m
130+
CONFIG_NFT_CONNLIMIT=m
131+
CONFIG_NFT_LOG=m
132+
CONFIG_NFT_LIMIT=m
133+
CONFIG_NFT_MASQ=m
134+
CONFIG_NFT_REDIR=m
135+
CONFIG_NFT_NAT=m
136+
CONFIG_NFT_TUNNEL=m
137+
CONFIG_NFT_QUEUE=m
138+
CONFIG_NFT_QUOTA=m
139+
CONFIG_NFT_REJECT=m
140+
CONFIG_NFT_REJECT_INET=m
141+
CONFIG_NFT_COMPAT=m
142+
CONFIG_NFT_HASH=m
143+
CONFIG_NFT_FIB=m
144+
CONFIG_NFT_FIB_INET=m
145+
CONFIG_NFT_XFRM=m
146+
CONFIG_NFT_SOCKET=m
147+
CONFIG_NFT_OSF=m
148+
CONFIG_NFT_TPROXY=m
149+
CONFIG_NFT_SYNPROXY=m
124150
CONFIG_NETFILTER_XT_SET=m
125151
CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
126152
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
@@ -225,6 +251,11 @@ CONFIG_IP_VS_SED=m
225251
CONFIG_IP_VS_NQ=m
226252
CONFIG_IP_VS_NFCT=y
227253
CONFIG_NF_LOG_ARP=m
254+
CONFIG_NF_TABLES_IPV4=y
255+
CONFIG_NFT_REJECT_IPV4=m
256+
CONFIG_NFT_DUP_IPV4=m
257+
CONFIG_NFT_FIB_IPV4=m
258+
CONFIG_NF_TABLES_ARP=y
228259
CONFIG_IP_NF_IPTABLES=y
229260
CONFIG_IP_NF_MATCH_RPFILTER=y
230261
CONFIG_IP_NF_FILTER=y
@@ -235,11 +266,18 @@ CONFIG_IP_NF_TARGET_NETMAP=m
235266
CONFIG_IP_NF_TARGET_REDIRECT=m
236267
CONFIG_IP_NF_MANGLE=y
237268
CONFIG_IP_NF_RAW=m
269+
CONFIG_NF_TABLES_IPV6=y
270+
CONFIG_NFT_REJECT_IPV6=m
271+
CONFIG_NFT_DUP_IPV6=m
272+
CONFIG_NFT_FIB_IPV6=m
238273
CONFIG_IP6_NF_IPTABLES=y
239274
CONFIG_IP6_NF_MATCH_IPV6HEADER=y
240275
CONFIG_IP6_NF_FILTER=y
241276
CONFIG_IP6_NF_TARGET_REJECT=y
242277
CONFIG_IP6_NF_MANGLE=y
278+
CONFIG_NF_TABLES_BRIDGE=m
279+
CONFIG_NFT_BRIDGE_META=m
280+
CONFIG_NFT_BRIDGE_REJECT=m
243281
CONFIG_BRIDGE_NF_EBTABLES=m
244282
CONFIG_BRIDGE_EBT_BROUTE=m
245283
CONFIG_BRIDGE_EBT_T_FILTER=m

pkg/minikube/download/iso.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const fileScheme = "file"
4141
// DefaultISOURLs returns a list of ISO URL's to consult by default, in priority order
4242
func DefaultISOURLs() []string {
4343
v := version.GetISOVersion()
44-
isoBucket := "minikube-builds/iso/23516"
44+
isoBucket := "minikube-builds/iso/23518"
4545

4646
return []string{
4747
fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s-%s.iso", isoBucket, v, runtime.GOARCH),

test/integration/iso_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,18 @@ func TestISOImage(t *testing.T) {
179179
t.Errorf("expected file %q to exist, but it does not. Per-task IO accounting requires CONFIG_TASK_IO_ACCOUNTING (with CONFIG_TASK_XACCT and CONFIG_TASKSTATS) in kernel configuration.", ioFile)
180180
}
181181
})
182+
183+
t.Run("nftablesSupport", func(t *testing.T) {
184+
// knftables (e.g. Submariner globalnet since v0.22) needs nftables in the guest kernel (https://github.com/kubernetes/minikube/issues/23450).
185+
rr, err := Run(t, exec.CommandContext(ctx, Target(), "-p", profile, "ssh",
186+
`zgrep -E '^CONFIG_NF_TABLES=(y|m)$' /proc/config.gz >/dev/null && echo OK || echo MISSING`))
187+
if err != nil {
188+
t.Fatalf("failed to check CONFIG_NF_TABLES: args %q: %v", rr.Command(), err)
189+
}
190+
if strings.TrimSpace(rr.Stdout.String()) != "OK" {
191+
t.Errorf("expected CONFIG_NF_TABLES=y|m in /proc/config.gz; knftables requires nftables kernel support")
192+
}
193+
})
182194
}
183195

184196
func helmPackageVersion(t *testing.T) string {

0 commit comments

Comments
 (0)