kubewarden/js-policy-template
GitHub: kubewarden/js-policy-template
用于快速搭建 TypeScript/JavaScript 编写的 Kubewarden Kubernetes 准入控制策略的脚手架模板。
Stars: 0 | Forks: 3
# js-policy-template
这是一个模板仓库,你可以用它来搭建一个用 TypeScript 或 JavaScript 编写的 Kubewarden 策略。
别忘了查看 Kubewarden 的
[官方文档](https://docs.kubewarden.io)
以获取更多关于编写策略的信息。
## 简介
该仓库包含一个用 TypeScript 编写的可运行策略。
该策略会检查 Kubernetes Pod 的 `hostname`(`spec.hostname`),如果该主机名位于拒绝列表中,则拒绝该请求。
拒绝列表可由用户通过策略的运行时设置进行配置。
你可以使用以下结构来表达策略的配置:
```
{
"denied_hostnames": [ "bad-host", "forbidden-host" ]
}
```
要将策略构建为 WebAssembly 模块,请运行:
```
make all
```
## 代码组织
`src/types.ts` - 定义 policySettigns 和 Kubernetes 资源的 TypeScript 接口
- 本策略使用了 [Kubernetes TypeScript 类型](https://github.com/silverlyra/kubernetes-types),它为 TypeScript 提供了 Kubernetes 资源定义。在构建其他 JavaScript/TypeScript 策略时,这可能会很有用。
`src/index.ts` - 包含完整的策略实现:
- 解析传入的验证请求
- 提取 Kubernetes 资源和 Pod 主机名
- 执行拒绝列表逻辑
- 验证策略设置
- 执行策略操作
## 实现细节
用 JavaScript 或 TypeScript 编写的 Kubewarden 策略依赖于 [Kubewarden JavaScript SDK](https://github.com/kubewarden/policy-sdk-js)。该 SDK 提供了用于处理 [Kubewarden 的宿主能力](https://docs.kubewarden.io/reference/spec/host-capabilities/intro-host-capabilities)的辅助函数。
策略使用 Kubewarden 的 [`javy`](https://github.com/bytecodealliance/javy) 插件编译为 WebAssembly。该插件作为 `kubewarden-policy-sdk` 包的一部分安装,可以在以下位置找到:
```
node_modules/kubewarden-policy-sdk/plugin
```
## 测试
测试 Javy 编译的最终结果非常重要:
即实际的 WebAssembly 模块。
这是通过一组端到端测试完成的。
这些测试使用 Kubewarden 项目提供的 `kwctl` cli 来加载和执行策略。
e2e 测试是使用
[bats](https://github.com/bats-core/bats-core)
(Bash 自动化测试系统)实现的。
端到端测试定义在 `e2e.bats` 文件中,可以使用以下命令运行:
```
make e2e
```
## 所需开发工具
- [TypeScript](https://www.typescriptlang.org)
- [Node.js](https://nodejs.org)
- Make
- [bats (Bash 自动化测试系统)](https://github.com/bats-core/bats-core)
- [kwctl](https://github.com/kubewarden/kwctl/releases)
- [javy](https://github.com/bytecodealliance/javy)
标签:AI工具, CMS安全, _hostname 校验, JavaScript, JS-SDK, K8s 安全, Kubernetes 策略, Kubewarden, MITM代理, Pod 安全, RDFlib, TypeScript, WebAssembly, 准入控制器, 安全插件, 开发脚手架, 微服务安全, 数据可视化, 文本排版, 策略即代码, 策略模板, 聊天机器人安全, 自动化攻击, 配置校验