使用 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 设置。

  1. $ kubectl create -f https://raw.githubusercontent.com/cilium/cilium/master/examples/kubernetes/cilium.yaml
  2. configmap "cilium-config" created
  3. secret "cilium-etcd-secrets" created
  4. serviceaccount "cilium" created
  5. clusterrolebinding "cilium" created
  6. daemonset "cilium" created
  7. clusterrole "cilium" created

入门指南其余的部分用一个示例应用说明了如何强制执行L3/L4(即 IP 地址+端口)的安全策略以及L7 (如 HTTP)的安全策略。

部署 Cilium 用于生产用途

关于部署 Cilium 用于生产的详细说明,请见Cilium Kubernetes 安装指南 ,此文档包括详细的需求、说明和生产用途 DaemonSet 文件示例。

了解 Cilium 组件

部署使用 Cilium 的集群会添加 Pods 到kube-system命名空间。 要查看此Pod列表,运行:

  1. kubectl get pods --namespace=kube-system

您将看到像这样的 Pods 列表:

  1. NAME DESIRED CURRENT READY NODE-SELECTOR AGE
  2. cilium 1 1 1 <none> 2m
  3. ...

有两个主要组件需要注意:

  • 在集群中的每个节点上都会运行一个 cilium Pod,并利用Linux BPF执行网络策略管理该节点上进出 Pod 的流量。
  • 对于生产部署,Cilium 应该复用 Kubernetes 所使用的键值存储集群(如 etcd),其通常在Kubernetes 的 master 节点上运行。 Cilium Kubernetes安装指南 包括了一个示例 DaemonSet,可以自定义指定此键值存储集群。 简单的 minikube 的“一体化” DaemonSet 不需要这样的配置,因为它会自动连接到 minikube 的 etcd 实例。

接下来

群集运行后,您可以按照声明网络策略 用 Cilium 试用 Kubernetes NetworkPolicy。 玩得开心,如果您有任何疑问,请联系我们 Cilium Slack Channel