@cubos/kube-templates

中文文档
1.1.1发布于 2026/10/28TypeScriptCommonJS构建来源已验证近 30 天下载 1.1万

类 : 类型 : 脚本 平分 que geram 显示 Kubernetes (YAML) porntos para kubectl 应用

中文使用文档
文档目录20 节
  1. Í
  2. 英斯特拉桑
  3. 来来来来
  4. 拒绝执行
  5. 库贝尔内特语区
  6. 达多斯银行
  7. 阿普利卡语Name
  8. 埃斯卡拉, 证书和塞格雷多斯
  9. 实例
  10. 无国籍者 App com 自动卡路纳mento
  11. 重写
  12. 克龙
  13. 部署输油管(建议表)
  14. GitHub 动作
  15. GitLab CI 语录
  16. Fun-es 辅助
  17. Kubernetes的纹章
  18. 德森沃尔维门托
  19. 中情局
  20. 公众

@cubos/ kube- templates (中文(简体) )

Bibliotica TypeScript que encapsula recursos do Kubernetes em class tipadas e reutilizáveis. 中国植物物种信息数据库. (原始内容存档于2018-03-26) (英语). Você descreve a plicação em TypeScript e a bibliotca gera o YAML pronto para kubectl apply, (中文(简体) ), com 自动完成 e checagem de tipos em tudo. 互联网档案馆的存檔,存档日期2013-12-02.

曼提达培拉 库博斯共和国: github.com/cubos-devops/kube-templates (中文(简体) ) git.cubos.io/cubos/kube-templates) (中文(简体) ).

Í

英斯特拉桑

(原始内容存档于2018-03-26). Requer Node.js 24ou supper.

npm install @cubos/kube-templates

来来来来

Todas作为课程 seguem o mesmo反: new Classe(metadata, spec) e 获取器 .yaml。 。 。 .

import { Namespace, StatelessApp } from "@cubos/kube-templates";

const namespace = new Namespace({ name: "my-app" });

const app = new StatelessApp(
  { name: "api", namespace: "my-app" },
  {
    image: "my-registry/my-api:latest",
    replicas: 3,
    cpu: { request: "100m", limit: "500m" },
    memory: { request: "128Mi", limit: "512Mi" },
    ports: [
      {
        type: "http",
        port: 8080,
        publicUrl: "https://api.example.com",
        tlsCert: "api-tls-cert",
      },
    ],
    envs: {
      NODE_ENV: "production",
      DATABASE_URL: { secretName: "db-credentials", key: "url" },
    },
  },
);

console.log(namespace.yaml);
console.log(app.yaml);

拒绝执行

托达斯作为阶级 baixo são exportadas pelo pacote. 中国植物物种信息数据库.

库贝尔内特语区

Namespace, (中文(简体) ), Deployment, (中文(简体) ), StatefulSet, (中文(简体) ), DaemonSet, (中文(简体) ), Service, (中文(简体) ), IngressV1, (中文(简体) ), ConfigMap, (中文(简体) ), Secret, (中文(简体) ), Job, (中文(简体) ), CronJob, (中文(简体) ), PersistentVolumeClaim, (中文(简体) ), HorizontalPodAutoscaler, (中文(简体) ), PodDisruptionBudget, (中文(简体) ), NetworkPolicy, (中文(简体) ), ServiceAccount, (中文(简体) ), Role, (中文(简体) ), RoleBinding。 。 。 .

达多斯银行

类哦克热拉
Postgres, (中文(简体) ), PostgresV1邮递SQL
PgBouncerPostgreSQL公司
StackgresCluster, (中文(简体) ), StackgresInstanceProfile, (中文(简体) ), StackgresPostgresConfig, (中文(简体) ), StackgresBackupConfigPostgreSQL 通过歌剧游戏 StackGres
Redis重写
Mongo蒙戈DB
MySQL, (中文(简体) ), MariaDBMySQL e 马里亚DB
MSSQLSQL 服务器
Cockroach鸡尾酒

