Kubernetes网络策略验证程序。

illuminatio的Python项目详细描述


Illuminato-Kubernetes网络策略验证程序

Build Status

alt text

Illuminato是一个自动测试Kubernetes网络策略的工具。 只需执行illuminatio clean run Illuminato将扫描Kubernetes集群以获取网络策略,相应地构建测试用例并执行它们 以确定这些政策是否有效。

概念的概述在the concept doc中可视化。

开始

按照这些说明启动和运行照明。

先决条件

  • Python3
  • PIP 3

安装

使用pip:

pip3 install illuminatio

或者直接从存储库:

git clone https://github.com/inovex/illuminatio
cd illuminatio
python3 setup.py install
cd ..

示例用法

创建要测试的展开:

kubectl create deployment web --image=nginx
kubectl expose deployment web --port 80 --target-port 80

为您的部署定义并创建网络策略:

cat <<EOF | kubectl create -f -kind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:  name: web-deny-allspec:  podSelector:    matchLabels:      app: web  ingress: []EOF

测试新创建的网络策略:

illuminatio clean run
Starting cleaning resources with policies ['on-request', 'always']
Deleting namespacess [] with cleanup policy on-request
Deleting namespacess [] with cleanup policy always
Deleting DSs in default with cleanup policy on-request
Deleting pods in default with cleanup policy on-request
Deleting svcs in default with cleanup policy on-request
Deleting CfgMaps in default with cleanup policy on-request
Deleting CRBs  with cleanup policy on-request globally
Deleting SAs in default with cleanup policy on-request
Deleting DSs in default with cleanup policy always
Deleting pods in default with cleanup policy always
Deleting svcs in default with cleanup policy always
Deleting CfgMaps in default with cleanup policy always
Deleting CRBs  with cleanup policy always globally
Deleting SAs in default with cleanup policy always
Finished cleanUp

Starting test generation and run.
Got cases: [NetworkTestCase(from=ClusterHost(namespace=default, podLabels={'app': 'web'}), to=ClusterHost(namespace=default, podLabels={'app': 'web'}), port=-*)]
Generated 1 cases in 0.0701 seconds
FROM             TO               PORT
default:app=web  default:app=web  -*

Using existing cluster role
Creating cluster role binding
TestResults: {'default:app=web': {'default:app=web': {'-*': {'success': True}}}}
Finished running 1 tests in 18.7413 seconds
FROM             TO               PORT  RESULT
default:app=web  default:app=web  -*    success
>< . > } }关键字确保“清除”清除所有过去运行时创建的所有潜在资源,以防止潜在问题,但不会影响用户生成的资源。

请注意当前每一次新的跑步都需要清洁,因为跑步者不会一直寻找新的病例。

如果您真的想保留生成的资源,可以省略clean关键字。

如果您完成了测试,您可能希望轻松删除由Illuminato创建的所有资源:

illuminatio clean

要在不运行测试的情况下预览生成的测试用例,请使用illuminatio run--dry选项:

illuminatio run --dry
Starting test generation and run.
Got cases: [NetworkTestCase(from=ClusterHost(namespace=default, podLabels={'app': 'web'}), to=ClusterHost(namespace=default, podLabels={'app': 'web'}), port=-*)]
Generated 1 cases in 0.0902 seconds
FROM             TO               PORT
default:app=web  default:app=web  -*

Skipping test execution as --dry was set

使用--help标记可以在任何级别上找到所有选项和进一步的信息:

illuminatio --help
Usage: illuminatio [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

Options:
  -v, --verbosity LVL  Either CRITICAL, ERROR, WARNING, INFO or DEBUG
  --incluster
  --help               Show this message and exit.

Commands:
  clean
  run

参考文献

这个标志是由皮亚布鲁姆创造的。

贡献

我们很高兴阅读您的issues并接受您的Pull Requests.

有关开发照明设备的更多信息,请参阅the development docs

许可证

此项目(不包括徽标)是根据Apache2.0许可的条款授权的。 该徽标根据CC BY-NC-ND 4.0许可的条款获得许可。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java启动时加载值示例代码(xml)   java什么是视图索引?当视图组将视图添加到索引1时会发生什么   java如何调用HttpUrlConnection disconnect()   java将日期转换为毫秒,givse错误结果   java正在处理“.”上的IP地址拆分字符串性格   java proguard不创建输出jar   编译中的Java默认修饰符   java中的管道I/O流   java为集合返回的最佳迭代器类型?拆分器,流?   java如何修改JTextArea中tab键的行为?   来自Android Studio HTML文档的外部应用程序中的java Open Local PDF   组件和轻量级/重量级之间的java差异   java在有向图中查找模式   python可以创建运行服务器端程序的Java Web Start应用程序吗?   NiFi中基于内容的java更新属性