# @citymallservices/k8s-grpc-resolver 中文文档

规范地址：https://npmcn.com/package/%40citymallservices/k8s-grpc-resolver/

版本：1\.1\.12
npm 元数据更新时间：2026-09-29T11:03:02.962Z
中文译文更新时间：2026-11-09T22:07:56.507Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40citymallservices/k8s-grpc-resolver
原文对照：https://npmcn.com/package/%40citymallservices/k8s-grpc-resolver/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：115 kB，8 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- 首次发布：2023-06-29T15:09:19.089Z
- 最新版本发布：2026-09-29T11:03:02.750Z
- 近 30 天下载量：1776（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 5 个）

## 中文简介

Kubernetes服务的自定义 gRPC 解析器, 可以在Kubernetes集群中发现服务 。 这种解析器允许gRPC客户端自动发现并连接到运行于Kubernetes的服务,而无需硬编码IP地址.

## 安装

```sh
npm install @citymallservices/k8s-grpc-resolver
```

也可以使用：`pnpm add @citymallservices/k8s-grpc-resolver`、`yarn add @citymallservices/k8s-grpc-resolver`、`bun add @citymallservices/k8s-grpc-resolver`

## README

# k8s- grpc- solver 解析器

Kubernetes服务的自定义 gRPC 解析器, 可以在Kubernetes集群中发现服务 。 这种解析器允许gRPC客户端自动发现并连接到运行于Kubernetes的服务,而无需硬编码IP地址.

## 概览

在Kubernetes运行微服务时,服务发现可能具有挑战性,特别是对gRPC服务而言. 此库提供自定义解析器:

监视 Kubernetes 端点资源以跟踪服务 IP 地址 当端点改变时自动更新 gRPC 客户端连接 处理多个服务实例之间的故障和负载平衡 在Kubernetes集群内无缝工作

解决器分两部分:

-   使用 GRPC 官方解析器接口执行 Golang
-   使用@grpc/grpc-js执行节点.js

## 特征

-   **动态服务发现**: 在Kubernetes中自动发现服务端点
-   **实时更新**: 监视服务端点的更改并实时更新连接
-   **倒置机制**: 节点. js 执行返回到 DNS 解析度 如果 Kubernetes API 不可用的话
-   **处理错误**: 实施重联尝试的后退策略
-   **简单整合**: 方便与现有的gRPC客户集成

## 安装

### 戈兰g

```bash
go get github.com/city-mall/k8s-grpc-resolver/golang
```

### 节点.js

```bash
npm install @citymallservices/k8s-grpc-resolver
```

## 使用量

### 戈兰g

```go
import (
    "google.golang.org/grpc"
    k8sresolver "github.com/city-mall/k8s-grpc-resolver/golang"
)

func main() {
    // Register the resolver
    resolver := k8sresolver.Builder()

    // Use the resolver in your gRPC client
    // Format: k8s://<namespace>/<service-name>:<port>
    conn, err := grpc.Dial(
        "k8s://default/my-service:8080",
        grpc.WithResolvers(resolver),
        grpc.WithInsecure(),
    )
    if err != nil {
        // Handle error
    }
    defer conn.Close()

    // Use the connection with your gRPC client
    client := pb.NewMyServiceClient(conn)
    // ...
}
```

用于标准Kubernetes DNS格式的服务(`service.namespace.svc.cluster.local`),可以使用 `Try` 帮助函数 :

```go
import (
    k8sresolver "github.com/city-mall/k8s-grpc-resolver/golang"
)

// Convert standard Kubernetes DNS to resolver format
address := k8sresolver.Try("my-service.default.svc.cluster.local:8080")
// address will be "k8s://default/my-service:8080"
```

### 节点.js

```javascript
import { setup } from "@citymallservices/k8s-grpc-resolver";
import { credentials, createClient } from "@grpc/grpc-js";

// Register the resolver and get the formatted address
const address = setup("my-service.default:8080");

// Create a client with the address
const client = createClient(address, credentials.createInsecure());

// Use the client as normal
```

## 如何运作

### 执行

戈兰的实施工作:

1.  在自定义解析器中注册 `k8s://` 计划
2.  使用 Kubernetes API 监视指定服务的端点资源
3.  从端点资源提取 IP 地址
4.  更新 gRPC 客户端与新地址的连接

### 节点.js 执行

节点J的执行:

1.  在自定义解析器中注册 `k8s://` 计划
2.  初始使用 DNS 分辨率同时尝试连接到 Kubernetes API
3.  一旦连接, 监视指定服务的端点资源
4.  更新 gRPC 客户端与新地址的连接
5.  为重新连接尝试实施后退策略

## 所需资源

### 戈兰g

-   具有 API 访问权限的 Kubernetes 集群
-   适当的 RBAC 读取端点资源的权限
-   走1.15号或以后

### 节点.js

-   具有 API 访问权限的 Kubernetes 集群
-   适当的 RBAC 读取端点资源的权限
-   节点.js 14 或以后
-   @grpc/grpc-js 1.13.4 或以后
-   @kubernetes/客户端-节点1.3.0或以后

## 出版

要发布新版本的Node.js软件包:

1.  更新软件包中的版本。 json
2.  运行以下命令 :

```bash
npm publish
```

## 许可证

公务员制度委员会

## 作者

阿卡德夫·巴内吉

* * *

该项目由CityMall Services维护.

## 常见问题

### @citymallservices/k8s-grpc-resolver 是什么？

Kubernetes服务的自定义 gRPC 解析器, 可以在Kubernetes集群中发现服务 。 这种解析器允许gRPC客户端自动发现并连接到运行于Kubernetes的服务,而无需硬编码IP地址\.

### 如何安装 @citymallservices/k8s-grpc-resolver？

在项目目录运行 npm install @citymallservices/k8s-grpc-resolver，或使用 pnpm add / yarn add / bun add。

### @citymallservices/k8s-grpc-resolver 支持 TypeScript 吗？

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

### @citymallservices/k8s-grpc-resolver 支持 ESM 还是 CommonJS？

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

### @citymallservices/k8s-grpc-resolver 可以商用吗？

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

### @citymallservices/k8s-grpc-resolver 的下载量有多少？

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

### @citymallservices/k8s-grpc-resolver 还在维护吗？

最新版本 1\.1\.12 发布于 2026/09/29（1 个月前）；至今共发布 21 个版本，其中过去 12 个月发布了 5 个；首次发布于 2023/06/29。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

