Skip to content

Instantly share code, notes, and snippets.

@matejaputic
Last active June 21, 2025 15:17
Show Gist options
  • Select an option

  • Save matejaputic/bfa4fd5ac494f01a8a0b60180f77b9e2 to your computer and use it in GitHub Desktop.

Select an option

Save matejaputic/bfa4fd5ac494f01a8a0b60180f77b9e2 to your computer and use it in GitHub Desktop.
Talos 1.9.5, Cilium 1.8.0-pre.0, Mikrotik RouterOS 7.18.2, BGP Config
---
apiVersion: cilium.io/v2alpha1
kind: CiliumLoadBalancerIPPool
metadata:
name: cilium-external-ip-pool
spec:
blocks:
- cidr: "172.16.0.0/16"
allowFirstLastIPs: "No"
---
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPPeerConfig
metadata:
name: peer-config-generic
spec:
families:
- afi: ipv4
safi: unicast
advertisements:
matchLabels:
advertise: bgp
---
apiVersion: cilium.io/v2alpha1
kind: CiliumBGPClusterConfig
metadata:
name: bgp-cluster-config
spec:
nodeSelector:
matchLabels:
# Match all nodes, change as needed
kubernetes.io/arch: amd64
bgpInstances:
- name: instance-65530
localASN: 65530
peers:
- name: mikrotik-router
peerASN: 65530
peerAddress: "192.168.88.1"
peerConfigRef:
name: peer-config-generic
---
apiVersion: "cilium.io/v2alpha1"
kind: CiliumBGPAdvertisement
metadata:
name: bgp-advertise-services
labels:
advertise: bgp
spec:
advertisements:
- advertisementType: "Service"
service:
addresses:
- LoadBalancerIP
selector:
matchExpressions:
# Apply only to services not in kube-system namespace
- {
key: io.kubernetes.service.namespace,
operator: NotIn,
values: ["kube-system"],
}
> /routing/bgp/connection print
0 name="bgp1"
remote.address=192.168.88.100/32
local.default-address=192.168.88.1 .role=ibgp
routing-table=main templates=default as=65530
> /ip/firewall/add action=accept chain=forward comment="Allow BGP routes without FastTrack" dst-address=<cilium-bgp-ippool>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment