如何在 YAML 文件中使用环境变量?
我正在使用 kubectl 创建一个命名空间,并想知道如何使用变量而不是testnamespace像name: $var
apiVersion: v1
kind: Namespace
metadata:
name: testnamespace
spec:
finalizers:
- kubernetes
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,您始终可以使用对象创建的命令式模式,而不是将变量合并到 yaml 文件中,即
kubectl create namespace $NAME [--dry-run] [options]
Run Code Online (Sandbox Code Playgroud)
考虑以下示例 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!
Run Code Online (Sandbox Code Playgroud)
用GREEN标记的替换在标准 YAML 中很容易获得,使用锚、别名和合并键。
用YELLOW标记的替换在技术上可以在标准 YAML 中使用,但不能没有自定义类型声明或其他一些绑定机制。
以RED标记的替换在标准 YAML 中不可用。然而,也有解决方法和替代方案;例如通过字符串格式化或字符串模板引擎(例如 python 的str.format)。
YAML 的一个经常请求的功能是能够插入任意变量占位符,这些占位符支持与同一(或嵌入)YAML 文件中的其他内容相关的任意交叉引用和表达式。
YAML 支持锚点和别名,但此功能不支持在 YAML 文本中任意放置占位符和表达式。它们仅适用于 YAML 节点。
YAML 还支持自定义类型声明,但是这些不太常见,如果您接受来自潜在不可信来源的 YAML 内容,则会存在安全隐患。
有 YAML 扩展库,但这些不是本机 YAML 规范的一部分。
sprintf或str.format样式| 归档时间: |
|
| 查看次数: |
5860 次 |
| 最近记录: |