看了下说明, 这个东西的主要作用是用于节点间 Pod 流量的加密。

启动集群

Helm 命令安装 Calico

  1. 添加一个helm repo
1
helm repo add projectcalico https://docs.tigera.io/calico/charts
  1. 创建一个 value.yaml
1
2
3
4
5
6
7
cat > values.yaml <<EOF
installation:
kubernetesProvider: EKS
registry: reg.liarlee.site/docker.io
EOF

helm show values projectcalico/tigera-operator --version v3.27.2
  1. 通过命令安装
1
2
3
4
5
kubectl create namespace tigera-operator

helm install calico projectcalico/tigera-operator --version v3.27.2 -f values.yaml --namespace tigera-operator

watch kubectl get pods -n calico-system

启用 WireGuard

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
kubectl patch felixconfiguration default --type='merge' -p '{"spec":{"wireguardEnabled":true}}'

# 在节点上面可以看到 wireguard 的网卡 和 内核模块, 说明已经成功了。
# EKS 默认的 AMI 里面是带这个模块的, 不需要手动安装, 可以自动按需装载。
~]$ lsmod | grep wireguard
wireguard 98304 0
curve25519_x86_64 36864 1 wireguard
libcurve25519_generic 49152 2 curve25519_x86_64,wireguard
libchacha20poly1305 16384 1 wireguard
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 28672 1 wireguard

~]$ ip ad
35: wireguard.cali: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8941 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 192.168.137.134/32 scope global wireguard.cali
valid_lft forever preferred_lft forever

# 或者可以查看
> kubectl get felixconfiguration default -o yaml
apiVersion: projectcalico.org/v3
kind: FelixConfiguration
...
spec:
bpfConnectTimeLoadBalancing: TCP
bpfHostNetworkedNATWithoutCTLB: Enabled
bpfLogLevel: ""
floatingIPs: Disabled
healthPort: 9099
logSeverityScreen: Info
reportingInterval: 0s
routeTableRange:
max: 99
min: 65
vxlanVNI: 4096
wireguardEnabled: true

参考文档

Project Calico:
https://docs.tigera.io/calico/3.25/network-policy/encrypt-cluster-pod-traffic#enable-wireguard-for-a-cluster