Amazon web services 使用Kubernetes中的地形输出
我正在使用一个稍微定制的地形配置在AWS上生成Kubernetes集群。该配置包括一个连接到集群节点和主节点的EFS实例。为了让Kubernetes将此EFS实例用于卷,我的Kubernetes YAML需要Terraform生成的EFS实例的id和端点/域 目前,我的Terraform输出EFS id和DNS名称,我需要在Amazon web services 使用Kubernetes中的地形输出,amazon-web-services,kubernetes,terraform,kubectl,Amazon Web Services,Kubernetes,Terraform,Kubectl,我正在使用一个稍微定制的地形配置在AWS上生成Kubernetes集群。该配置包括一个连接到集群节点和主节点的EFS实例。为了让Kubernetes将此EFS实例用于卷,我的Kubernetes YAML需要Terraform生成的EFS实例的id和端点/域 目前,我的Terraform输出EFS id和DNS名称,我需要在Terraform应用之后和kubectl应用YAML之前使用这些值手动编辑我的Kubernetes YAML 如何将这些地形输出值自动传递给Kubernetes?我不知道在
Terraform应用
之后和kubectl应用
YAML之前使用这些值手动编辑我的Kubernetes YAML
如何将这些地形输出值自动传递给Kubernetes?我不知道在AWS中设置Kubernetes群集的yaml是什么意思。但是,我总是使用。此外,我不明白您为什么要将EFS装载到主节点和/或节点,而不是容器 但直接回答您的问题:您可以编写一个脚本,将Terraform输出输出输出到一个值文件,并使用该文件生成k8s配置 我在寻找将TF输出发送到Kubernetes中指定的EnvVar的方法时偶然发现了这个问题,我希望更多的人会这样做。我还怀疑这也是你的问题,或者至少它可以成为解决你问题的一种方式。因此: 您可以使用连接到群集,然后使用资源创建configmaps
provider "kubernetes" {}
resource "kubernetes_config_map" "efs_configmap" {
"metadata" {
name = "efs_config" // this will be the name of your configmap
}
data {
efs_id = "${aws_efs_mount_target.efs_mt.0.id}"
efs_dns = "${aws_efs_mount_target.efs_mt.0.dns_name}"
}
}
如果您有秘密参数,请使用资源:
resource "kubernetes_secret" "some_secrets" {
"metadata" {
name = "some_secrets"
}
data {
s3_iam_access_secret = "${aws_iam_access_key.someresourcename.secret}"
rds_password = "${aws_db_instance.someresourcename.password}"
}
}
然后,您可以在设置环境时使用yaml:
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: some-app-deployment
spec:
selector:
matchLabels:
app: some
template:
metadata:
labels:
app: some
spec:
containers:
- name: some-app-container
image: some-app-image
env:
- name: EFS_ID
valueFrom:
configMapKeyRef:
name: efs_config
key: efs_id
- name: RDS_PASSWORD
valueFrom:
secretKeyRef:
name: some_secrets
key: rds_password