kuberneteszabbix

kubernetes set env variable value with index


I have these pods:

NAME                  READY   STATUS    RESTARTS   AGE    IP            NODE                  NOMINATED NODE   READINESS GATES
pod/zabbix-server-0   1/1     Running   0          67m    10.244.1.12   i-0155b0a4f7376aea5   <none>           <none>
pod/zabbix-server-1   1/1     Running   0          73m    10.244.0.13   i-0af3ff4d3cc1a4a4a   <none>           <none>
pod/zabbix-server-2   1/1     Running   0          73m    10.244.1.11   i-0155b0a4f7376aea5   <none>           <none>

Now I'm try to deploy zabbix-agent using this code:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  namespace: mon-zabbix
  name: zabbix-agent
spec:
  serviceName: zabbix-agent
  replicas: 3
  selector:
    matchLabels:
     app: zabbix-agent
  template:
    metadata:
      labels:
        app: zabbix-agent
    spec:   
      containers:
      - name: zabbix-agent
        image: zabbix/zabbix-agent:ubuntu-6.0-latest
        ports:
        - containerPort: 10050
        env:
        - name: ZBX_SERVER_HOST
          value: zabbix-server-N <- how can refer a zabbix-server-0 for zabbix-agent-0
        - name: ZBX_HOSTNAME
          value: zabbix-server-N <- how can refer a zabbix-server-0 for zabbix-agent-0
        volumeMounts:
        - name: pvc
          mountPath: /etc/zabbix/zabbix_agentd.d
        securityContext:
          allowPrivilegeEscalation: false
  volumeClaimTemplates:
  - metadata:
      name: pvc
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 100Mi

Is it possible to set the variables ZBX_SERVER_HOST and ZBX_HOSTNAME with zabbix-server-0 for zabbix-agent-0, zabbix-server-1 for zabbix-agent-1, etc...?


Solution

  • You can do that with apps.kubernetes.io/pod-index label and variable interpolation.

            env:
            - name: POD_NUMBER
              valueFrom:
                fieldRef:
                  fieldPath: metadata.labels['apps.kubernetes.io/pod-index']
            - name: ZBX_SERVER_HOST
              value: zabbix-server-$(POD_NUMBER)