fix .git file in Kubernetes

This commit is contained in:
Michael Cade 2022-02-24 20:14:10 +00:00
parent b63dba3b4a
commit 348aaa5fe8
44 changed files with 1049 additions and 0 deletions

View File

@ -0,0 +1 @@
1.5:e4b0d545-5fd5-49c6-88be-44139c9ad3d8

View File

@ -0,0 +1 @@
1645452510

View File

@ -0,0 +1 @@
{"name":"bento/ubuntu-21.10","version":"202112.19.0","provider":"virtualbox","directory":"boxes/bento-VAGRANTSLASH-ubuntu-21.10/202112.19.0/virtualbox"}

View File

@ -0,0 +1 @@
0

View File

@ -0,0 +1 @@
e4b0d545-5fd5-49c6-88be-44139c9ad3d8

View File

@ -0,0 +1 @@
758da8fa9ae14606a03e2b90a86a0477

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAzzGQFcoNosHcBYK4bBTDE9IHd+KJow69IP/DBCv0oqoowywR
BB7RkHYlWIXboSjF1lbyqQF1c+3ejQn4SFYNk5lSZkFh2mq7gz1AU57xCQfT+nCL
7KdOEfeOuIP/FYJY+9aQM7j8ZU9dByngGTQOp2K+rqZY2+p0UkF096fezidNf7/X
0D+QBRP/WJSBpwmlRJmsbRUMxh8XV/su6TZmgtdb0kS7jTvFB8+8A4vjq2oTbZW5
Qy6CK7gCAPezPAqOt8/5h6spQvBBM5BDWhjRwQaQqMIbbBxujKIjJPsADlt6QKEd
yu7oSVEkovnh6zWgD1GPuAAwTcJ6P86wAQ5hkwIDAQABAoIBAAgptbmGCl99L8Pv
0IBBmSXwwmaQwEdyTzU7nl1NtgeqmIyH8eutoygD35jLPUnuJ004g7rw2cXFe10n
JWcELOjBw6NPtCE8z0JuaVhiDLEEY++b+4dJWCQREshmOuiICCVz4J6JDTiYlduw
ZKnZiTJDC6wp1ZpkdEzBU3BmZrrMc3PbSZ0nQyTKMD9EvWFDkCSuf/Xac7crijN4
wVLp08Yy/edsppXgzFCuPOSExzT0koB/vHxEc0nO71Dei20EFyO4HvhHYgG5ha0b
1eCl06x1F2gkgbdDKw6sCbqhWFu0Gwth3HVdI6J1+sr35bU+75ON+HfTtF8JrM9o
hRjZOTECgYEA7HJpwzZ90pRpMtirbai424W8WyZrVXSqZx4fznxK74VORqgza/xA
KtSV4r9NaIBJTzDK4hrRhVyrKJ0+xjq8GDQ/hry+dzfFpGELLVn0eYNtiSSh9KJV
a5/gQOXMLui5VjO9cbGJXpx6umhQ/rOMKdIbg/NzA2lgw7gFUv8o2/0CgYEA4FPb
MIRBBDoA9Gk09gzlXtb+K8NZpbUS/ajOzh2vguKwiIgBP3OyNrUOEU8u18yQEHml
Q9LOD2xG1qIASHaMHhfDvR0usx+jPGNTBICqwed2JIsTE/kVG7pIFyAkaFfBmIA1
MAr1/xsg2ZPTDrqr9UxTlv3XhERaMV3Qc6z+gM8CgYEA4IFGYN/VmmPmeyv1odqp
I28ZSGbzVSHARsb4pmOn90NY7of4w1ixSLmvU6wXANmGQhXvHb8fIAS8U4TyvN+6
BzVc+D8wjhw7oneuWDJoihQ7phNNX+3fM6CLGrPXKtc4W1wnTdOnvljPwz0XYq/y
rybbj29RznR5N3z8OTEjh7UCgYEA29tz3LYSHrlWjDS8clYrS2s8ytl3+D9isHcM
0NgpVwcj63wYdP7IcHO8qNxJVbkojO0cOz/VMyp0txEpY9vD8g5qieObDHV6f8n8
6FHOiaJ3mNMxTIb32CgXVYrsA9PWasdk2YQ0muUUqgoGdc4gkJZQ6pA49GolV3LR
xT2MZeMCgYEAsmzZnGxdh2RFb7PtIi2Pg39VHYxiLb8osRcjm9YheuwIhNMlIEsR
apsl77YGh/qx/iQv1smqWUjz6O8Wi+75JmutZPHulBrfHF8iXInDOoh+xrVgU99p
dvzl7O2Tl4M09fCRxfxltoBr4QouO73AkH/U8F6yxB1bQnC/HhmXPhA=
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"C:/Users/micha/demo/vagrant-kubeadm-kubernetes","disabled":false,"__vagrantfile":true}}}

View File

@ -0,0 +1 @@
C:/Users/micha/demo/vagrant-kubeadm-kubernetes

View File

@ -0,0 +1 @@
1.5:1067c79e-62d1-45ee-91e8-720aef4f1298

View File

@ -0,0 +1 @@
1645453183

View File

@ -0,0 +1 @@
{"name":"bento/ubuntu-21.10","version":"202112.19.0","provider":"virtualbox","directory":"boxes/bento-VAGRANTSLASH-ubuntu-21.10/202112.19.0/virtualbox"}