阿普利卡语Name

类哦克热拉
StatelessAppAplicação 无国籍者协议协议:部署、服务、入侵、HPA e PDB
CronCronJob com 简写化
StaticSite地点 estático
WordPressWordPress com Banco de dados (英语:WordPress com Banco de dados) 互联网档案馆的存檔,存档日期2014-12-21

埃斯卡拉, 证书和塞格雷多斯

类哦克热拉
ScaledObject, (中文(简体) ), ScaledJobAutoescalonmento por eventos (KEDA) (英语)
CertManagerV1Certificate, (中文(简体) ), CertificateV1证书(证书管理)
ReplicatedSecret秘密复制 代理命名空间

实例

无国籍者 App com 自动卡路纳mento

replicas 阿西塔 um número fixo ou uma faixa (英语) [mínimo, máximo]. com a faixa, a bibliotica gera (英语: 垛 HorizontalPodAutoscaler (法语) replicas (不部署) 法兰西岛 1) (中文(简体) ). minAvailable 热拉 嗯 PodDisruptionBudget。 。 。 .

import { StatelessApp } from "@cubos/kube-templates";

const app = new StatelessApp(
  { name: "my-api", namespace: "production" },
  {
    image: "my-registry/api:v1.0.0",
    replicas: [2, 10],
    cpuUtilizationToScale: 70,
    cpu: { request: "100m", limit: "1" },
    memory: { request: "256Mi", limit: "512Mi" },
    ports: [
      {
        type: "http",
        port: 3000,
        publicUrl: "https://api.example.com",
        tlsCert: "api-tls",
        timeout: 60,
        maxBodySize: "10Mi",
      },
    ],
    envs: {
      NODE_ENV: "production",
      DATABASE_URL: { secretName: "db-secret", key: "connection-string" },
      POD_NAME: { fieldPath: "metadata.name" },
    },
    // repassa variáveis do processo que gera o YAML (ex.: do CI). Lança erro
    // se alguma não estiver definida: `Environment variable BUILD_VERSION not defined`
    forwardEnvs: ["BUILD_VERSION"],
    minAvailable: 1,
    // CronJobs que usam a mesma imagem
    crons: [
      {
        name: "cleanup",
        schedule: "0 2 * * *",
        command: ["node"],
        args: ["cleanup.js"],
      },
    ],
  },
);

console.log(app.yaml);

重写

import { Redis } from "@cubos/kube-templates";

const cache = new Redis(
  { name: "cache", namespace: "production" },
  {
    version: "7-alpine",
    cpu: { request: "100m", limit: "500m" },
    memory: "256Mi",
    options: {
      maxmemory: "200mb",
      maxmemoryPolicy: "allkeys-lru",
    },
  },
);

console.log(cache.yaml);

克龙

import { Cron } from "@cubos/kube-templates";

const report = new Cron(
  { name: "daily-report", namespace: "production" },
  {
    schedule: "0 8 * * *",
    image: "my-registry/report-generator:latest",
    command: ["node"],
    args: ["generate-report.js"],
    cpu: { request: "100m", limit: "500m" },
    memory: { request: "128Mi", limit: "256Mi" },
    envs: {
      REPORT_TYPE: "daily",
      SMTP_PASSWORD: { secretName: "smtp", key: "password" },
    },
    timeoutSeconds: 3600,
  },
);

console.log(report.yaml);

Cada classe (campos obrigatórios e opcionais) estão tipados: o 编辑最上图多 com 自动完成, e o código-fonte em src/ 重新出现.

部署输油管(建议表)

Aplicar 重新推荐的论坛 ghcr.io/cubos-devops/cli/k8s,则重新保存 cubos-devops/cli" 乌马·伊克苏塔,部署 库伯涅斯: traz kubectl节点J, ts-node, (中文(简体) ), ejs-cli, 或 próprio 语句 @cubos/kube-templates e 类 脚本 cluster_from_env 电子 deploy. Não é preciso rodar npm install 没有输油管道 (原始内容存档于2018-09-29). kubeconfig à mão.

