# @cdk8s/cdktf-resolver 中文文档

规范地址：https://npmcn.com/package/%40cdk8s/cdktf-resolver/

版本：0\.0\.314
npm 元数据更新时间：2026-10-27T12:25:50.973Z
中文译文更新时间：2026-11-09T15:52:30.408Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40cdk8s/cdktf-resolver
原文对照：https://npmcn.com/package/%40cdk8s/cdktf-resolver/?lang=original
项目主页：https://github.com/cdk8s-team/cdk8s-cdktf-resolver#readme
源码仓库：https://github.com/cdk8s-team/cdk8s-cdktf-resolver

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

- 包体积（解压后）：64 kB，17 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 16\.20\.0
- 运行依赖：0 个
- peer 依赖：cdk8s ^2\.68\.91，cdktf ^0\.20\.8，constructs ^10\.3\.0
- 首次发布：2023-10-03T15:48:46.375Z
- 最新版本发布：2026-10-27T12:25:50.384Z
- 近 30 天下载量：2319（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：309（近 12 个月 101 个）

## 中文简介

这个 `CdkTfResolver` 能够解决任何 [`TerraformOutput`](https://developer.hashicorp.com/terraform/cdktf/concepts/variables-and-outputs#output-values) 由您的 CDKTF 应用程序定义。 在这个例子中,我们创建一个S3 `Bucket` 使用CDKTF,以及

## 安装

```sh
npm install @cdk8s/cdktf-resolver
```

也可以使用：`pnpm add @cdk8s/cdktf-resolver`、`yarn add @cdk8s/cdktf-resolver`、`bun add @cdk8s/cdktf-resolver`

## README

# CDK 为地表解析器

这个 `CdkTfResolver` 能够解决任何 [`TerraformOutput`](https://developer.hashicorp.com/terraform/cdktf/concepts/variables-and-outputs#output-values) 由您的 CDKTF 应用程序定义。 在这个例子中,我们创建一个S3 `Bucket` 与 CDKTF 连接,并传递其(所生成的部署时间) 名称为 Kubernetes 的环境变量 `CronJob` 资源.

```ts
import * as tf from "cdktf";
import * as aws from "@cdktf/provider-aws";
import * as k8s from 'cdk8s';
import * as kplus from 'cdk8s-plus-26';

import { CdkTfResolver } from '@cdk8s/cdktf-resolver';

const awsApp = new tf.App();
const stack = new tf.TerraformStack(awsApp, 'aws');

const k8sApp = new k8s.App({ resolvers: [new resolver.CdktfResolver({ app: awsApp })] });
const manifest = new k8s.Chart(k8sApp, 'Manifest', { resolver });

const bucket = new aws.s3Bucket.S3Bucket(stack, 'Bucket');
const bucketName = new tf.TerraformOutput(constrcut, 'BucketName', {
  value: bucket.bucket,
});

new kplus.CronJob(manifest, 'CronJob', {
  schedule: k8s.Cron.daily(),
  containers: [{
    image: 'job',
    envVariables: {
      // directly passing the value of the `TerraformOutput` containing 
      // the deploy time bucket name
      BUCKET_NAME: kplus.EnvValue.fromValue(bucketName.value),
    }
 }]
});

awsApp.synth();
k8sApp.synth();
```

在cdk8s合成过程中,自定义解析器会检测到 `bucketName.value` 这不是一个具体的价值, 但它是一个价值 `TerraformOutput`。然后将进行 `cdktf` 要获取 CLI 命令 实际价值来自您账户中部署的基础设施。 这意味着,按照顺序 页:1 `cdk8s synth` 要成功,必须执行 _之后_ cDKTF资源已经部署. 因此,你的部署工作流程(概念上)应该是:

1.  `cdktf deploy`
2.  `cdk8s synth`

> 注意 `CdkTfResolver` 实值 **仅限** 能够获取具有 `TerraformOutput` 为他们定义.

##### 权限

自运行以来 `cdk8s synth` 现在需要读取三角形输出,它必须有这样做的权限. 如果使用远程状态文件,这意味着为可以访问的账户提供一套证书 到州所贮. 这取决于云提供商的不同, 但在大多数情况下,将涉及给予 读取 blob 存储设备上的权限(例如 S3 桶).

注意 cdk8 所需的权限比通常所需的权限要小得多 部署 CDKTF 应用程序。 因此建议不重复使用同样的一套全权证书, 转而建立一个缩小范围 `ReadOnly` 用于 cdk8s 解析器的角色.

解析器将执行的命令如下:

-   [`cdktf output`](https://developer.hashicorp.com/terraform/cdktf/cli-reference/commands#output)

## 交叉仓库工作流程

正如我们所看到的,你的 `cdk8s` 应用程序需要访问您云应用程序中定义的对象。 如果两个申请 定义在同一文件中,这是微不足道的实现。 如果放在不同的文件里 很简单 `import` 说明就够了. 然而,如果这些应用程序在两个单独的储存库中管理,怎么办? 这使得它有点狡猾,但仍有可能.

在这种情况下, `cdktf.ts` 在 CDKTF 应用程序中,存储在一个专用仓库中.

```ts
import * as tf from "cdktf";
import * as aws from "@cdktf/provider-aws";

import { CdkTfResolver } from '@cdk8s/cdktf-resolver';

const awsApp = new tf.App();
const stack = new tf.TerraformStack(awsApp, 'aws');

const bucket = new aws.s3Bucket.S3Bucket(stack, 'Bucket');
const bucketName = new tf.TerraformOutput(constrcut, 'BucketName', {
  value: bucket.bucket,
});

awsApp.synth();
```

为了 `cdk8s` 应用程序具有交叉寄存器访问, CDKTF 对象实例 我们想要曝光的,需要通过一个软件包存储库提供。 要做到这一点,分手 CDKTF 应用到以下文件中 :

`app.ts`

```ts
import * as tf from "cdktf";
import * as aws from "@cdktf/provider-aws";

import { CdkTfResolver } from '@cdk8s/cdktf-resolver';

// export the app so we can pass it to the cdk8s resolver
export const awsApp = new tf.App();
const stack = new tf.TerraformStack(awsApp, 'aws');

const bucket = new aws.s3Bucket.S3Bucket(stack, 'Bucket');
// export the thing we want to have available for cdk8s applications
export const bucketName = new tf.TerraformOutput(constrcut, 'BucketName', {
  value: bucket.bucket,
});

// note that we don't call awsApp.synth here
```

`main.ts`

```ts
import { awsApp } from './app.ts'

awsApp.synth();
```

现在,发表 `app.ts` 文件到软件包管理器,以便您 `cdk8s` 应用程序可以安装并导入. 这种方法可能有些反常, 因为通常我们只公布课程 给软件包管理者, 非实例。 实际上,这些类型的应用程序引入了一个新的使用案例,需要共享实例. 从概念上来说,这和写作状态没什么不同\* 联合国 它允许我们留下 在我们的编程语言的边界, 和它的打字保证.

> \* 联合国 事实上,我们只是发布指令 获取状态,而不是国家本身.

假设 `app.ts` 发表于 `my-cdktf-app` 包,我们 `cdk8s` 应用程序现在看起来是这样:

```ts
import * as k8s from 'cdk8s';
import * as kplus from 'cdk8s-plus-27';

// import the desired instance from the CDKTF app.
import { bucketName, awsApp } from 'my-cdktf-app';

import { CdkTfResolver } from '@cdk8s/cdktf-resolver';

const k8sApp = new k8s.App({ resolvers: [new resolver.CdktfResolver({ app: awsApp })] });
const manifest = new k8s.Chart(k8sApp, 'Manifest');

new kplus.CronJob(manifest, 'CronJob', {
  schedule: k8s.Cron.daily(),
  containers: [{
    image: 'job',
    envVariables: {
      // directly passing the value of the `TerraformOutput` containing 
      // the deploy time bucket name
      BUCKET_NAME: kplus.EnvValue.fromValue(bucketName.value),
    }
 }]
});

k8sApp.synth();
```

## 常见问题

### @cdk8s/cdktf-resolver 是什么？

这个 CdkTfResolver 能够解决任何 TerraformOutput 由您的 CDKTF 应用程序定义。 在这个例子中,我们创建一个S3 Bucket 使用CDKTF,以及

### 如何安装 @cdk8s/cdktf-resolver？

在项目目录运行 npm install @cdk8s/cdktf-resolver，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：cdk8s（^2\.68\.91）、cdktf（^0\.20\.8）、constructs（^10\.3\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @cdk8s/cdktf-resolver 支持 TypeScript 吗？

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

### @cdk8s/cdktf-resolver 支持 ESM 还是 CommonJS？

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

### @cdk8s/cdktf-resolver 需要什么版本的 Node\.js？

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

### @cdk8s/cdktf-resolver 可以商用吗？

@cdk8s/cdktf-resolver 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cdk8s/cdktf-resolver 的下载量有多少？

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

### @cdk8s/cdktf-resolver 还在维护吗？

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

