Skip to content

Commit 53ead06

Browse files
committed
feat(k8s/magiclove/cilium): replace l2 announcements with bgp
1 parent 95dd2a9 commit 53ead06

10 files changed

+143
-28
lines changed

k8s/magiclove/cilium/BUILD.bazel

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ cue_library(
44
name = "cue_cilium_library",
55
srcs = [
66
"certificate_list.cue",
7-
"cilium_l2_announcement_policy_list.cue",
7+
"cilium_bgp_advertisement_list.cue",
8+
"cilium_bgp_cluster_config_list.cue",
9+
"cilium_bgp_peer_config_list.cue",
810
"cilium_load_balancer_ip_pool_list.cue",
911
"cluster_role_binding_list.cue",
1012
"cluster_role_list.cue",

k8s/magiclove/cilium/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,24 @@ the target version.
4141
❯ cue import -l "strings.ToLower(kind)" --list -R cilium-1.14.0.yaml cilium-1.16.1.yaml
4242
❯ diff -urN cilium-1.14.0.cue cilium-1.16.1.cue > out.diff
4343
```
44+
45+
## BGP
46+
47+
```frr
48+
router bgp 65000
49+
bgp router-id 172.16.0.1
50+
no bgp ebgp-requires-policy
51+
52+
neighbor magiclove peer-group
53+
neighbor magiclove remote-as 65100
54+
55+
neighbor 172.16.0.110 peer-group magiclove
56+
neighbor 172.16.0.120 peer-group magiclove
57+
neighbor 172.16.0.130 peer-group magiclove
58+
59+
address-family ipv4 unicast
60+
neighbor magiclove next-hop-self
61+
neighbor magiclove soft-reconfiguration inbound
62+
exit-address-family
63+
exit
64+
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package cilium
2+
3+
import ciliumv2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
4+
5+
#CiliumBGPAdvertisementList: ciliumv2.#CiliumBGPAdvertisementList & {
6+
apiVersion: "cilium.io/v2"
7+
kind: "CiliumBGPAdvertisementList"
8+
items: [...{
9+
apiVersion: "cilium.io/v2"
10+
kind: "CiliumBGPAdvertisement"
11+
}]
12+
}
13+
14+
#CiliumBGPAdvertisementList: items: [{
15+
metadata: {
16+
name: "default"
17+
labels: advertise: "bgp"
18+
}
19+
spec: advertisements: [{
20+
advertisementType: ciliumv2.#BGPServiceAdvert
21+
service: addresses: [ciliumv2.#BGPLoadBalancerIPAddr]
22+
selector: matchExpressions: [{
23+
key: "somekey"
24+
operator: "NotIn"
25+
values: ["never-used-value"]
26+
}]
27+
}]
28+
}]
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package cilium
2+
3+
import ciliumv2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
4+
5+
#CiliumBGPClusterConfigList: ciliumv2.#CiliumBGPClusterConfigList & {
6+
apiVersion: "cilium.io/v2"
7+
kind: "CiliumBGPClusterConfigList"
8+
items: [...{
9+
apiVersion: "cilium.io/v2"
10+
kind: "CiliumBGPClusterConfig"
11+
}]
12+
}
13+
14+
#CiliumBGPClusterConfigList: items: [{
15+
metadata: name: "default"
16+
spec: {
17+
nodeSelector: matchLabels: "kubernetes.io/hostname": "dice"
18+
bgpInstances: [{
19+
name: "cilium"
20+
localASN: 65100
21+
peers: [{
22+
name: "unifi"
23+
peerASN: 65000
24+
peerAddress: "172.16.0.1"
25+
peerConfigRef: name: "default"
26+
}]
27+
}]
28+
}
29+
}]
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package cilium
2+
3+
import ciliumv2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
4+
5+
#CiliumBGPPeerConfigList: ciliumv2.#CiliumBGPPeerConfigList & {
6+
apiVersion: "cilium.io/v2"
7+
kind: "CiliumBGPPeerConfigList"
8+
items: [...{
9+
apiVersion: "cilium.io/v2"
10+
kind: "CiliumBGPPeerConfig"
11+
}]
12+
}
13+
14+
#CiliumBGPPeerConfigList: items: [{
15+
metadata: name: "default"
16+
spec: families: [{
17+
afi: "ipv4"
18+
safi: "unicast"
19+
advertisements: matchLabels: advertise: "bgp"
20+
}]
21+
}]

