How can I mount a docker config file with Skaffold?

12/21/2020

I want to use the Prometheus image to deploy a container as part of the local deployment. Usually one has to run the container with volume and bind-mount to get the configuration file (prometheus.yml) into the container:

docker run \
    -p 9090:9090 \
    -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus

How can I achieve this with Kubernetes when using Skaffold?

-- thinwybk
kubernetes
skaffold

1 Answer

12/21/2020

Your Kubernetes configuration will be something like this, You can specify the port number and volume mounts. The important sections for mounting are volumeMounts and volumes.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-prom
spec:
  selector:
    matchLabels:
      app: my-prom
  template:
    metadata:
      labels:
        app: my-prom
    spec:
      containers:
      - name: my-prom
        image: prometheus:latest
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 9090
        volumeMounts:
          - name: prom-config
            mountPath: /path/to/prometheus.yml
      volumes:
        - name: prom-config
          hostPath:
              path: /etc/prometheus/prometheus.yml
---
apiVersion: v1
kind: Service
metadata:
  name: my-prom
spec:
  selector:
    app: my-prom
  ports:
  - port: 9090
    targetPort: 9090

save the Kubernetes config file in a folder and add below config to skaffold.yaml with the path to K8s config file,

deploy:
  kubectl:
    manifests:
    - k8s/*.yaml
-- Bala
Source: StackOverflow