欧 deploy 我有一个面 deploy/ (原始内容存档于2018-10-21) (英语). do repositório da aplicação e aplica tudo com kubectl apply数字 :

  • deploy/*.ts: arquivos TypeScript que exportam por paderão uma lista de recursos do ; 中文译名参考自 明 : kube- templathes (o) 调制器 deploy 允许 .yaml cada 项;
  • deploy/*.yml: YAML puro, ou 模板 EJS (英语) 本身 <% %>· ;
  • deploy/*.ejs:模板EJS.
// deploy/app.ts
import { Namespace, StatelessApp } from "@cubos/kube-templates";

export default [
  new Namespace({ name: "my-app" }),
  new StatelessApp(
    { name: "api", namespace: "my-app" },
    {
      image: "my-registry/my-api:latest",
      cpu: { request: "100m", limit: "500m" },
      memory: { request: "128Mi", limit: "512Mi" },
      ports: [{ type: "http", port: 8080 }],
    },
  ),
];

欧·帕科特 @cubos/kube-templates (原始内容存档于2013-10-12). resolvido a partir da instalação que já vem na imagem, então a 不部署 " 不部署 " (definida no Dockerfile da) cli) (中文(简体) ).

As Credenciais do cluster vêm de três variáveis com um prefixo à sua escolha (aqui) 维基语录链接:名人名言 - 文学作品 - 谚语 - 谚语 - 谚语 CLUSTER_PRD: CLUSTER_PRD_K8S_SERVER_URL, (中文(简体) ), CLUSTER_PRD_K8S_SERVER_CA (CA EM Base64) e CLUSTER_PRD_K8S_TOKEN。 。 。 . 秘密守护者/秘密守护者.

GitHub 动作

动作棒 cluster_from_env e 读取 deploy num unico passo: (英语)

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: cubos-devops/cli@v1
        with:
          cluster: CLUSTER_PRD
        env:
          CLUSTER_PRD_K8S_SERVER_URL: ${{ secrets.CLUSTER_PRD_K8S_SERVER_URL }}
          CLUSTER_PRD_K8S_SERVER_CA: ${{ secrets.CLUSTER_PRD_K8S_SERVER_CA }}
          CLUSTER_PRD_K8S_TOKEN: ${{ secrets.CLUSTER_PRD_K8S_TOKEN }}

反聚居区 kubectl get pods),使用图像相机 容器执行任务 :

jobs:
  deploy:
    runs-on: ubuntu-latest
    container: ghcr.io/cubos-devops/cli/k8s
    steps:
      - uses: actions/checkout@v4
      - run: |
          cluster_from_env CLUSTER_PRD
          deploy
        env:
          CLUSTER_PRD_K8S_SERVER_URL: ${{ secrets.CLUSTER_PRD_K8S_SERVER_URL }}
          CLUSTER_PRD_K8S_SERVER_CA: ${{ secrets.CLUSTER_PRD_K8S_SERVER_CA }}
          CLUSTER_PRD_K8S_TOKEN: ${{ secrets.CLUSTER_PRD_K8S_TOKEN }}

GitLab CI 语录

Deploy:
  stage: deploy
  image: ghcr.io/cubos-devops/cli/k8s
  only:
    - main
  script:
    - cluster_from_env CLUSTER_PRD
    - deploy

作为 demais 图像的todos os 输入 da 动作 e 读取 cli。 。 。 .

Fun-es 辅助

import { configFactory, env, parseMemory } from "@cubos/kube-templates";

// Lê variáveis de ambiente e lança erro descritivo se a variável não existir
const databaseUrl = env.DATABASE_URL;

// Mesmo comportamento para qualquer objeto
const config = configFactory(process.env, "Config");
const apiKey = config.API_KEY;

// Converte quantidades de memória para bytes
parseMemory("1Gi"); // 1073741824
parseMemory("256M"); // 256000000

Kubernetes的纹章

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}哦 说得好 src/generated são gerados a partir das e specifica-es OpenAPI do Kubernetes e dos (中文(简体) ) CRDs usados pelas 班级(npm run generate) (中文(简体) ). 我们的悲剧:

import type { io } from "@cubos/kube-templates/src/generated";

const container: io.k8s.api.core.v1.Container = {
  name: "my-container",
  image: "nginx:latest",
};

德森沃尔维门托

普雷克西托:第24个节点 .nvmrc) (中文(简体) ).

npm ci

npm run lint             # Biome
npx tsc --noEmit         # checagem de tipos
npm run generate         # regenera src/generated

# testes de lógica pura, sem cluster
npx vitest run tests/statelessApp tests/pgbouncer

Os demais 测试tests/cockroach, (中文(简体) ), tests/postgres, (中文(简体) ), tests/wordpress(a) 圣多明我会: aplicam os 复发数组 Kubernetes 本地 criado com 类型 (单位:千美元)tests/setup.ts 说吧 kind-kubeconfig eo 集装箱 kube-templates-test-control-planee, (中文(简体) ), por isso, não rodam no CI do GitHub. 维基百科中的相关条目: 克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多克多.

中情局

O 工作流程 ci.yml 调取请求 e na main点滴, 类型检查,测试单位, npm audit (não bolopeante)e建设.

公众

O Pacote é publicado 无 npm pelo 工作流程 publish.yml quando uma 释放没有GitHub的公众数字 :

  1. 没有GitHub,没有 ——起草新版。 。 。 .
  2. Crie ma 标记无格式 vX.Y.Z (单位:千美元) v1.1.0(a) 阿蓬坦多,第a段 main。 。 。 .
  3. 独行侠 发布。 。 。 .

一个无名无姓的公众网站 v. Marcar 发布会 释放前 (前:标记) v1.2.0-rc.1(公之于众)a next 韦兹德 latest。 。 。 .

我们的公众 npm 受托出版 (OIDC): (英语: 尼欧哈 NPM_TOKEN 无保留地, e cada versão sai com 来源 阿西纳多.

版本 : 以 vers'es igham 表示偏头痛 1.0.<id do pipeline> (a ultima foi) (法语) 1.0.1153395) (中文(简体) ). 作为新星 semver pela 标记 e 预切萨姆 ser {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}请说 v1.1.0 爱奇艺.

版本与发布记录

@cubos/kube-templates 共发布 261 个版本,首次发布于 2020/01/18;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.1latest2026/10/2814 天前
1.1.02026/10/2714 天前
1.0.11533952026/10/091 个月前
1.0.11309322026/08/262 个月前
1.0.11269982026/08/192 个月前
1.0.11269072026/08/192 个月前

关于 @cubos/kube-templates 的常见问题

@cubos/kube-templates 是什么?

类 : 类型 : 脚本 平分 que geram 显示 Kubernetes (YAML) porntos para kubectl 应用

如何安装 @cubos/kube-templates?

在项目目录运行 npm install @cubos/kube-templates,或使用 pnpm add / yarn add / bun add。

@cubos/kube-templates 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cubos/kube-templates 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@cubos/kube-templates 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cubos/kube-templates 可以商用吗?

@cubos/kube-templates 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@cubos/kube-templates 的下载量有多少?

根据 npm 官方下载统计,@cubos/kube-templates 在 2026/10/11 – 2026/11/09 这 30 天内被下载 11,148 次,日均约 372 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cubos/kube-templates 还在维护吗?

最新版本 1.1.1 发布于 2026/10/28(14 天前);至今共发布 261 个版本,其中过去 12 个月发布了 18 个;首次发布于 2020/01/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。