从文件创建新的ConfigMap:
kubernetes create configmap foo --from-file=foo
这就是ConfigMap内部的外观:
kubernetes get configmaps foo -o yaml
apiVersion: v1
data:
foo: |
VAR1=value1
VAR2=value2
然后,我使用此ConfigMap在容器中创建一组环境变量:
apiVersion: v1
kind: Pod
metadata:
labels:
name: app
name: app
spec:
containers:
- name: app-server
image: app:latest
ports:
- containerPort: 3000
envFrom:
- configMapRef:
name: foo
command: ["/bin/bash", "-c", "printenv"]
当容器命令运行时,我看到printenv
的以下输出:
foo=VAR1=value1
VAR2=value2
因此,pod中的echo $foo
命令返回:
VAR1=value1 VAR2=value2
根据带有--from-file
的ConfigMap文档,这是预期的行为。
以某种方式将该文件的值作为单独的env变量VAR1
,VAR2
,VAR3
等提供给pod的创意方式(以及正确的位置)是什么? 。?
答案 0 :(得分:3)
对于Kubernetes的当前版本(1.6.x),这是不可能的。正如kubectl create configmap
envFrom
中所写:
- from-file:可以使用文件路径指定密钥文件,在这种情况下,文件basename将用作configmap密钥,或者可选地使用密钥和文件路径,在这种情况下将使用给定的密钥。指定目录将迭代其basename为有效configmap键的目录中的每个命名文件。
当您想要创建一个像这样使用的配置图时,作为--from-literal
容器配置的输入,您可以使用kubectl create configmap foo --from-literal=var1=value1 --from-literal=var2=value2
选项创建它,如下所示:
eval "kubectl create configmap foo $(cat foo.txt | sed -e 's/^/--from-literal=/' | tr "\n" ' ')"
要保留文件,您可以将文件转换为某些东西,然后运行此命令,如下所示:
VAR1
除此之外,查看offical documentation之类的优秀提案也值得您花时间。
还要关注变量命名。 iirc VAR2
和var vTicketType;
vTicketType = prompt(" What type of Tickets is required?");
document.write("The Ticket Type is: " + vTicketType);
var vTicketQty;
var vTicketQty = parseInt(vTicketQty);
vTicketQty = prompt("How many Tickets are required?");
document.write("<br/>");
document.write("The Ticket Qty is: " + vTicketQty);
document.write("<br/>");
if (vTicketQty < 0) {
document.write("Invalid Qty");
document.write("<br/>");
}
function calcPrice(vTicketPrice) {
var vTicketPrice;
if (vTicketType.toLowerCase() == "a") {
document.write("Ticket cost is:$100");
vTicketPrice = 100;
} else if (vTicketType.toLowerCase() == "b") {
document.write("Ticket cost is:$75");
vTicketPrice = 75;
} else if (vTicketType.toLowerCase() == "c") {
document.write("Ticket cost is:$50");
vTicketPrice = 50;
} else {
document.write("-1");
vTicketPrice = -1;
}
}
function calcTotal(vTotalPayment) {
var vTotalPayment;
if (vTotalPayment > 0) {
document.write("<br/>" + "Total payment required is: $" + vTotalPayment);
} else {
document.write("<br/>" + "Invalid data supplied");
}
}
不是有效的属性名称 - 它们必须是小写的,这可能会在传递它们时引起一些问题。