Cdk8s synth的单独输出文件

y1aodyip  于 2022-09-20  发布在  Kubernetes
关注(0)|答案(2)|浏览(105)

下面的代码将创建一个YAML文件dist/clusterip.k8s.yaml,其中包含我对部署和状态集的所有定义,有没有办法在输出中分隔不同的文件,如dist/clusterip.k8s.yamldist/statefulset.k8s.yaml

class MyChart(Chart):
    def __init__(self, scope: Construct, id: str):
        super().__init__(scope, id)
        ClusterIp(self, 'clusterip')
        StateFulSet(self, 'statefulset')

app = App()
MyChart(app, "clusterip")
sh7euo9m

sh7euo9m1#

可能不是您想听到的,但是cdk8s会为每个图表创建一个输出文件。因此,您可以在应用程序内的多个图表上划分资源。

作为您个人的解决办法,您还可以自己拆分每个文件的YAML文档。当您已经开始使用Python时,应该很简单:yaml.safe_load输出文件,循环所有文档,然后再次yaml.safe_dump它们。在加载和转储之间,您可以随心所欲地组织事情。

lsmd5eda

lsmd5eda2#

是的有。

它已在此提交中实现:https://github.com/cdk8s-team/cdk8s-core/commit/474e373c1b86a57a3568cca0f9629e038266f2d5

来自https://github.com/cdk8s-team/cdk8s-core/blob/d00d2de5816106ea8bb7259e4ee5da907bc83e2a/src/app.ts

/**The method to divide YAML output into files */
export enum YamlOutputType {
  /**All resources are output into a single YAML file */
  FILE_PER_APP,
  /**Resources are split into seperate files by chart */
  FILE_PER_CHART,
  /**Each resource is output to its own file */
  FILE_PER_RESOURCE,
  /**Each chart in its own folder and each resource in its own file */
  FOLDER_PER_CHART_FILE_PER_RESOURCE,
}

export interface AppProps {
  /**
   * The directory to output Kubernetes manifests.
   *
   * @default - CDK8S_OUTDIR if defined, otherwise "dist"
   */
  readonly outdir?: string;
  /**
   *  The file extension to use for rendered YAML files
   * @default .k8s.yaml
   */
  readonly outputFileExtension?: string;
  /**
   *  How to divide the YAML output into files
   * @default YamlOutputType.FILE_PER_CHART
   */
  readonly yamlOutputType?: YamlOutputType;
}

相关问题