Skip to content

Instantly share code, notes, and snippets.

@krisclarkdev
Created December 30, 2019 17:32
Show Gist options
  • Select an option

  • Save krisclarkdev/f5c4267052ae2b25418c88b30a2f3b84 to your computer and use it in GitHub Desktop.

Select an option

Save krisclarkdev/f5c4267052ae2b25418c88b30a2f3b84 to your computer and use it in GitHub Desktop.

Revisions

  1. Kristopher Clark created this gist Dec 30, 2019.
    146 changes: 146 additions & 0 deletions pihole.yaml
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,146 @@
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
    name: local
    provisioner: kubernetes.io/no-provisioner
    volumeBindingMode: WaitForFirstConsumer
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pihole-local-etc-volume
    labels:
    directory: etc
    spec:
    capacity:
    storage: 1Gi
    accessModes:
    - ReadWriteOnce
    persistentVolumeReclaimPolicy: Delete
    storageClassName: local
    local:
    path: /usr/local
    nodeAffinity:
    required:
    nodeSelectorTerms:
    - matchExpressions:
    - key: kubernetes.io/hostname
    operator: In
    values:
    - k8s-01
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: pihole-local-etc-claim
    spec:
    storageClassName: local
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 1Gi
    selector:
    matchLabels:
    directory: etc
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: pihole-local-dnsmasq-volume
    labels:
    directory: dnsmasq.d
    spec:
    capacity:
    storage: 1Gi
    accessModes:
    - ReadWriteOnce
    persistentVolumeReclaimPolicy: Delete
    storageClassName: local
    local:
    path: /usr/local
    nodeAffinity:
    required:
    nodeSelectorTerms:
    - matchExpressions:
    - key: kubernetes.io/hostname
    operator: In
    values:
    - k8s-01
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: pihole-local-dnsmasq-claim
    spec:
    storageClassName: local
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 500Mi
    selector:
    matchLabels:
    directory: dnsmasq.d
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: pihole
    labels:
    app: pihole
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: pihole
    template:
    metadata:
    labels:
    app: pihole
    name: pihole
    spec:
    containers:
    - name: pihole
    image: pihole/pihole:latest
    imagePullPolicy: Always
    env:
    - name: TZ
    value: "America/Chicago"
    - name: WEBPASSWORD
    value: "secret"
    volumeMounts:
    - name: pihole-local-etc-volume
    mountPath: "/etc/pihole"
    - name: pihole-local-dnsmasq-volume
    mountPath: "/etc/dnsmasq.d"
    volumes:
    - name: pihole-local-etc-volume
    persistentVolumeClaim:
    claimName: pihole-local-etc-claim
    - name: pihole-local-dnsmasq-volume
    persistentVolumeClaim:
    claimName: pihole-local-dnsmasq-claim
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: pihole
    spec:
    selector:
    app: pihole
    ports:
    - port: 8000
    targetPort: 80
    name: pihole-admin
    - port: 53
    targetPort: 53
    protocol: TCP
    name: dns-tcp
    - port: 53
    targetPort: 53
    protocol: UDP
    name: dns-udp
    externalIPs:
    - 192.168.1.171