【问题标题】:How can I create kubernetes yaml file using pure python如何使用纯 python 创建 kubernetes yaml 文件
【发布时间】:2016-09-03 04:36:11
【问题描述】:

实际上,我已经设置了 kubernetes 集群。我想使用python根据模板动态生成yaml配置文件。

模板.yaml

apiVersion: v1
kind: pod
metadata:
  name: $name
spec:
  replicas: $replicas
  template:
    metadata:
      labels:
        run: $name
    spec:
      containers:
      - name: $name
        image: $image
        ports:
        - containerPort: 80

占位符名称、副本和图像是我的 python 方法的输入。 任何帮助将不胜感激。

【问题讨论】:

标签: python yaml kubernetes


【解决方案1】:

如果你想要一种使用纯 python 的方法,没有库,这里是使用多行字符串和格式的方法:

def writeConfig(**kwargs):
    template = """
    apiVersion: v1
    kind: pod
    metadata:
      name: {name}
    spec:
      replicas: {replicas}
      template:
        metadata:
          labels:
            run: {name}
        spec:
          containers:
          - name: {name}
            image: {image}
            ports:
            - containerPort: 80"""

    with open('somefile.yaml', 'w') as yfile:
        yfile.write(template.format(**kwargs))

# usage:
writeConfig(name="someName", image="myImg", replicas="many")

【讨论】:

  • 嗨 Filip,我正在尝试使用您的方法,但出现此错误:TypeError: create_app() got an unexpected keyword argument 'name'
  • 我的错,错过了一个星号。
  • 还是不行。我得到了同样的错误:yfile.write(template.format(kwargs)) KeyError: 'name'
【解决方案2】:

如果您只想使用模板、纯 python 并且您的变量已经过检查(安全),那么您可以使用字符串的format method

这是一个例子:

# load your template from somewhere
template = """apiVersion: v1
kind: pod
metadata:
  name: {name}
spec:
  replicas: {replicas}
  template:
    metadata:
      labels:
        run: {name}
    spec:
      containers:
      - name: {name}
        image: {image}
        ports:
        - containerPort: 80
"""
# insert your values
specific_yaml = template.format(name="test_name", image="test.img", replicas="False")
print(specific_yaml)

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 2012-02-02
    • 2021-09-12
    • 2019-08-28
    • 2018-08-17
    • 2018-09-12
    • 2021-02-11
    • 2011-12-19
    • 2019-04-25
    相关资源
    最近更新 更多