View File

@ -0,0 +1 @@
0

View File

@ -0,0 +1 @@
1067c79e-62d1-45ee-91e8-720aef4f1298

View File

@ -0,0 +1 @@
f98a4ae7e24c423a942d7935e71d2f36

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA16gqn6x0taCn9M/Z766wMD5+bcuIbP/eV750BuzE3nCIGcvV
rFbXF3LPsLIcJiq0l9MMFInJm5Ci+yuwgTTwEO9UeFtro58DeABciEimTRZPnVIl
zcKORIPjQBP4/ZCwNdwQsqUuNZiG5Z+1NslVBzJLO8ciSmnOi4+tsUZ9XRC3UWV1
Sp9ThqHNS6RlEG7BoTNZWBH8VgyACEZOPSizGkNu9Tl6HIMSJOscjJe6t446NCoS
/c9NP/lOCS/vE3kTVAPQEX4TZqhxtIGX37G8KVxK7TU6Oo2KfU8rRUZgQ9mHTyUM
e2wJTP61frUYu+Zcmop+zb1YY0VsC+9JspmdUwIDAQABAoIBAFdhAfQ0cg1tjN/6
n7kntKe3io5+G0be3X374xMzOAlQ2zRojKkJfpk3ocNcR1+HiijCEHD560Am+IKA
j0Gq62JRNo6VrCVdtpAWxWdK2Gb/lT6PHFYkcHR+Y8OA1DAZQexwwCtCFlkM9gtw
DIKoTNVfoXAVHWW9PTz6+EuN3hmof6/bx6UjVpztYQ5APeMX1HIfG95kq7Wz7Z0s
02a1PjBjupj0dCcOd+8cZ7KdPBFYEXbeiCVeKrCiwk/bGuLOoxbHVhPD+at6SX8F
1ZWACM7JVAJzc/vtFpiICQWfUyOS9BtjRVYmtYFfYfCXWsxedSNVavsmobE9yAIa
szooMhECgYEA9H5+9ug7nY6V1sUsmz2sehpTX06NqAsepRQudjqrnqmjnBVKhLKF
0RlA9O9/Hx2rgeM2zT0q4gEDfTtw6HiCgFvY38IOjDmLOv+mMNYoz31DgEths12h
zNe/IsBdOkblxVd2ZIssP3BT7g91NQsFyQLUOmB7bg14xMoKGxjjea0CgYEA4c5C
OGwd/c8hrJCssgRfcnKnJ4H2iEqMBxjvjys5X7zTUKQhqIFGeby0LF3JPR3J732g
Hvp7z8WRxjZVoEx5EnHeRHGo5VU4UGViowc+ec3+ClwIVaS0fo+63JlsQUgwA+0V
XIPUPWVOaH4uIxdOvH2Zeh7EMS0tr1ZidcxyUv8CgYAWIFiHKc8zXBMNY7y8s+En
D7jZ2DcTrSXx1Ji71GVxr3KCDp820R0xJjLtt7ruavX5hEGSY2W9HFBfhgCa2UUe
LrG61koQwKhsB3TX2JnK5VA1jRzjaabZ7fB7SaNmQcJLkLXDNaEkgJrn4Xg++6dj
YKEqQ08IT6nNTWeKuj7j5QKBgQDCHUEaJf+mWDD3myuKoW24Ak4mDXh087jqxQnz
xtG8tqPmWCLDK9b9AjbVSQ6dZoVZR2KmHuje1VYa0kzLz9HpBFByAE+UTq1pl66y
vaB8r5PrLfDQRxYPEtotmArTGA6G4YISlRWYbgV4mLhq3DeInGSa8eXw7IiwiY98
+vNw2wKBgHCvnrpCCF+ycO+CxjtOEi3XkfauWEvwLgfuHHUBKUYOzfcr3P6mKZg5
oZeMmbc8ZuzSs/34LNXKhZlsqgl0X22Yr3EfFTRzXYYKBj8Gj6g3kOVE9Ucw6KLN
9qwKZm66ew/m7+JAzmfIy+1ILaiVji73DdrslanKdcN0dfRzd4PI
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"C:/Users/micha/demo/vagrant-kubeadm-kubernetes","disabled":false,"__vagrantfile":true}}}

View File

@ -0,0 +1 @@
C:/Users/micha/demo/vagrant-kubeadm-kubernetes

View File

@ -0,0 +1 @@
1.5:32937b8e-60c8-425f-b356-238ff3983f9f

View File

@ -0,0 +1 @@
1645453327

View File

@ -0,0 +1 @@
{"name":"bento/ubuntu-21.10","version":"202112.19.0","provider":"virtualbox","directory":"boxes/bento-VAGRANTSLASH-ubuntu-21.10/202112.19.0/virtualbox"}

View File

@ -0,0 +1 @@
0

View File

@ -0,0 +1 @@
32937b8e-60c8-425f-b356-238ff3983f9f

View File

