K8s Downward Api

5 min read
K8s Downward Api

You can send down extra info about pod and node inside the cluster to a container. valueFrom.fieldRef can provide extra info to a pod I use them as environment-variables to provide extra info inside our team slackbot

We will be using the downward API Currently we have these points to choose from

Container part yaml

containers:
- env:
    - name: MY_NODE_NAME
    valueFrom:
        fieldRef:
        apiVersion: v1
        fieldPath: spec.nodeName
    - name: MY_POD_NAME
    valueFrom:
        fieldRef:
        apiVersion: v1
        fieldPath: metadata.name
    - name: MY_POD_NAMESPACE
    valueFrom:
        fieldRef:
        apiVersion: v1
        fieldPath: metadata.namespace
    - name: MY_POD_IP
    valueFrom:
        fieldRef:
        apiVersion: v1
        fieldPath: status.podIP
    - name: MY_HOST_IP
    valueFrom:
        fieldRef:
        apiVersion: v1
        fieldPath: status.hostIP
    image: pylab2.enskede.local:5000/zadeotrafikbot:1.3.1-py38
    name: zadeotrafikbot

Full deployment yaml example

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
    app: zadeotrafikbot
    name: zadeotrafikbot
    spec:
    replicas: 1
    selector:
        matchLabels:
        app: zadeotrafikbot
    strategy:
        type: Recreate
    template:
        labels:
            app: zadeotrafikbot
        spec:
        containers:
        - env:
            - name: MY_NODE_NAME
            valueFrom:
                fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
            - name: MY_POD_NAME
            valueFrom:
                fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
            - name: MY_POD_NAMESPACE
            valueFrom:
                fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
            - name: MY_POD_IP
            valueFrom:
                fieldRef:
                apiVersion: v1
                fieldPath: status.podIP
            - name: MY_HOST_IP
            valueFrom:
                fieldRef:
                apiVersion: v1
                fieldPath: status.hostIP
            image: pylab2.enskede.local:5000/zadeotrafikbot:1.3.1-py38
            imagePullPolicy: IfNotPresent
            name: zadeotrafikbot
            volumeMounts:
            - mountPath: /app/config/
            name: app-config
        dnsPolicy: ClusterFirst
        restartPolicy: Always
        terminationGracePeriodSeconds: 5
        volumes:
        - configMap:
            defaultMode: 420
            name: zadeo.trafikbot.config
            name: app-config