如何参数化 eksctl 的配置文件?
How to parameterize the config file for eksctl?
我有以下配置文件(为简洁起见进行了编辑):
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: FOO-CLUSTER
region: eu-central-1
nodeGroups:
- name: FOO-CLUSTER-group-1
[..]
- name: FOO-CLUSTER-group-2
[..]
将用于创建具有 eksctl create cluster -f config.yml
的集群。
我想避免硬编码集群名称(即本例中的 FOO-CLUSTER
)并将其提取到参数(例如环境变量或附加文件或 CLI 参数),以便我以后可以使用同一个文件创建 BAR-CLUSTER
、FEE-CLUSTER
等等。
可能吗?
我认为这是不可能的。但是,您可以做的是将该文件用作模板,并在 运行 命令之前 sed
它。对于 kubectl apply
我已经使用了这种技术并且效果很好。您甚至可以使用变量。例如:
template=`curl -sS https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/alb-ingress-controller.yaml | sed -e "s/# - --cluster-name=devCluster/- --cluster-name=$CLUSTER_NAME/g" -e "s/# - --aws-vpc-id=vpc-xxxxxx/- --aws-vpc-id=$VPC_ID/g" -e "s/# - --aws-region=us-west-1/- --aws-region=$AWS_REGION/g"`
echo "$template" | kubectl apply -f -
我从来没有将它与 eksctl
一起使用,但我看不出它为什么不起作用。
以类似的方式,您可以使用 envsubst
。
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: ${CLUSTER_NAME}
region: eu-central-1
nodeGroups:
- name: ${CLUSTER_NAME}-group-1
[..]
- name: ${CLUSTER_NAME}-group-2
[..]
export CLUSTER_NAME=foo
cat cluster-config.yml | envsubst '${CLUSTER_NAME}' > cluster-config-foo.yml
我有以下配置文件(为简洁起见进行了编辑):
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: FOO-CLUSTER
region: eu-central-1
nodeGroups:
- name: FOO-CLUSTER-group-1
[..]
- name: FOO-CLUSTER-group-2
[..]
将用于创建具有 eksctl create cluster -f config.yml
的集群。
我想避免硬编码集群名称(即本例中的 FOO-CLUSTER
)并将其提取到参数(例如环境变量或附加文件或 CLI 参数),以便我以后可以使用同一个文件创建 BAR-CLUSTER
、FEE-CLUSTER
等等。
可能吗?
我认为这是不可能的。但是,您可以做的是将该文件用作模板,并在 运行 命令之前 sed
它。对于 kubectl apply
我已经使用了这种技术并且效果很好。您甚至可以使用变量。例如:
template=`curl -sS https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.4/docs/examples/alb-ingress-controller.yaml | sed -e "s/# - --cluster-name=devCluster/- --cluster-name=$CLUSTER_NAME/g" -e "s/# - --aws-vpc-id=vpc-xxxxxx/- --aws-vpc-id=$VPC_ID/g" -e "s/# - --aws-region=us-west-1/- --aws-region=$AWS_REGION/g"`
echo "$template" | kubectl apply -f -
我从来没有将它与 eksctl
一起使用,但我看不出它为什么不起作用。
以类似的方式,您可以使用 envsubst
。
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: ${CLUSTER_NAME}
region: eu-central-1
nodeGroups:
- name: ${CLUSTER_NAME}-group-1
[..]
- name: ${CLUSTER_NAME}-group-2
[..]
export CLUSTER_NAME=foo
cat cluster-config.yml | envsubst '${CLUSTER_NAME}' > cluster-config-foo.yml