Отдельные выходные файлы синтезатора cdk8s
Следующий код создаст один файл yaml, содержащий все мои определения развертывания и набора состояний, есть ли способ разделить разные файлы на выходе, например
dist/clusterip.k8s.yaml
а также
dist/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")
2 ответа
Да, есть.
Это реализовано в этом коммите: 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;
}
Возможно, это не совсем то, что вы хотите услышать, но cdk8s создает один выходной файл для каждого графика. Таким образом, вы можете разделить ресурсы на несколько диаграмм в своем приложении.
В качестве личного обходного пути вы также можете самостоятельно разделить документы yaml на файл. Когда вы уже начали использовать Python, это должно быть просто
yaml.safe_load
выходной файл, цикл по всем документам и
yaml.safe_dump
их снова. Между загрузкой и дампом вы можете организовать вещи по своему усмотрению.