Created
September 13, 2016 14:54
-
-
Save jcderr/42c734620c30ac9eb5394f3644046c18 to your computer and use it in GitHub Desktop.
secured kubernetes cloud-config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #cloud-config | |
| write-files: | |
| - path: /opt/bin/wupiao | |
| permissions: '0755' | |
| content: | | |
| #!/bin/bash | |
| # [w]ait [u]ntil [p]ort [i]s [a]ctually [o]pen | |
| [ -n "$1" ] && [ -n "$2" ] && while ! curl --output /dev/null \ | |
| --silent --head --fail \ | |
| http://${1}:${2}; do sleep 1 && echo -n .; done; | |
| exit $? | |
| - path: /etc/motd.d/system-id.conf | |
| content: | | |
| kube-nodes-stable-dev-us-east-1b | |
| _ __ _ _ _ _ | |
| | |/ / | | | \ | | | | | |
| | ' /_ _| |__ ___ | \| | ___ __| | ___ | |
| | <| | | | '_ \ / _ \ | . ` |/ _ \ / _` |/ _ \ | |
| | . \ |_| | |_) | __/ | |\ | (_) | (_| | __/ | |
| |_|\_\__,_|_.__/ \___| |_| \_|\___/ \__,_|\___| | |
| - path: /etc/kubernetes/kubeconfig | |
| encoding: b64 | |
| content: redacted | |
| coreos: | |
| flannel: | |
| etcd-prefix: /coreos.com/us-east-1b/network | |
| etcd2: | |
| proxy: on | |
| listen-client-urls: http://localhost:2379,http://localhost:4001 | |
| initial-cluster: etcdserver=https://etcd-1a.domain.tld:2380 | |
| cert-file: /var/lib/etcd2/certs/cert.pem | |
| key-file: /var/lib/etcd2/certs/cert-key.pem | |
| ca-file: /var/lib/etcd2/certs/ca.pem | |
| client-cert-auth: true | |
| peer-cert-file: /var/lib/etcd2/certs/cert.pem | |
| peer-key-file: /var/lib/etcd2/certs/cert-key.pem | |
| peer-ca-file: /var/lib/etcd2/certs/ca.pem | |
| fleet: | |
| metadata: "role=node" | |
| units: | |
| - name: etcd2.service | |
| command: start | |
| drop-ins: | |
| - name: 50-configure-ssl-certs.conf | |
| content: | | |
| [Service] | |
| ExecStartPre=/usr/bin/curl -o /tmp/etcd-certs.json -L https://vault.domain.tld/v1/etcd/dev-1a/pki/issue/client -H 'X-Vault-Token: some-vault-token' -d'{"common_name": "kube-master.domain.tld"}' | |
| ExecStartPre=/usr/bin/mkdir -p /var/lib/etcd2/certs | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.private_key /tmp/etcd-certs.json > /var/lib/etcd2/certs/cert-key.pem' | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.certificate /tmp/etcd-certs.json > /var/lib/etcd2/certs/cert.pem' | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.issuing_ca /tmp/etcd-certs.json > /var/lib/etcd2/certs/ca.pem' | |
| ExecStartPre=/usr/bin/rm /tmp/etcd-certs.json | |
| ExecStartPre=/usr/bin/chmod 0600 /var/lib/etcd2/certs/cert-key.pem | |
| - name: fleet.service | |
| command: start | |
| - name: flanneld.service | |
| command: start | |
| drop-ins: | |
| - name: 10-require-early-docker.conf | |
| content: | | |
| [Unit] | |
| After=early-docker.service | |
| Requires=early-docker.service | |
| - name: docker.service | |
| drop-ins: | |
| - name: 10-wait-var-lib-docker.conf | |
| content: | | |
| [Unit] | |
| After=var-lib-docker.mount | |
| Requires=var-lib-docker.mount | |
| command: start | |
| - name: format-ebs.service | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=Formats the EBS drive | |
| After=dev-xvdf.device | |
| Requires=dev-xvdf.device | |
| Wants=docker.service | |
| Wants=early-docker.service | |
| Before=docker.service | |
| Before=early-docker.service | |
| Before=var-lib-docker.mount | |
| [Service] | |
| Type=oneshot | |
| RemainAfterExit=yes | |
| ExecStart=/usr/sbin/wipefs -f /dev/xvdf | |
| ExecStart=/usr/sbin/mkfs.btrfs -f /dev/xvdf | |
| - name: var-lib-docker.mount | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=Mount ephemeral to /var/lib/docker | |
| Requires=format-ebs.service | |
| Wants=format-ebs.service | |
| After=format-ebs.service | |
| Before=docker.service | |
| Before=early-docker.service | |
| [Mount] | |
| What=/dev/xvdf | |
| Where=/var/lib/docker | |
| Type=btrfs | |
| - name: setup-network-environment.service | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=Setup Network Environment | |
| Documentation=https://github.com/kelseyhightower/setup-network-environment | |
| Requires=network-online.target | |
| After=network-online.target | |
| [Service] | |
| ExecStartPre=-/usr/bin/mkdir -p /opt/bin | |
| ExecStartPre=/usr/bin/curl -L -o /opt/bin/setup-network-environment -z /opt/bin/setup-network-environment https://github.com/kelseyhightower/setup-network-environment/releases/download/v1.0.0/setup-network-environment | |
| ExecStartPre=/usr/bin/chmod +x /opt/bin/setup-network-environment | |
| ExecStart=/opt/bin/setup-network-environment | |
| RemainAfterExit=yes | |
| Type=oneshot | |
| - name: kubectl-fetch.service | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=Install kubectl binary | |
| Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
| Requires=kube-kubelet.service | |
| After=kube-kubelet.service | |
| [Service] | |
| ExecStartPre=-/usr/bin/mkdir -p /opt/bin | |
| ExecStart=/usr/bin/curl -L -o /opt/bin/kubectl -z /opt/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v1.3.6/bin/linux/amd64/kubectl | |
| ExecStartPost=/usr/bin/chmod +x /opt/bin/kubectl | |
| RemainAfterExit=yes | |
| Type=oneshot | |
| - name: kube-proxy.service | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=Kubernetes Proxy | |
| Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
| Requires=setup-network-environment.service | |
| After=setup-network-environment.service | |
| [Service] | |
| ExecStartPre=/usr/bin/curl -L -o /opt/bin/kube-proxy -z /opt/bin/kube-proxy https://storage.googleapis.com/kubernetes-release/release/v1.3.6/bin/linux/amd64/kube-proxy | |
| ExecStartPre=/usr/bin/chmod +x /opt/bin/kube-proxy | |
| # wait for kubernetes master to be up and ready | |
| ExecStart=/opt/bin/kube-proxy \ | |
| --kubeconfig=/etc/kubernetes/kubeconfig \ | |
| --master=https://dev-us-east-1b.k8s.domain.tld:443 \ | |
| --logtostderr=true | |
| Restart=always | |
| RestartSec=10 | |
| - name: kube-kubelet.service | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=Kubernetes Kubelet | |
| Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
| Requires=setup-network-environment.service | |
| After=setup-network-environment.service | |
| [Service] | |
| EnvironmentFile=/etc/network-environment | |
| ExecStartPre=/usr/bin/curl -o /tmp/kubelet-certs.json -L https://vault.domain.tld/v1/k8s/dev-1a/pki/issue/kubelet -H 'X-Vault-Token: some-vault-token' -d'{"common_name": "kubelet"}' | |
| ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/ssl | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.private_key /tmp/kubelet-certs.json > /etc/kubernetes/ssl/worker-key.pem' | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.certificate /tmp/kubelet-certs.json > /etc/kubernetes/ssl/worker.pem' | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.issuing_ca /tmp/kubelet-certs.json >> /etc/kubernetes/ssl/worker.pem' | |
| ExecStartPre=/bin/sh -c '/usr/bin/jq -r .data.issuing_ca /tmp/kubelet-certs.json > /etc/kubernetes/ssl/ca.pem' | |
| ExecStartPre=/usr/bin/rm /tmp/kubelet-certs.json | |
| ExecStartPre=/usr/bin/chmod 0600 /etc/kubernetes/ssl/worker-key.pem | |
| ExecStartPre=/usr/bin/curl -L -o /opt/bin/kubelet -z /opt/bin/kubelet https://storage.googleapis.com/kubernetes-release/release/v1.3.6/bin/linux/amd64/kubelet | |
| ExecStartPre=/usr/bin/chmod +x /opt/bin/kubelet | |
| # wait for kubernetes master to be up and ready | |
| ExecStart=/opt/bin/kubelet \ | |
| --address=0.0.0.0 \ | |
| --port=10250 \ | |
| --hostname-override=${DEFAULT_IPV4} \ | |
| --api-servers=https://dev-us-east-1b.k8s.domain.tld \ | |
| --allow-privileged=true \ | |
| --logtostderr=true \ | |
| --cadvisor-port=4194 \ | |
| --healthz-bind-address=0.0.0.0 \ | |
| --healthz-port=10248 \ | |
| --kubeconfig=/etc/kubernetes/kubeconfig \ | |
| --cluster-dns=10.99.254.254 \ | |
| --cluster-domain=us-east-1b \ | |
| --low-diskspace-threshold-mb=512 \ | |
| --maximum-dead-containers=20 \ | |
| --tls-cert-file=/etc/kubernetes/ssl/worker.pem \ | |
| --tls-private-key-file=/etc/kubernetes/ssl/worker-key.pem \ | |
| --cloud-provider=aws | |
| Restart=always | |
| RestartSec=10 | |
| - name: cfn-notify.service | |
| command: start | |
| content: | | |
| [Unit] | |
| Description=AWS Cloud Formation Signaling | |
| After=kube-kubelet.service | |
| After=kube-proxy.service | |
| Wants=kube-kubelet.service | |
| Wants=kube-proxy.service | |
| [Service] | |
| Type=oneshot | |
| TimeoutStartSec=0 | |
| EnvironmentFile=/etc/environment | |
| ExecStartPre=/usr/bin/docker pull jcderr/cfn-tools:1.4 | |
| ExecStart=/usr/bin/docker run jcderr/cfn-tools:1.4 cfn-signal --success=true --stack=kube-nodes-stable-dev-us-east-1b --resource=KubernetesNodeAutoScale | |
| update: | |
| group: stable | |
| reboot-strategy: off |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment