Skip to content

Instantly share code, notes, and snippets.

@danpawlik
Last active July 18, 2019 15:44
Show Gist options
  • Save danpawlik/052fdc46260630ecd9db22ed108dd2c1 to your computer and use it in GitHub Desktop.
Save danpawlik/052fdc46260630ecd9db22ed108dd2c1 to your computer and use it in GitHub Desktop.
Install k8s cluster and helm
#!/bin/bash
sudo apt update
sudo apt install -y curl git vim
if [ $(hostname --fqdn) != $(hostname) ]; then
echo "Hostname doesn't match to this one set in /etc/hosts."
echo "Fixing..."
HOSTNAME=$(hostname --fqdn)
sudo tee /etc/hostname <<EOF
$HOSTNAME
EOF
fi
HOST_IFACE=$(ip route | grep "^default" | head -1 | awk '{ print $5 }');
LOCAL_IP=$(ip addr | awk "/inet/ && /${HOST_IFACE}/{sub(/\/.*$/,\"\",\$2); print \$2}");
echo "${LOCAL_IP} $(hostname)" | sudo tee -a /etc/hosts
# Install Docker CE
## Set up the repository:
### Install packages to allow apt to use a repository over HTTPS
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
### Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
### Add Docker apt repository.
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
## Install Docker CE.
sudo apt-get update && sudo apt-get install docker-ce=18.06.2~ce~3-0~ubuntu -y
# Setup daemon.
cat << EOF | sudo tee -a /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo mkdir -p /etc/systemd/system/docker.service.d
# Restart docker.
sudo systemctl daemon-reload
sudo systemctl restart docker
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt update
function net_default_ip_address {
sudo ip -4 route list 0/0 | awk '{print $3}'
}
sudo apt install linux-image-extra-virtual ca-certificates curl software-properties-common -y
sudo apt install kubelet kubeadm kubectl -y
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "alias k=kubectl" >> ~/.bashrc
echo "complete -F __start_kubectl k" >> ~/.bashrc
# allow master run pod:
kubectl taint nodes --all node-role.kubernetes.io/master-
# install helm
curl -L https://git.io/get_helm.sh | sudo bash
# create serviceaccount
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
helm init --service-account tiller --upgrade
# Openstack helm + openstack helm infra + airship
sudo chown -R ubuntu:ubuntu /opt
git clone https://github.com/openstack/openstack-helm-infra /opt/openstack-helm-infra
git clone https://github.com/openstack/openstack-helm /opt/openstack-helm
git clone https://github.com/airshipit/drydock.git /opt/drydock
cp -a /opt/drydock/charts/drydock /opt/openstack-helm-infra/drydock
cd /opt/openstack-helm-infra/
# From https://github.com/openstack/openstack-helm-infra/blob/master/tools/deployment/common/005-deploy-k8s.sh#L185-L212
# make helm repo serve
sudo -E tee /etc/systemd/system/helm-serve.service << EOF
[Unit]
Description=Helm Server
After=network.target
[Service]
User=$(id -un 2>&1)
Restart=always
ExecStart=/usr/local/bin/helm serve
[Install]
WantedBy=multi-user.target
EOF
sudo chmod 0640 /etc/systemd/system/helm-serve.service
sudo systemctl daemon-reload
sudo systemctl restart helm-serve
sudo systemctl enable helm-serve
# Remove stable repo, if present, to improve build time
helm repo remove stable || true
# Set up local helm repo
helm repo add local http://localhost:8879/charts
helm repo update
# make sure that you are in /opt/openstack-helm-infra/
cd /opt/openstack-helm-infra/
make
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment