Calico 默認的 policy 規則是:容器只能與同一個 calico 網絡中的容器通訊。本節討論如何定製 policy。web
calico 可以讓用戶定義靈活的 policy 規則,精細化控制進出容器的流量,下面咱們就來實踐一個場景:docker
建立一個新的 calico 網絡 cal_web
並部署一個 httpd 容器 web1
。網絡
定義 policy 容許 cal_net2
中的容器訪問 web1
的 80 端口。app
首先建立 cal_web
。code
docker network create --driver calico --ipam-driver calico-ipam cal_web ip
在 host1 中運行容器 web1,鏈接到 cal_web:文檔
docker container run --net cal_web --name web1 -d httpd部署
web1 的 IP 爲 192.168.119.7
。get
目前 bbox3 還沒法訪問 web1 的 80 端口。容器
建立 policy 文件 web.yml,內容爲:
① profile 與 cal_web
網絡同名,cal_web
的全部容器(web1)都會應用此 profile 中的 policy。
② ingress
容許 cal_net2
中的容器(bbox3)訪問。
③ 只開放 80
端口。
應用該 policy。
calicoctl apply -f web.yml
如今 bbox3 已經可以訪問 web1 的 http 服務了。
不過 ping 仍是不行,由於只放開了 80 端口。
上面這個例子比較簡單,不過已經向咱們展現了 calico 強大的 policy 功能。經過 policy,能夠動態實現很是複雜的容器訪問控制。有關 calico policy 更多的配置,可參看官網文檔 http://docs.projectcalico.org/v2.0/reference/calicoctl/resources/policy
下一節咱們討論 Calico 的最後一項內容:IPAM。