Last active
July 18, 2019 15:44
-
-
Save danpawlik/052fdc46260630ecd9db22ed108dd2c1 to your computer and use it in GitHub Desktop.
Install k8s cluster and helm
This file contains 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
#!/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