Kubewarden 推出 JavaScript/TypeScript SDK

Kubewarden JavaScript/TypeScript SDK 的 alpha 版本现已发布

“Kubewarden 一直主张自由选择,让你用最熟悉的语言写策略。JavaScript/TypeScript SDK 让数百万熟悉 JavaScript 生态的开发者加入,无需学习新语言,就能写 Kubewarden 策略。”

工作原理

Kubewarden 使用 Bytecode Alliance 的 Javy 项目,将 JavaScript 编译成 WebAssembly。这样你的 JavaScript 策略能拥有和其他 Kubewarden 支持语言同样的安全性、可移植性和性能。

编译流程很简单:

  1. 用 JavaScript 或 TypeScript 写策略

  2. 使用 SDK 工具链编译成 WebAssembly

  3. 像其他 Kubewarden 策略一样部署到集群

SDK 提供了开发所需的全部资源:

Host Capabilities API

实现了完整的 TypeScript API,支持 Kubewarden 的主机能力,策略可以访问:

  • 容器镜像仓库操作:查询 OCI 清单摘要,获取清单和镜像配置
  • 网络能力:执行 DNS 查询和主机名解析
  • Kubernetes 资源访问:查询集群资源,跨命名空间列表,权限验证
  • 加密操作:证书验证和加密校验
  • Sigstore 集成:用公钥验证签名、无钥验证、GitHub Actions 来源验证等

所有 API 都有完整类型支持,开发时享受智能提示和类型安全。

策略模板

开始时可以克隆策略模板仓库。模板包含:

  • 预配置的 TypeScript 编译流程
  • 与 Kubewarden SDK 集成
  • 使用 bats 的端到端测试框架
  • 演示最佳实践的示例策略
  • 集成 Kubernetes TypeScript 类型,保证类型安全

简单策略示例

import { Validation, writeOutput } from'kubewarden-policy-sdk';

exportfunction validate(): void {
try {
    const validationRequest = Validation.Validation.readValidationRequest();
    const settings: PolicySettings = validationRequest.settings || {};
    const resource = getKubernetesResource(validationRequest);
    if (!resource) {
      writeOutput(Validation.Validation.rejectRequest('Failed to parse Kubernetes resource.'));
      return;
    }
    if (resource.kind !== 'Pod') {
      writeOutput(Validation.Validation.acceptRequest());
      return;
    }

    const hostname = getPodHostname(resource as Pod);
    const deniedHostnames = settings.denied_hostnames || [];
    if (!hostname) {
      writeOutput(Validation.Validation.acceptRequest());
      return;
    }

    if (deniedHostnames.includes(hostname)) {
      writeOutput(
        Validation.Validation.rejectRequest(
          `Pod hostname '${hostname}' is not allowed. Denied hostnames: [${deniedHostnames.join(', ')}]`
        ),
      );
    } else {
      writeOutput(Validation.Validation.acceptRequest());
    }
  } catch (err) {
    console.error('Validation error:', err);
    writeOutput(Validation.Validation.rejectRequest(`Validation failed: ${err}`));
  }
}

更多详情可查看官方公告:https://www.kubewarden.io/blog/2025/11/policy-sdk-js/

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/386087

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。