如何在YAML文件中使用环境变量?
我正在使用kubectl创建名称空间,并想知道如何使用变量而不是像testnamespace
那样使用name: $var
apiVersion: v1
kind: Namespace
metadata:
name: testnamespace
spec:
finalizers:
- kubernetes
答案 0 :(得分:1)
作为一种解决方法,您始终可以使用命令式创建对象的方式,而不是将变量合并到yaml文件中,即
kubectl create namespace $NAME [--dry-run] [options]
请考虑以下示例YAML。它是格式正确的YAML语法,但是它使用(非标准)带有嵌入式表达式的花括号占位符。
由于嵌入式表达式不是本机YAML规范的一部分,因此在YAML中无法产生预期的结果。尽管如此,它们在本示例中仅用于帮助说明标准YAML可用的功能和不可用的功能。
part01_customer_info:
cust_fname: "Homer"
cust_lname: "Himpson"
cust_motto: "I love donuts!"
cust_email: homer@himpson.org
part01_government_info:
govt_sales_taxrate: 1.15
part01_purchase_info:
prch_unit_label: "Bacon-Wrapped Fancy Glazed Donut"
prch_unit_price: 3.00
prch_unit_quant: 7
prch_product_cost: "{{prch_unit_price * prch_unit_quant}}"
prch_total_cost: "{{prch_product_cost * govt_sales_taxrate}}"
part02_shipping_info:
cust_fname: "{{cust_fname}}"
cust_lname: "{{cust_lname}}"
ship_city: Houston
ship_state: Hexas
part03_email_info:
cust_email: "{{cust_email}}"
mail_subject: Thanks for your DoughNutz order!
mail_notes: |
We want the mail_greeting to have all the expected values
with filled-in placeholders (and not curly-braces).
mail_greeting: |
Greetings {{cust_fname}} {{cust_lname}}!
We love your motto "{{cust_motto}}" and we agree with you!
Your total purchase price is {{prch_total_cost}}
Thank you for your order!
使用锚点,别名和merge keys,可以在标准YAML中轻松使用 GREEN 中标记的替换。
在 YELLOW 中标记的替代在技术上可以在标准YAML中使用,但并非没有custom type declaration或其他绑定机制。
在 RED 中标记的替代在标准YAML中不可用。但是,有解决方法和替代方法。例如通过string formatting或字符串模板引擎(例如python的str.format
)。
YAML经常要求的功能是能够插入任意变量占位符,这些占位符支持与同一(或transcluded)YAML文件中的其他内容相关的任意交叉引用和表达式。 / p>
YAML支持锚和别名,但是此功能不支持在YAML文本中的任意位置放置占位符和表达式。它们仅适用于YAML节点。
YAML也支持custom type declaration,但是它们不太常见,如果您接受来自潜在不受信任来源的YAML内容,则会带来安全隐患。
有YAML扩展库,但它们不是本机YAML规范的一部分。
sprintf
或str.format
样式功能