Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(talos): Add cilium bgpControlPlane support and CNI security settings #1296

Merged
merged 14 commits into from
Feb 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
# https://docs.cilium.io/en/latest/network/bgp-control-plane/
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPPeeringPolicy
metadata:
name: policy
spec:
nodeSelector:
matchLabels:
kubernetes.io/os: linux
virtualRouters:
- localASN: {{ distribution.talos.bgp.local_asn }}
neighbors:
{% if distribution.talos.bgp.peers %}
{% for item in distribution.talos.bgp.peers %}
- peerAddress: "{{ item }}/32"
peerASN: {{ distribution.talos.bgp.peer_asn }}
{% endfor %}
{% else %}
- peerAddress: "{{ nodes.host_network | nthhost(1) }}/32"
peerASN: {{ distribution.talos.bgp.peer_asn }}
{% endif %}
serviceSelector:
matchExpressions:
- {key: somekey, operator: NotIn, values: ['never-used-value']}
---
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
name: pool
spec:
cidrs:
- cidr: "${LOADBALANCER_CIDR}"
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
{% if not feature_gates.dual_stack_ipv4_first %}
{% if distribution.talos.bgp.enabled %}
- ./cilium-bgp.yaml
{% endif %}
{% if ( (not distribution.talos.bgp.enabled) and
(feature_gates.dual_stack_ipv4_first) ) %}
- ./cilium-l2.yaml
{% endif %}
- ./helmrelease.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ data:
{% if feature_gates.dual_stack_ipv4_first %}
CLUSTER_CIDR_V6: "{{ cluster.pod_network.split(',')[1] }}"
{% endif %}
{% if distribution.talos.bgp.enabled %}
LOADBALANCER_CIDR: "{{ distribution.talos.bgp.loadbalancer_network }}"
{% endif %}
29 changes: 27 additions & 2 deletions bootstrap/templates/partials/cilium-values-full.partial.yaml.j2
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
autoDirectNodeRoutes: true
{% if distribution.talos.bgp.enabled %}
bgpControlPlane:
enabled: true
{% endif %}
bpf:
masquerade: true
cgroup:
automount:
enabled: false
hostRoot: /sys/fs/cgroup
cluster:
name: home-kubernetes
id: 1
Expand Down Expand Up @@ -68,7 +76,8 @@ k8sServicePort: 7445
kubeProxyReplacement: true
kubeProxyReplacementHealthzBindAddr: 0.0.0.0:10256
l2announcements:
{% if feature_gates.dual_stack_ipv4_first %}
{% if ( (distribution.talos.bgp.enabled) or
(feature_gates.dual_stack_ipv4_first) ) %}
# https://github.com/cilium/cilium/issues/28985
enabled: false
{% else %}
Expand Down Expand Up @@ -101,4 +110,20 @@ dashboards:
rollOutCiliumPods: true
routingMode: native
securityContext:
privileged: true
capabilities:
ciliumAgent:
- CHOWN
- KILL
- NET_ADMIN
- NET_RAW
- IPC_LOCK
- SYS_ADMIN
- SYS_RESOURCE
- DAC_OVERRIDE
- FOWNER
- SETGID
- SETUID
cleanCiliumState:
- NET_ADMIN
- SYS_ADMIN
- SYS_RESOURCE
29 changes: 27 additions & 2 deletions bootstrap/templates/partials/cilium-values-init.partial.yaml.j2
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
autoDirectNodeRoutes: true
{% if distribution.talos.bgp.enabled %}
bgpControlPlane:
enabled: true
{% endif %}
bpf:
masquerade: true
cgroup:
automount:
enabled: false
hostRoot: /sys/fs/cgroup
cluster:
name: home-kubernetes
id: 1
Expand Down Expand Up @@ -31,7 +39,8 @@ k8sServicePort: 7445
kubeProxyReplacement: true
kubeProxyReplacementHealthzBindAddr: 0.0.0.0:10256
l2announcements:
{% if feature_gates.dual_stack_ipv4_first %}
{% if ( (distribution.talos.bgp.enabled) or
(feature_gates.dual_stack_ipv4_first) ) %}
# https://github.com/cilium/cilium/issues/28985
enabled: false
{% else %}
Expand All @@ -47,4 +56,20 @@ operator:
rollOutCiliumPods: true
routingMode: native
securityContext:
privileged: true
capabilities:
ciliumAgent:
- CHOWN
- KILL
- NET_ADMIN
- NET_RAW
- IPC_LOCK
- SYS_ADMIN
- SYS_RESOURCE
- DAC_OVERRIDE
- FOWNER
- SETGID
- SETUID
cleanCiliumState:
- NET_ADMIN
- SYS_ADMIN
- SYS_RESOURCE
16 changes: 16 additions & 0 deletions config.sample.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,22 @@ distribution:
# # (Optional) Add vlan tag to network master device
# # See: https://www.talos.dev/latest/advanced/advanced-networking/#vlans
# vlan: 1
# # (Optional) Use cilium BGP control plane when L2 announcements won't traverse VLAN network segments.
# # Needs a BGP capable router setup with the node IPs as peers.
# # See: https://docs.cilium.io/en/latest/network/bgp-control-plane/
# bgp:
# enabled: true
# # (Optional) If using multiple BGP peers add them here.
# # Default is .1 derrived from host_network: ['x.x.x.1']
# peers: []
# # (Required) Set the BGP Autonomous System Number for the router(s) and nodes.
# # If these match, iBGP will be used. If not, eBGP will be used.
# peer_asn: 64512 # Router(s) AS
# local_asn: 64512 # Node(s) AS
# # (Required) The loadbalancer CIDR for the cluster, this must NOT overlap with any
# # existing networks and is usually a /16 (64K IPs).
# # If you want to use IPv6 check the advanced flags below
# loadbalancer_network: 10.123.0.0/16

#
# (Required) Timezone is your IANA formatted timezone (e.g. America/New_York)
Expand Down
Loading