k8s/magiclove/cilium/cilium_l2_announcement_policy_list.cue

Lines changed: 0 additions & 20 deletions
This file was deleted.

k8s/magiclove/cilium/config_map_list.cue

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,16 @@ import "k8s.io/api/core/v1"
252252
"l2-announcements-lease-duration": "30s"
253253
"l2-announcements-renew-deadline": "10s"
254254
"l2-announcements-retry-period": "1s"
255-
"k8s-client-qps": "50"
256-
"k8s-client-burst": "150"
255+
256+
// https://docs.cilium.io/en/latest/network/bgp-control-plane/bgp-control-plane/
257+
"enable-bgp-control-plane": "true"
258+
"bgp-secrets-namespace": #Namespace
259+
"enable-bgp-control-plane-status-report": "true"
260+
"bgp-router-id-allocation-mode": "default"
261+
"bgp-router-id-allocation-ip-pool": ""
262+
"enable-bgp-legacy-origin-attribute": "false"
263+
264+
"k8s-client-qps": "50"
265+
"k8s-client-burst": "150"
257266
}
258267
}]

k8s/magiclove/cilium/list.cue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ import (
2525

2626
_items: [
2727
#CertificateList.items,
28-
#CiliumL2AnnouncementPolicyList.items,
28+
#CiliumBGPAdvertisementList.items,
29+
#CiliumBGPClusterConfigList.items,
30+
#CiliumBGPPeerConfigList.items,
2931
#CiliumLoadBalancerIPPoolList.items,
3032
#ClusterRoleBindingList.items,
3133
#ClusterRoleList.items,

k8s/magiclove/cilium/role_binding_list.cue

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,26 @@ import rbacv1 "k8s.io/api/rbac/v1"
1717
labels: "app.kubernetes.io/part-of": "cilium"
1818
}
1919
roleRef: {
20-
apiGroup: "rbac.authorization.k8s.io"
20+
apiGroup: rbacv1.#GroupName
2121
kind: "Role"
2222
name: "cilium-config-agent"
2323
}
2424
subjects: [{
25-
kind: "ServiceAccount"
26-
name: "cilium"
27-
namespace: #Namespace
25+
kind: rbacv1.#ServiceAccountKind
26+
name: "cilium"
27+
}]
28+
}, {
29+
metadata: {
30+
name: "cilium-bgp-control-plane-secrets"
31+
labels: "app.kubernetes.io/part-of": "cilium"
32+
}
33+
roleRef: {
34+
apiGroup: rbacv1.#GroupName
35+
kind: "Role"
36+
name: "cilium-bgp-control-plane-secrets"
37+
}
38+
subjects: [{
39+
kind: rbacv1.#ServiceAccountKind
40+
name: "cilium"
2841
}]
2942
}]

k8s/magiclove/cilium/role_list.cue

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,14 @@ import rbacv1 "k8s.io/api/rbac/v1"
2121
resources: ["configmaps"]
2222
verbs: ["get", "list", "watch"]
2323
}]
24+
}, {
25+
metadata: {
26+
name: "cilium-bgp-control-plane-secrets"
27+
labels: "app.kubernetes.io/part-of": "cilium"
28+
}
29+
rules: [{
30+
apiGroups: [""]
31+
resources: ["secrets"]
32+
verbs: ["get", "list", "watch"]
33+
}]
2434
}]

0 commit comments

Comments
 (0)