K8s使用EnvFrom

时间:2019-05-21 04:59:18

标签: kubernetes

我正在尝试在集群上启动一个influxdb实例。

我正在遵循一些不同的指南,并尝试使用envFrom运算符将其作为环境变量公开。不幸的是,部署之后我总是得到Environment: <none>。对我期望的环境变量进行回显也会产生一个空白值。

我正在运行此命令进行部署(以下脚本在influxdb.yaml中):kubectl创建部署influxdb --image=influxdb

这是我的部署脚本:

 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
   creationTimestamp: null
   generation: 1
   labels:
     app: influxdb
     project: pihole
   name: influxdb
 spec:
   progressDeadlineSeconds: 600
   replicas: 1
   revisionHistoryLimit: 10
   selector:
     matchLabels:
       app: influxdb
   strategy:
     rollingUpdate:
       maxSurge: 25%
       maxUnavailable: 25%
     type: RollingUpdate
   template:
     metadata:
       creationTimestamp: null
       labels:
         app: influxdb
     spec:
       containers:
       - name: influxdb
         envFrom:
         - secretRef:
             name: influxdb-creds
         image: docker.io/influxdb:1.7.6
         imagePullPolicy: IfNotPresent
         resources: {}
         terminationMessagePath: /dev/termination-log
         terminationMessagePolicy: File
         volumeMounts:
         - mountPath: /var/lib/influxdb
           name: var-lib-influxdb
       dnsPolicy: ClusterFirst
       restartPolicy: Always
       schedulerName: default-scheduler
       securityContext: {}
       terminationGracePeriodSeconds: 30
       volumes:
       - name: var-lib-influxdb
         persistentVolumeClaim:
           claimName: influxdb
 status: {}

kubectl的输出描述了秘密的influxdb-creds是这样的:

Name:         influxdb-creds
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
INFLUXDB_USERNAME:  4 bytes
INFLUXDB_DATABASE:  6 bytes
INFLUXDB_HOST:      8 bytes
INFLUXDB_PASSWORD:  11 bytes

2 个答案:

答案 0 :(得分:0)

要测试您的部署,请首先创建机密信息,然后再创建部署:

1. Secrets:
kubectl create secret generic influxdb-creds --from-literal=INFLUXDB_USERNAME='test_user' --from-literal=INFLUXDB_DATABASE='test_password'

2. Deployment:
kubectl apply -f <path_to_your_yaml_file>

为了进行验证,请运行

kubectl describe secret influxdb-creds

kubectl exec <your_new_deployed_pod>  -- env
kubectl describe pod <your_new_deployed_pod>

看看:

Environment Variables from:
      influxdb-creds  Secret  Optional: false

希望获得帮助。

请分享您的发现。

答案 1 :(得分:0)

答案是我创建的部署不正确。我正在使用命令kubectl create deployment influxdb --image=influxdb创建一个空白部署,而应该使用kubectl create -f influxdb.yaml创建一个命令,其中influxdb.yaml是我的文件,其中包含原始问题中的部署定义。

我做出了错误的假设,即create deploy命令以相同的名称读取yaml文件,但不会。