返回首页
最新
大家好,
我正在开发一个新的工具,旨在让用户在 Kubernetes 上构建应用,摆脱 YAML 的痛苦。我已经将其开源,并采用 Apache-2.0 许可证,期待大家的反馈。
这个工具的灵感来源于 KRO([https://kro.run](https://kro.run))(这是亚马逊最近发布的一个项目),并在其基础上进行了扩展。TypeKro 的目标是提供一种声明式的、类型安全的用户体验,以便使用 TypeScript 来编排复杂的 Kubernetes 依赖关系,从而享受到智能感知和现代编程语言的其他好处。
它有几个独特之处:
1. TypeKro 提供无缝的开发体验,您可以像访问已填充的字段一样访问运行时状态字段,使开发过程更加顺畅。TypeKro 或 KRO 将能够在 JavaScript 运行时或 Kubernetes 集群中的操作员中无缝处理编排。
例如:
```typescript
const database = StatefulSet({ ... });
const webapp = Deployment({
name: 'my-app',
image: 'my-app:latest',
env: {
// 这看起来像是正常的属性访问,但它是
// 一个类型安全的引用,在部署后解析!
DATABASE_HOST: database.status.host,
},
});
```
2. TypeKro 提供三种部署模式,以提供灵活性,包括渲染适合 GitOps 的 YAML,直接部署到您的 Kubernetes 集群中,使用拓扑排序的有向无环图(DAG),以及将您的基础设施作为 KRO 资源图定义进行部署。
这三种部署方式让您可以在短反馈循环中进行开发,并在部署时提供灵活性。
3. TypeKro 了解 Kubernetes 控制平面,甚至会在您部署资源时将相关的 Kubernetes 事件流式传输到您的终端。
4. TypeKro 足够智能,可以延迟自定义资源(Custom Resource)的部署,直到它们的自定义资源定义(CRD)准备就绪,因为 Kubernetes API 在 CRD 准备好之前不会接受 CR。
5. TypeKro 尝试通过与 arktype 集成的非常简单的 API 来暴露所有功能,以便您可以使用 TypeScript 开发者熟悉的工具构建和使用 kubernetesComposition(),并且它内置了与您现有工具栈集成的能力。您可以使用它来部署您的 Helm 图表或 YAML 清单以及您的新资源。
如果您感兴趣,可以从文档网站开始了解:[https://typekro.run/](https://typekro.run/)
您可以在这里访问源代码(欢迎给我点赞):[https://github.com/yehudacohen/typekro](https://github.com/yehudacohen/typekro)
如果您想了解我关于 TypeKro 软件架构及其在生态系统中位置的详细想法,可以阅读我很长的博客文章。请注意,这篇文章比较长:
[https://yehudacohen.substack.com/p/introducing-typekro](https://yehudacohen.substack.com/p/introducing-typekro)
我还创建了一个 Discord 频道,目前没有用户。如果您想成为第一个加入的人,欢迎来聊聊!
现在还处于早期阶段,虽然我希望这能提供良好的体验,但我相信仍然存在一些未被我的测试套件捕捉到的错误。目前我只在本地的 kind 集群上进行了测试。
我希望改进这个工具,使其成为部署到 Kubernetes 的最简单方式。我有很多想法,包括将 Crossplane 和云控制器的资源以及其他第三方资源与其复杂的组合依赖关系进行集成。我也希望尝试并扩展它,以支持跨基础设施边界的多集群部署。
欢迎所有贡献!
我尝试了一些低成本的聊天服务提供商,心想“我可以做得更好”。<p>这是我真诚的尝试,我构建了一个我引以为豪的东西,希望你能去看看。抱歉,我无法提供免费套餐。<p>编辑:本来应该是Launch HN,但我无法更改。