使用 Cilium 作为 NetworkPolicy
本页展示了如何使用 Cilium 作为 NetworkPolicy。
关于 Cilium 的背景知识,请阅读 Cilium 介绍。
准备开始
你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 Minikube 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:
要获知版本信息,请输入 kubectl version
.
在 Minikube 上部署 Cilium 用于基本测试
为了轻松熟悉 Cilium 您可以根据Cilium Kubernetes 入门指南在 minikube 中执行一个 cilium 的基本的 DaemonSet 安装。
在 minikube 中的安装配置使用一个简单的“一体化” YAML 文件,包括了 Cilium 的 DaemonSet 配置,连接 minikube 的 etcd 实例,以及适当的 RBAC 设置。
$ kubectl create -f https://raw.githubusercontent.com/cilium/cilium/master/examples/kubernetes/cilium.yaml
configmap "cilium-config" created
secret "cilium-etcd-secrets" created
serviceaccount "cilium" created
clusterrolebinding "cilium" created
daemonset "cilium" created
clusterrole "cilium" created
入门指南其余的部分用一个示例应用说明了如何强制执行L3/L4(即 IP 地址+端口)的安全策略以及L7 (如 HTTP)的安全策略。
部署 Cilium 用于生产用途
关于部署 Cilium 用于生产的详细说明,请见Cilium Kubernetes 安装指南 ,此文档包括详细的需求、说明和生产用途 DaemonSet 文件示例。
了解 Cilium 组件
部署使用 Cilium 的集群会添加 Pods 到kube-system
命名空间。 要查看此Pod列表,运行:
kubectl get pods --namespace=kube-system
您将看到像这样的 Pods 列表:
NAME DESIRED CURRENT READY NODE-SELECTOR AGE
cilium 1 1 1 <none> 2m
...
有两个主要组件需要注意:
- 在集群中的每个节点上都会运行一个
cilium
Pod,并利用Linux BPF执行网络策略管理该节点上进出 Pod 的流量。 - 对于生产部署,Cilium 应该复用 Kubernetes 所使用的键值存储集群(如 etcd),其通常在Kubernetes 的 master 节点上运行。 Cilium Kubernetes安装指南 包括了一个示例 DaemonSet,可以自定义指定此键值存储集群。 简单的 minikube 的“一体化” DaemonSet 不需要这样的配置,因为它会自动连接到 minikube 的 etcd 实例。
接下来
群集运行后,您可以按照声明网络策略 用 Cilium 试用 Kubernetes NetworkPolicy。 玩得开心,如果您有任何疑问,请联系我们 Cilium Slack Channel。