--- reviewers: - danwent title: 使用 Cilium 作为 NetworkPolicy content_template: templates/task weight: 20 --- {{% capture overview %}} 本页展示了如何使用 Cilium 作为 NetworkPolicy。 关于 Cilium 的背景知识,请阅读 [Cilium 介绍](https://cilium.readthedocs.io/en/latest/intro)。 {{% /capture %}} {{% capture prerequisites %}} {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} {{% /capture %}} {{% capture steps %}} ## 在 Minikube 上部署 Cilium 用于基本测试 为了轻松熟悉 Cilium 您可以根据[Cilium Kubernetes 入门指南](https://docs.cilium.io/en/latest/gettingstarted/minikube/)在 minikube 中执行一个 cilium 的基本的 DaemonSet 安装。 在 minikube 中的安装配置使用一个简单的“一体化” YAML 文件,包括了 Cilium 的 DaemonSet 配置,连接 minikube 的 etcd 实例,以及适当的 RBAC 设置。 ```shell $ 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 安装指南](https://cilium.readthedocs.io/en/latest/gettingstarted/#installation) ,此文档包括详细的需求、说明和生产用途 DaemonSet 文件示例。 {{% /capture %}} {{% capture discussion %}} ## 了解 Cilium 组件 部署使用 Cilium 的集群会添加 Pods 到`kube-system`命名空间。 要查看此Pod列表,运行: ```shell kubectl get pods --namespace=kube-system ``` 您将看到像这样的 Pods 列表: ```console NAME DESIRED CURRENT READY NODE-SELECTOR AGE cilium 1 1 1 2m ... ``` 有两个主要组件需要注意: - 在集群中的每个节点上都会运行一个 `cilium` Pod,并利用Linux BPF执行网络策略管理该节点上进出 Pod 的流量。 - 对于生产部署,Cilium 应该复用 Kubernetes 所使用的键值存储集群(如 etcd),其通常在Kubernetes 的 master 节点上运行。 [Cilium Kubernetes安装指南](https://cilium.readthedocs.io/en/latest/gettingstarted/#installation) 包括了一个示例 DaemonSet,可以自定义指定此键值存储集群。 简单的 minikube 的“一体化” DaemonSet 不需要这样的配置,因为它会自动连接到 minikube 的 etcd 实例。 {{% /capture %}} {{% capture whatsnext %}} 群集运行后,您可以按照[声明网络策略](/docs/tasks/administer-cluster/declare-network-policy/) 用 Cilium 试用 Kubernetes NetworkPolicy。 玩得开心,如果您有任何疑问,请联系我们 [Cilium Slack Channel](https://cilium.herokuapp.com/)。 {{% /capture %}}