k8s-bootstrap.yaml 2.67 KB
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: k8s-bootstrap-config
  namespace: kube-system
data:
  HOME: /tmp/cluster-home
  SSH_CONFIG: |
    StrictHostKeyChecking no
    LogLevel VERBOSE

#-i /tmp/cluster-ssh/ssh-private-key
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: k8s-bootstrap-scripts
  namespace: kube-system
data:
  clone-start-of-day: |
    #!/bin/sh
    set -ex
    # FIXME: don't hard-code this.
    ls -alR $HOME
    ssh -v git@gitlab.brainfood.com exit || true
    git clone git@gitlab.brainfood.com:brainfood/k8s-start-of-day.git /tmp/git-storage/k8s-start-of-day
---
apiVersion: batch/v1
kind: Job
metadata:
  name: k8s-bootstrap
  namespace: kube-system
spec:
  template:
    spec:
      restartPolicy: OnFailure
      securityContext:
        runAsUser: 1234
        runAsGroup: 1234
        fsGroup: 1234

      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master

      volumes:
        - name: k8s-bootstrap-ssh-config
          configMap:
            name: k8s-bootstrap-config
            defaultMode: 0600
            items:
              - key: SSH_CONFIG
                path: config

        - name: k8s-bootstrap-ssh-auth
          secret:
            secretName: cluster-ssh
            defaultMode: 0600
            items:
              - key: ssh-private-key
                path: id_rsa

        - name: k8s-bootstrap-scripts
          configMap:
            name: k8s-bootstrap-scripts
            defaultMode: 0755
        - name: cluster-home
          emptyDir: {}
        - name: cluster-ssh
          emptyDir: {}
        - name: git-storage
          emptyDir: {}

      initContainers:
        - name: clone-k8s-start-of-day
          image: bitnami/git
          envFrom:
            - configMapRef:
                name: k8s-bootstrap-config
          volumeMounts:
            - name: k8s-bootstrap-scripts
              mountPath: /tmp/k8s-bootstrap-scripts
            - name: cluster-home
              mountPath: /tmp/cluster-home
            - name: cluster-ssh
              mountPath: /tmp/cluster-home/.ssh
            - name: k8s-bootstrap-ssh-auth
              mountPath: /tmp/cluster-home/.ssh/id_rsa
              subPath: id_rsa
            - name: k8s-bootstrap-ssh-config
              mountPath: /tmp/cluster-home/.ssh/config
              subPath: config
            - name: git-storage
              mountPath: /tmp/git-storage
          command: ["/tmp/k8s-bootstrap-scripts/clone-start-of-day"]

      containers:
        - name: show-status
          image: bash
          command: ["bash", "-ex", "ls -al /tmp"]
          volumeMounts:
            - name: git-storage
              mountPath: /tmp/git-storage
---