@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 |
PgBouncer | PostgreSQL公司 |
StackgresCluster, (中文(简体) ), StackgresInstanceProfile, (中文(简体) ), StackgresPostgresConfig, (中文(简体) ), StackgresBackupConfig | PostgreSQL 通过歌剧游戏 StackGres |
Redis | 重写 |
Mongo | 蒙戈DB |
MySQL, (中文(简体) ), MariaDB | MySQL e 马里亚DB |
MSSQL | SQL 服务器 |
Cockroach | 鸡尾酒 |
阿普利卡语Name
| 类 | 哦克热拉 |
|---|---|
StatelessApp | Aplicação 无国籍者协议协议:部署、服务、入侵、HPA e PDB |
Cron | CronJob com 简写化 |
StaticSite | 地点 estático |
WordPress | WordPress com Banco de dados (英语:WordPress com Banco de dados) 互联网档案馆的存檔,存档日期2014-12-21 |
埃斯卡拉, 证书和塞格雷多斯
| 类 | 哦克热拉 |
|---|---|
ScaledObject, (中文(简体) ), ScaledJob | Autoescalonmento 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允许.yamlcada 项;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的公众数字 :
- 没有GitHub,没有 ——起草新版。 。 。 .
- Crie ma 标记无格式
vX.Y.Z(单位:千美元)v1.1.0(a) 阿蓬坦多,第a段main。 。 。 . - 独行侠 发布。 。 。 .
一个无名无姓的公众网站 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爱奇艺.