@ -0,0 +1 @@
60a1767f8086405f9b2e5f975062825b

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA4MLDC6hMHCqGGXmEy9qqoQpOgbQ3S4vdd8kZoz4Q0ktTKuIO
qU8pFRzPHhrTzbwLQFBoK4/gvUOaTEkYgCjNOg8omcaJ4PlJ+ELbTZ7xz0H8sZA8
MWOsrNwuWCgIRsgvvJJTGU0/gB2S+8LEdKHOUajVwUsai9kJDHSfa+kKpPIhDviq
WHFQGlRPZqkE8VExOYvJYhn3CABvxVkCgFflfIe8dN3o1vg0ITHJ8kjefhB9FQFW
ioaXGFl8EIyyANogYVfHPxpclKxciEn7tqXVP00aF90DTIxgHNt9IlOcO7lxyMUR
3hroyfKZvP4S5POvj53TLHbSri4jra+GkmQiDQIDAQABAoIBAA6yDUis11UcHqp5
vIoLoQ5oexuV6euhmHhliKyYuUbWr/hk0WqWh2we9xfTzzdrbRzmZPk8LgiR6/vC
57wxbsG2DgSH66nvArwduvMHSm4vtVLyyEy+ZKLkvo77BxeBrUVaF97WoylARcT6
RhgOIExMirVZsMGmDiZnVakbkpuYLc8ySpceFXd5VWkDImnc3tLvu9vemiHzhZJr
AsOcCoye+LK5iWn+c2A5th2cKgU1T16K6NbuR+cYMWk9uBZGZgO2SoBCOndy23H8
PV2ALe5R4hOalDuzjchG57Fn9yZXV4z0TgxvjWwh6u4BZ65pBiLyZIeo+FESa7bN
XW+WjgECgYEA/mNR4ALcJpMNOje+YNhK4jRkUNSuj2H0QYIhhrCm5few4WFWdReK
abq/irLlyxDO0bejArftPqnJe0ROoDz32TFAw0L4MPaBsciPoX6zAHjQicSCK7e0
wdOHG5yBrPXY1QWrziglWsGdiN7OoDcG9D5ZbjBay3ifPraQ9vtG040CgYEA4i9h
JHZmtO+Z9B/jckWiy4lkeyUj1RC1wrpt9Wlc3r1x3tu2/9+yxaPbb0MTCr3j5c1u
IvZRe/TrYVEp20eWvsmNWrMGG4GmV4kzfaltozfj9KpNSkWTXNFiPkFvNJ3ZkbEf
5VT1vhXBE/qps5JXR/R0R7UaxmKezIRZCQ0bqIECgYEAnE7QxzFaroUa0pPf8cfV
M2r33MbiP43ztLDOAuHWm2V3lPTnV+lQDilGemX0VrMMMcaBbjEvoJpZB9nv6fus
WxMtdQ1YTVWaWXAf+R5NxNN3Z7+MMGqfsZ1U3j1rXKhvRG1IpNL8KOjg8HHfSoil
SDxrXQ5vK6kBSFqLdobtfR0CgYAnTm6GRKEynlTVzNjc2echkd3JXLnuY/oCPh2v
wUCnYKqyPOJ/cuOBXylaG4Dqo/c/z0RthPrCHNzuy4kHl1hGDYaoFWZhT1WV7rzp
AJGSBLtzoEjQOGkUfzqgcQSfUzMlE2/kjbAq+WLVUwE8uJi8Y2n1sC5X/Xl1Nya1
4PZGgQKBgQCyHBVmBR+nDH0NUfWde0elHn0oLnfCLteCjS3Rq8WitPJiy59w/jJ1
EUf3+rI1wLzBymIlJ+QTY6xcpSImPm5toOa9j35yFP+1DlikGF2kD1rs/2IwnD0W
KYBpHBkWU0ZyGBN23LmFj9HEKmgU12dJVSm7cbb2d83T46YNkUVXWg==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"C:/Users/micha/demo/vagrant-kubeadm-kubernetes","disabled":false,"__vagrantfile":true}}}

View File

@ -0,0 +1 @@
C:/Users/micha/demo/vagrant-kubeadm-kubernetes

View File

