@env-hopper/source-k8s

中文文档
2.9.3发布于 2026/11/13MITTypeScriptESM + CJS构建来源已验证近 30 天下载 3055

Read workloads and ingresses from a Kubernetes cluster

原始使用文档
文档目录5 节
  1. Install
  2. Usage
  3. Short-lived tokens
  4. Health check
  5. License

@env-hopper/source-k8s

Reads Deployments and Ingresses from a Kubernetes cluster and returns them as plain records (namespace, name, images, labels, replicas, hosts). It holds no mapping of its own: which workloads to keep and what they mean to your catalog are passed in by the caller.

It also ships:

  • a watcher that keeps the records current (list, then watch from the list's resourceVersion, relisting on 410 and retrying with backoff);
  • a readiness health checker for the @env-hopper/backend-core Health Check runner.

Install

npm install @env-hopper/source-k8s @env-hopper/backend-core @kubernetes/client-node@^0.22.3

@env-hopper/backend-core is a peer dependency, used for the health checker type. The client functions expect the @kubernetes/client-node 0.22 API.

Usage

import { KubeConfig } from '@kubernetes/client-node'
import { createK8sSource, createK8sWatcher, k8sClientsFromKubeConfig, watchFromKubeConfig } from '@env-hopper/source-k8s'

const kc = new KubeConfig()
kc.loadFromDefault()
const { apps, networking } = k8sClientsFromKubeConfig(kc)

// One-off read
const source = createK8sSource({ cluster: 'production', apps, networking })
const workloads = await source.listWorkloads()
const ingresses = await source.listIngresses()

// Kept current
const watcher = createK8sWatcher({
  cluster: 'production',
  apps,
  networking,
  watch: watchFromKubeConfig(kc),
  keepWorkload: (w) => w.namespace !== 'kube-system',
  onChange: (change) => console.log(change.kind, change.type, change.record.name),
})
watcher.start()

Short-lived tokens

When the API server takes a token that expires (one minted from your cloud identity, say), wrap the KubeConfig so each request asks for the current one:

import { cachedToken, withBearerToken } from '@env-hopper/source-k8s'

const token = cachedToken(async () => ({ token: await mintToken(), expiresAt: new Date(Date.now() + 15 * 60_000) }), { refreshBeforeMs: 5 * 60_000 })
const authed = withBearerToken(kc, token)
const { apps, networking } = k8sClientsFromKubeConfig(authed)
const watch = watchFromKubeConfig(authed)

cachedToken mints once and reuses the token until refreshBeforeMs before expiresAt; concurrent callers share one mint, and a failed mint is retried on the next call.

Health check

import { runCheck } from '@env-hopper/backend-core'
import { k8sReadinessChecker } from '@env-hopper/source-k8s'

const result = await runCheck(k8sReadinessChecker, {
  cluster: 'production',
  namespace: 'shop',
  name: 'checkout',
  apps, // from k8sClientsFromKubeConfig(kc)
})
  • replicas === 0: unknown (scaled down, not broken)
  • readyReplicas === replicas: healthy
  • 0 < readyReplicas < replicas: degraded
  • readyReplicas === 0: down

License

MIT

版本与发布记录

@env-hopper/source-k8s 共发布 18 个版本,首次发布于 2026/10/20;过去 12 个月发布了 18 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.9.3latest2026/11/13今天
2.9.22026/11/112 天前
2.9.12026/11/103 天前
2.9.02026/11/104 天前
2.8.32026/11/0410 天前
2.8.22026/11/0410 天前

其他发布通道:bootstrap → 2.1.0-bootstrap.0。

关于 @env-hopper/source-k8s 的常见问题

@env-hopper/source-k8s 是什么?

Read workloads and ingresses from a Kubernetes cluster

如何安装 @env-hopper/source-k8s?

在项目目录运行 npm install @env-hopper/source-k8s,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@env-hopper/backend-core(^2.9.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@env-hopper/source-k8s 支持 TypeScript 吗?

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

@env-hopper/source-k8s 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@env-hopper/source-k8s 需要什么版本的 Node.js?

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

@env-hopper/source-k8s 可以商用吗?

@env-hopper/source-k8s 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@env-hopper/source-k8s 的下载量有多少?

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

@env-hopper/source-k8s 还在维护吗?

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