@ -0,0 +1,9 @@
# This file loads the proper rgloader/loader.rb file that comes packaged
# with Vagrant so that encoded files can properly run with Vagrant.
if ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]
require File.expand_path(
"rgloader/loader", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"])
else
raise "Encoded files can't be read outside of the Vagrant installer."
end

33
Days/Kubernetes/Rancher/.gitignore vendored Normal file
View File

@ -0,0 +1,33 @@
# General
.vagrant/
configs/
# Log files (if you are creating logs in debug mode, uncomment this)
# *.log
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

40
Days/Kubernetes/Rancher/Vagrantfile vendored Normal file
View File

@ -0,0 +1,40 @@
NUM_WORKER_NODES=2
IP_NW="192.168.169."
IP_START=130
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: <<-SHELL
apt-get update -y
echo "$IP_NW$((IP_START)) master-node" >> /etc/hosts
echo "$IP_NW$((IP_START+1)) worker-node01" >> /etc/hosts
echo "$IP_NW$((IP_START+2)) worker-node02" >> /etc/hosts
SHELL
config.vm.box = "bento/ubuntu-21.10"
config.vm.box_check_update = true
config.vm.define "master" do |master|
master.vm.hostname = "master-node"
master.vm.network :public_network, bridge: "Intel(R) Ethernet Connection (7) I219-V", ip: IP_NW + "#{IP_START}"
master.vm.provider "virtualbox" do |vb|
vb.memory = 4048
vb.cpus = 2
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
master.vm.provision "shell", path: "scripts/common.sh"
end
(1..NUM_WORKER_NODES).each do |i|
config.vm.define "node0#{i}" do |node|
node.vm.hostname = "worker-node0#{i}"
node.vm.network :public_network, bridge: "Intel(R) Ethernet Connection (7) I219-V", ip: IP_NW + "#{IP_START}"
node.vm.provider "virtualbox" do |vb|
vb.memory = 4048
vb.cpus = 1
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
node.vm.provision "shell", path: "scripts/common.sh"
end
end
end

View File

@ -0,0 +1,91 @@
#! /bin/bash
# Variable Declaration
KUBERNETES_VERSION="1.23.3-00"
# disable swap
sudo swapoff -a
# keeps the swaf off during reboot
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
#Letting iptables see bridged traffic
lsmod | grep br_netfilter
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
# containerd
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
#Clean Install Docker Engine on Ubuntu
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update -y
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
#Add Dockers official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#set up the stable repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#Install Docker Engine
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
#Configure containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
#restart containerd
sudo systemctl restart containerd
echo "ContainerD Runtime Configured Successfully"
#Installing kubeadm, kubelet and kubectl
sudo apt-get update -y
sudo apt-get install -y apt-transport-https ca-certificates curl
#Google Cloud public signing key
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
#Add Kubernetes apt repository
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
#Update apt package index, install kubelet, kubeadm and kubectl, and pin their version:
sudo apt-get update -y
sudo apt-get install -y kubelet kubectl kubeadm
sudo apt-mark hold kubelet kubeadm kubectl

View File

@ -0,0 +1,83 @@
#! /bin/bash
MASTER_IP="10.0.0.10"
NODENAME=$(hostname -s)
POD_CIDR="192.168.0.0/16"
sudo kubeadm config images pull
echo "Preflight Check Passed: Downloaded All Required Images"
sudo kubeadm init --apiserver-advertise-address=$MASTER_IP --apiserver-cert-extra-sans=$MASTER_IP --pod-network-cidr=$POD_CIDR --node-name $NODENAME --ignore-preflight-errors Swap
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Save Configs to shared /Vagrant location
# For Vagrant re-runs, check if there is existing configs in the location and delete it for saving new configuration.
config_path="/vagrant/configs"
if [ -d $config_path ]; then
rm -f $config_path/*
else
mkdir -p /vagrant/configs
fi
cp -i /etc/kubernetes/admin.conf /vagrant/configs/config
touch /vagrant/configs/join.sh
chmod +x /vagrant/configs/join.sh
# Generete kubeadm join command
kubeadm token create --print-join-command > /vagrant/configs/join.sh
# Install Calico Network Plugin
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
# Install Metrics Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch deployment metrics-server -n kube-system --type 'json' -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--kubelet-insecure-tls"}]'
# Install Kubernetes Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
# Create Dashboard User
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
EOF
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}" >> /vagrant/configs/token
sudo -i -u vagrant bash << EOF
mkdir -p /home/vagrant/.kube
sudo cp -i /vagrant/configs/config /home/vagrant/.kube/
sudo chown 1000:1000 /home/vagrant/.kube/config
EOF
sudo systemctl restart systemd-resolved
sudo swapoff -a && sudo systemctl daemon-reload && sudo systemctl restart kubelet

View File

@ -0,0 +1,14 @@
#! /bin/bash
/bin/bash /vagrant/configs/join.sh -v
sudo -i -u vagrant bash << EOF
mkdir -p /home/vagrant/.kube
sudo cp -i /vagrant/configs/config /home/vagrant/.kube/
sudo chown 1000:1000 /home/vagrant/.kube/config
NODENAME=$(hostname -s)
kubectl label node $(hostname -s) node-role.kubernetes.io/worker=worker-new
EOF
sudo systemctl restart systemd-resolved
sudo swapoff -a && sudo systemctl daemon-reload && sudo systemctl restart kubelet

40
Days/Kubernetes/Vagrantfile vendored Normal file
View File

@ -0,0 +1,40 @@
NUM_WORKER_NODES=2
IP_NW="10.0.0."
IP_START=10
Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: <<-SHELL
apt-get update -y
echo "$IP_NW$((IP_START)) master-node" >> /etc/hosts
echo "$IP_NW$((IP_START+1)) worker-node01" >> /etc/hosts
echo "$IP_NW$((IP_START+2)) worker-node02" >> /etc/hosts
SHELL
config.vm.box = "bento/ubuntu-21.10"
config.vm.box_check_update = true
config.vm.define "master" do |master|
master.vm.hostname = "master-node"
master.vm.network "private_network", ip: IP_NW + "#{IP_START}"
master.vm.provider "virtualbox" do |vb|
vb.memory = 4048
vb.cpus = 2
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
master.vm.provision "shell", path: "scripts/common.sh"
master.vm.provision "shell", path: "scripts/master.sh"
end
(1..NUM_WORKER_NODES).each do |i|
config.vm.define "node0#{i}" do |node|
node.vm.hostname = "worker-node0#{i}"
node.vm.network "private_network", ip: IP_NW + "#{IP_START + i}"
node.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 1
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
end
node.vm.provision "shell", path: "scripts/common.sh"
node.vm.provision "shell", path: "scripts/node.sh"
end
end
end

View File

@ -0,0 +1,19 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeU1ESXlNVEUwTVRrd04xb1hEVE15TURJeE9URTBNVGt3TjFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3dHCm1pY3ZCMXVueDdoSnRBUlBTM0xTdmpTRmdhbi9wQStDbnZCZ0Q0SVFpaE9GZDZ6cXhYZzdhcTFEMk1XTUtTazMKa0gxbUtwa3Y0ZElsdEtFeWk2bm9hZUpkOUxVNmJOVUtjdkpnZ1NuSUZEWGx3MUM2bzNiRjF3bFZYUUtzWW1IUQpxRmh6UXJzWFdrL1ZsSm41bzlGdVpWaGs1aTlXVC92N0ZkM0pRZkNmUzA2Wld3L1BwMDhER09VUERITHdmMEk5CmE5alVRbW9BRG1LRVE0eDF3YTFGWU1KOVl5QTNsQWs2eUdHdktiM1piK25pMFpFYUtrVGxWN0l1OWdnc1crQkoKT2haUlg1M3dJSHBXbDBXRjV1ejRGejNPTHE3cllkdmFyYmFKQnF5YVF3TlRRbERiTVkwWDhqNUM4U2ptRVR1dQpxejFyK1VHTUhDV2pGRVg1SW1rQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZLQWJiWnVsY2UralJDYitHSlVWekw5U1hGSXlNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBTFFqY1IvT3VhY095WHBnQStLbgorbis0dkQyMkE3UVhJTlFlaWJ1NzNId1A0NXVNTmFKUnoyOTNvcnNpZXNMRi9QTWRzQWRVcEloTGtUWEhQOVVPCkdQYlFVSDQ4VnBMV2tlM2lsSGtHSGY4ZzMrSlkxWkdtaC9IVFcwekU0SFpJamRSK1NtK3FtakFNeCtJSlR4am0KdHYxWUczYVFvMFFIZnlRQ29jWC9KRGpGL0NZSURZTkE3K1R3QjI4WjlGRGF0VHFHd1pHcUNEWmo2Q0hJRm5heQp6eWZ0RVFhNHNJQXlFd3hMa1pGejBzRFJKTldJcVlwSmprMktGWVF1ZTRMRTRXTzA3NExsbHVtajJSU3dUWlMyCnlxdjdRTmJPSVk0QUl6RnVrdy9WbGlDckEwUFFQVGkyRnZFeUVKd3ROdHpUeGVkOVdyOU1jeXIxczQxSEJaL3IKRUQ4PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://10.0.0.10:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJSDdlYlA3dC9hMFl3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TWpBeU1qRXhOREU1TURkYUZ3MHlNekF5TWpFeE5ERTVNRGxhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTRkeklGK0U5eVpyWlRNMXAKMlY2c1p6amo3VGNFTktQYUgvV283eGt6eS9HQ0pIZUJxdVlwWjlpL2p4dHROckN6WWs5U004WmM0dmgrYnFLOApVb1dhQUt6ZmVUMWx6T0VBaitpRnpjYVhxZlBWdksyVkpwTkFFS0xOZC9STEFxWHRaRUNTdzE5TS8yUHFCZlM2CmxWZTRtanJubmRGUHZ1bWtSemM3SUx0Z0VvU2FRQXQ4MUYwTGZ6MTFVQjl5UG9FS0pqVUxMVmw3RG1kTUlwRlQKZ0ZvRFpXZnJFdHpnL3FWajV3bStVN3FCOHhVWHI5Y0l0Ung2b01LMWJqcFR6dG9jZlBSVFg0em9RZ254QUJjawp0Um5mdmtyYVY3a3ZaZTI3TnJhZG8zbTVwMHZVQlIrY0pNNUd2b1NqTTNlOENPMHhhc3JoQU9QbzcxZXZicGxICmxIREJxd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JTZ0cyMmJwWEh2bzBRbS9oaVZGY3kvVWx4UwpNakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBbGlzY1Fhckk4S2JxWFkzRms2Y0JEdzNpTmJ6M1lNL3I5TStJCld2bytIUTJRN2FkWWROdXBOU0l0eXZxdW56MzRlelk4TTNWcjZ1dnhoVWliOW84bHRjclQ4SStoNVZDQnI5VEkKYk9FS0xMSGd4dXZWKzZSK3RiL3NPYlZ0RVZwT3lFdWpDbjhwRU9HZ0ZLbTRnQ2lUbEN3dlVtcW45c2wvYmVXVApMSWdsSzFtREk0NElEbHd5bmlWVFFOenNZS1VkajdZN1hQZVhHb3NoTEJUODZGd2dOZjY0WlBvZDFRS1R3WEJGCkFuaHk2WXVPVTV3bGJxazdtNWRLeXVSeXJKREZKN3pDTldXOHRjWDBKTk10d2dpeGsxMWFMa2RQTHU1S1NCd1oKa3lLdzdmK3pqVHg4ejcxTlU1TStBTDJjd1U0WnJaSFVUYVpTamw0cW1JeXNSWmN3ekE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBNGR6SUYrRTl5WnJaVE0xcDJWNnNaempqN1RjRU5LUGFIL1dvN3hrenkvR0NKSGVCCnF1WXBaOWkvanh0dE5yQ3pZazlTTThaYzR2aCticUs4VW9XYUFLemZlVDFsek9FQWoraUZ6Y2FYcWZQVnZLMlYKSnBOQUVLTE5kL1JMQXFYdFpFQ1N3MTlNLzJQcUJmUzZsVmU0bWpybm5kRlB2dW1rUnpjN0lMdGdFb1NhUUF0OAoxRjBMZnoxMVVCOXlQb0VLSmpVTExWbDdEbWRNSXBGVGdGb0RaV2ZyRXR6Zy9xVmo1d20rVTdxQjh4VVhyOWNJCnRSeDZvTUsxYmpwVHp0b2NmUFJUWDR6b1FnbnhBQmNrdFJuZnZrcmFWN2t2WmUyN05yYWRvM201cDB2VUJSK2MKSk01R3ZvU2pNM2U4Q08weGFzcmhBT1BvNzFldmJwbEhsSERCcXdJREFRQUJBb0lCQVFDMnlXU3QzcjJRWU44bgpScjQ1Q21OZ0RpeDNsNlN4clVFanlEMzFjbUgyMVBiTDZHTnFHV2E5QWk3VTlBOUl5V3dEVGNwcTJFZm43ODd5ClhvVW1DN1Y4Z210QXhTMlR4eXdiU3NTdXFkK256UXZXN0d2ZWtpQ3cxZkNPK1llVEZ4R3Rwb3lmeklxVnpSaGgKeFpNU3RiRlNNQVd1Tk96aXhsY0t3Mm40cld1c3oxbmhYOHd6T0tvdjZjSlRqOWhPTWpnWkpJektPSitCRzk2QQp5UWZBa3VjK2FJWDREUld5ZkZWN1ZNOGM1YldCTFJ5ZkJaYVdscTFUMlJNVHdSNTZVMG5qSVpFRG5NTXZhR1dCCnFod1lFalA3ZmswN1FEVDZoTWUvYjIxWnZTRW5keUhSai93a29yQk53dmZ5L1B3L2lic250Q1ZTQmNnbDJaUGwKb3BtVjFoblJBb0dCQVA3WEJIY0c1OTZ2TTYvS2pHM3EwdDBGVndYKzB6NXpieCtPOEN5RVRZQzZDcERxNmJ0NwpOV1JVRmNzM25BVzZNTXhnTW5oSXBGS0ZUcktEUng1ZU1mT3FFMkIvbWtNdEN3d1g3bEhSSVB1SU1KWG5ZVHgyClpRWGJ6ejVYYVlSSlcyQ2kxeFVxL2xBYXE2eVZ6cFFwdWlCT2VibmZTUDBVaVJwMHZZOVpjTEgvQW9HQkFPTGoKL3FWQTRVSU1Kb2N1MjBFZFQwQ2ZMZnJxbUlnSGNzWmZWRTdrMUVLMzlESDhPV1ZkQzZrVXA4V25NNzErb0JmdgpUT0k1NnZKQittbDQydG9hREJUVVZGRUU3bW1zZjhEMUJReWJqMnJqWHdHUDFmbEdSWC94Qk42U2d3MGpYRmRZCjBIQ091UGxadU4zemxPZ1BYRlQvRnZkdXgzc1lMMWx5YXZzUEtsaFZBb0dCQUlWdzk5Q1AyQ2g5MjNYSWZRSXQKZlI3bzVlbW94dHFqdldOc0NJMTI5ZEpiR0o5THN2cE9DT1l4Tlh4RThUajZod1R0dGwvUHdlUElGQzVibVlqbwpVQVhFWUFNZXJodFE0Y0VDWXZPS3ExZXF0NjQzQzI2S25GbVdBUTRtM1lTOG1OR2dVem10V3A5OVo3bW1kQmFYClJ2UVZ3NTIxc3RWNnhGUUxIeHVKL1AzbkFvR0FPU3YrUktIZW9RZnl4V21YTWdjeXF6UHhJQ0x4SUlYUDlCQ2QKYSt2WldKNkYxL3FZYytSSVJlakFoZHVsKy8vbVUyR25XL0lBTTk5UVBEZUozaDltSC9HSTlZbHFraEkzZHVYRwp5ZkNBNlF3MktteVdIR1FLcXp5T1g0OUhtbzNvZk5JU1krcHl6ZEkvOVIybHpmdmc1a0lKQlh4U283L3FYbjJvClcyN3MycWtDZ1lFQTlXbHZaUUxIZ1RRcnRkU1daZktHY2ZZNHhqd2hYdGxRaWIwYXNEdFZXL2VjbURBQkhueWcKRERUVHlUWXdPVWFqYUZXdUNoTzRTNk9SYng5dmswRWxwZmNML2VaVUNCZnpXeUxmWGZEdkxjWWx5cEk5RUorSwp5SDNmb0s0V0Q1ajd0c0drUzZsWWdTZVdSRUtvcTZPaWE3cEtoQ0p2ZXNrUFFJUW1NWGgyMDA4PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

View File

@ -0,0 +1 @@
kubeadm join 10.0.0.10:6443 --token 0s6dei.3nv1q4xkkv8g98qc --discovery-token-ca-cert-hash sha256:5a7d70a8498795c680b2fe3d7840585ac74b0451769f4781bc4298de4c9b23f8

View File

@ -0,0 +1 @@
eyJhbGciOiJSUzI1NiIsImtpZCI6IlM1WGxrRnVIclJRaEVDbmg3cndZZFVTRTFpT0lfQzZsZ2NXbHZoOS1pbVUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWo1a3B2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJiZTZjZmUwZS0yYzFhLTRkNTYtYmVkMC1jYWRmYjYxNzA1N2YiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.LaBPEh6Qantd8tAc0X5DY9dDwUqZpxu38FHnp9TSJw-ghs3TsjrscFulUeEAtp2ng3ElLcU4SbNKPGJflF2dyW9Tmfn-Kt_6Jwq8HQ9GOCwAicEz0JVireHA7EWhATzuT56eO6MTe-2j5bpGnPQRJJtQ8AbtAN3nVK7RPjSzmc8Ppqx1z5i4oCGwiyRlGwqT-FkCtQLbQaQ4XmrASQoN4pJ_OBy5slztUhk32HdGP6pQx5c-nfei-of_4ij_fHrP0xEEfmVVvXqi9WKv1PLkQ3qTiSFDzv8M2sE4T6XmCGBbw7gyHzEGSpOAPZr00bX_YMCUvEF0lyP4YK696xWCBA

View File

@ -0,0 +1,41 @@
apiVersion: v1
kind: Namespace
metadata:
name: nginx
"labels": {
"name": "nginx"
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: nginx
spec:
selector:
app: nginx-deployment
ports:
- protocol: TCP
port: 80
targetPort: 80

View File

@ -0,0 +1,17 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pacman-ingress
namespace: pacman
spec:
rules:
- host: pacman.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pacman
port:
number: 80

View File

@ -0,0 +1,281 @@
apiVersion: v1
kind: Namespace
metadata:
name: pacman
"labels": {
"name": "pacman"
}
---
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: pacman
namespace: pacman
spec:
privileged: true
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
runAsUser:
rule: RunAsAny
fsGroup:
rule: RunAsAny
volumes:
- '*'
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pacman-clusterrole
rules:
- apiGroups:
- policy
resources:
- podsecuritypolicies
verbs:
- use
resourceNames:
- pacman
- apiGroups: [""]
resources: ["pods", "nodes"]
verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: pacman-clusterrole
namespace: pacman
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: pacman-clusterrole
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts
- kind: ServiceAccount
name: default
namespace: pacman
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: pacman-clusterrole
namespace: pacman
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: pacman-clusterrole
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts
- kind: ServiceAccount
name: default
namespace: pacman
---
apiVersion: v1
kind: Secret
metadata:
name: mongodb-users-secret
namespace: pacman
type: Opaque
data:
database-admin-name: Y2x5ZGU=
database-admin-password: Y2x5ZGU=
database-name: cGFjbWFu
database-password: cGlua3k=
database-user: Ymxpbmt5
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongo-storage
namespace: pacman
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
name: mongo
name: mongo
namespace: pacman
annotations:
source: "https://github.com/saintdle/pacman-tanzu"
spec:
replicas: 1
serviceName: mongo
selector:
matchLabels:
name: mongo
template:
metadata:
labels:
name: mongo
spec:
initContainers:
- args:
- |
mkdir -p /bitnami/mongodb
chown -R "1001:1001" "/bitnami/mongodb"
command:
- /bin/bash
- -ec
image: docker.io/bitnami/bitnami-shell:10-debian-10-r158
imagePullPolicy: Always
name: volume-permissions
resources: {}
securityContext:
runAsUser: 0
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /bitnami/mongodb
name: mongo-db
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
fsGroup: 1001
serviceAccountName: default
terminationGracePeriodSeconds: 30
volumes:
- name: mongo-db
persistentVolumeClaim:
claimName: mongo-storage
containers:
- image: bitnami/mongodb:4.4.8
name: mongo
env:
- name: MONGODB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: database-admin-password
name: mongodb-users-secret
- name: MONGODB_DATABASE
valueFrom:
secretKeyRef:
key: database-name
name: mongodb-users-secret
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
key: database-password
name: mongodb-users-secret
- name: MONGODB_USERNAME
valueFrom:
secretKeyRef:
key: database-user
name: mongodb-users-secret
readinessProbe:
exec:
command:
- /bin/sh
- -i
- -c
- mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USERNAME -p $MONGODB_PASSWORD
--eval="quit()"
ports:
- name: mongo
containerPort: 27017
volumeMounts:
- name: mongo-db
mountPath: /bitnami/mongodb/
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
name: pacman
name: pacman
namespace: pacman
annotations:
source: "https://github.com/saintdle/pacman-tanzu"
spec:
replicas: 1
selector:
matchLabels:
name: pacman
template:
metadata:
labels:
name: pacman
spec:
containers:
- image: quay.io/ifont/pacman-nodejs-app:latest
name: pacman
ports:
- containerPort: 8080
name: http-server
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 8080
readinessProbe:
httpGet:
path: /
port: 8080
env:
- name: MONGO_SERVICE_HOST
value: mongo
- name: MONGO_AUTH_USER
valueFrom:
secretKeyRef:
key: database-user
name: mongodb-users-secret
- name: MONGO_AUTH_PWD
valueFrom:
secretKeyRef:
key: database-password
name: mongodb-users-secret
- name: MONGO_DATABASE
value: pacman
- name: MY_MONGO_PORT
value: "27017"
- name: MONGO_USE_SSL
value: "false"
- name: MONGO_VALIDATE_SSL
value: "false"
- name: MY_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
---
apiVersion: v1
kind: Service
metadata:
labels:
name: mongo
name: mongo
namespace: pacman
spec:
type: ClusterIP
ports:
- port: 27017
targetPort: 27017
selector:
name: mongo
---
apiVersion: v1
kind: Service
metadata:
name: pacman
namespace: pacman
labels:
name: pacman
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
name: pacman

View File

@ -0,0 +1,91 @@
#! /bin/bash
# Variable Declaration
KUBERNETES_VERSION="1.23.3-00"
# disable swap
sudo swapoff -a
# keeps the swaf off during reboot
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
#Letting iptables see bridged traffic
lsmod | grep br_netfilter
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
# containerd
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Setup required sysctl params, these persist across reboots.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
# Apply sysctl params without reboot
sudo sysctl --system
#Clean Install Docker Engine on Ubuntu
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update -y
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
#Add Dockers official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
#set up the stable repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#Install Docker Engine
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
#Configure containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
#restart containerd
sudo systemctl restart containerd
echo "ContainerD Runtime Configured Successfully"
#Installing kubeadm, kubelet and kubectl
sudo apt-get update -y
sudo apt-get install -y apt-transport-https ca-certificates curl
#Google Cloud public signing key
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
#Add Kubernetes apt repository
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
#Update apt package index, install kubelet, kubeadm and kubectl, and pin their version:
sudo apt-get update -y
sudo apt-get install -y kubelet kubectl kubeadm
sudo apt-mark hold kubelet kubeadm kubectl

View File

@ -0,0 +1,83 @@
#! /bin/bash
MASTER_IP="10.0.0.10"
NODENAME=$(hostname -s)
POD_CIDR="192.168.0.0/16"
sudo kubeadm config images pull
echo "Preflight Check Passed: Downloaded All Required Images"
sudo kubeadm init --apiserver-advertise-address=$MASTER_IP --apiserver-cert-extra-sans=$MASTER_IP --pod-network-cidr=$POD_CIDR --node-name $NODENAME --ignore-preflight-errors Swap
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# Save Configs to shared /Vagrant location
# For Vagrant re-runs, check if there is existing configs in the location and delete it for saving new configuration.
config_path="/vagrant/configs"
if [ -d $config_path ]; then
rm -f $config_path/*
else
mkdir -p /vagrant/configs
fi
cp -i /etc/kubernetes/admin.conf /vagrant/configs/config
touch /vagrant/configs/join.sh
chmod +x /vagrant/configs/join.sh
# Generete kubeadm join command
kubeadm token create --print-join-command > /vagrant/configs/join.sh
# Install Calico Network Plugin
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
# Install Metrics Server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch deployment metrics-server -n kube-system --type 'json' -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--kubelet-insecure-tls"}]'
# Install Kubernetes Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
# Create Dashboard User
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
EOF
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}" >> /vagrant/configs/token
sudo -i -u vagrant bash << EOF
mkdir -p /home/vagrant/.kube
sudo cp -i /vagrant/configs/config /home/vagrant/.kube/
sudo chown 1000:1000 /home/vagrant/.kube/config
EOF
sudo systemctl restart systemd-resolved
sudo swapoff -a && sudo systemctl daemon-reload && sudo systemctl restart kubelet

View File

@ -0,0 +1,14 @@
#! /bin/bash
/bin/bash /vagrant/configs/join.sh -v
sudo -i -u vagrant bash << EOF
mkdir -p /home/vagrant/.kube
sudo cp -i /vagrant/configs/config /home/vagrant/.kube/
sudo chown 1000:1000 /home/vagrant/.kube/config
NODENAME=$(hostname -s)
kubectl label node $(hostname -s) node-role.kubernetes.io/worker=worker-new
EOF
sudo systemctl restart systemd-resolved
sudo swapoff -a && sudo systemctl daemon-reload && sudo systemctl restart kubelet

View File

@ -0,0 +1,86 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
name: mongo
name: mongo
annotations:
source: "https://github.com/saintdle/pacman-tanzu"
spec:
replicas: 1
serviceName: mongo
selector:
matchLabels:
name: mongo
template:
metadata:
labels:
name: mongo
spec:
initContainers:
- args:
- |
mkdir -p /bitnami/mongodb
chown -R "1001:1001" "/bitnami/mongodb"
command:
- /bin/bash
- -ec
image: docker.io/bitnami/bitnami-shell:10-debian-10-r158
imagePullPolicy: Always
name: volume-permissions
resources: {}
securityContext:
runAsUser: 0
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /bitnami/mongodb
name: mongo-db
restartPolicy: Always
schedulerName: default-scheduler
securityContext:
fsGroup: 1001
serviceAccountName: default
terminationGracePeriodSeconds: 30
volumes:
- name: mongo-db
persistentVolumeClaim:
claimName: mongo-storage
containers:
- image: bitnami/mongodb:4.4.8
name: mongo
env:
- name: MONGODB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
key: database-admin-password
name: mongodb-users-secret
- name: MONGODB_DATABASE
valueFrom:
secretKeyRef:
key: database-name
name: mongodb-users-secret
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
key: database-password
name: mongodb-users-secret
- name: MONGODB_USERNAME
valueFrom:
secretKeyRef:
key: database-user
name: mongodb-users-secret
readinessProbe:
exec:
command:
- /bin/sh
- -i
- -c
- mongo 127.0.0.1:27017/$MONGODB_DATABASE -u $MONGODB_USERNAME -p $MONGODB_PASSWORD
--eval="quit()"
ports:
- name: mongo
containerPort: 27017
volumeMounts:
- name: mongo-db
mountPath: /bitnami/mongodb/