fix .git file in Kubernetes
This commit is contained in:
parent
b63dba3b4a
commit
348aaa5fe8
@ -0,0 +1 @@
|
||||
1.5:e4b0d545-5fd5-49c6-88be-44139c9ad3d8
|
@ -0,0 +1 @@
|
||||
1645452510
|
@ -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"}
|
@ -0,0 +1 @@
|
||||
0
|
1
Days/Kubernetes/.vagrant/machines/master/virtualbox/id
Normal file
1
Days/Kubernetes/.vagrant/machines/master/virtualbox/id
Normal file
@ -0,0 +1 @@
|
||||
e4b0d545-5fd5-49c6-88be-44139c9ad3d8
|
@ -0,0 +1 @@
|
||||
758da8fa9ae14606a03e2b90a86a0477
|
@ -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-----
|
@ -0,0 +1 @@
|
||||
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"C:/Users/micha/demo/vagrant-kubeadm-kubernetes","disabled":false,"__vagrantfile":true}}}
|
@ -0,0 +1 @@
|
||||
C:/Users/micha/demo/vagrant-kubeadm-kubernetes
|
@ -0,0 +1 @@
|
||||
1.5:1067c79e-62d1-45ee-91e8-720aef4f1298
|
@ -0,0 +1 @@
|
||||
1645453183
|
@ -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"}
|
@ -0,0 +1 @@
|
||||
0
|
1
Days/Kubernetes/.vagrant/machines/node01/virtualbox/id
Normal file
1
Days/Kubernetes/.vagrant/machines/node01/virtualbox/id
Normal file
@ -0,0 +1 @@
|
||||
1067c79e-62d1-45ee-91e8-720aef4f1298
|
@ -0,0 +1 @@
|
||||
f98a4ae7e24c423a942d7935e71d2f36
|
@ -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-----
|
@ -0,0 +1 @@
|
||||
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"C:/Users/micha/demo/vagrant-kubeadm-kubernetes","disabled":false,"__vagrantfile":true}}}
|
@ -0,0 +1 @@
|
||||
C:/Users/micha/demo/vagrant-kubeadm-kubernetes
|
@ -0,0 +1 @@
|
||||
1.5:32937b8e-60c8-425f-b356-238ff3983f9f
|
@ -0,0 +1 @@
|
||||
1645453327
|
@ -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"}
|
@ -0,0 +1 @@
|
||||
0
|
1
Days/Kubernetes/.vagrant/machines/node02/virtualbox/id
Normal file
1
Days/Kubernetes/.vagrant/machines/node02/virtualbox/id
Normal file
@ -0,0 +1 @@
|
||||
32937b8e-60c8-425f-b356-238ff3983f9f
|
@ -0,0 +1 @@
|
||||
60a1767f8086405f9b2e5f975062825b
|
@ -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-----
|
@ -0,0 +1 @@
|
||||
{"virtualbox":{"/vagrant":{"guestpath":"/vagrant","hostpath":"C:/Users/micha/demo/vagrant-kubeadm-kubernetes","disabled":false,"__vagrantfile":true}}}
|
@ -0,0 +1 @@
|
||||
C:/Users/micha/demo/vagrant-kubeadm-kubernetes
|
9
Days/Kubernetes/.vagrant/rgloader/loader.rb
Normal file
9
Days/Kubernetes/.vagrant/rgloader/loader.rb
Normal 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
33
Days/Kubernetes/Rancher/.gitignore
vendored
Normal 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
40
Days/Kubernetes/Rancher/Vagrantfile
vendored
Normal 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
|
91
Days/Kubernetes/Rancher/scripts/common.sh
Normal file
91
Days/Kubernetes/Rancher/scripts/common.sh
Normal 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 Docker’s 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
|
||||
|
83
Days/Kubernetes/Rancher/scripts/master.sh
Normal file
83
Days/Kubernetes/Rancher/scripts/master.sh
Normal 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
|
||||
|
||||
|
||||
|
14
Days/Kubernetes/Rancher/scripts/node.sh
Normal file
14
Days/Kubernetes/Rancher/scripts/node.sh
Normal 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
40
Days/Kubernetes/Vagrantfile
vendored
Normal 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
|
19
Days/Kubernetes/configs/config
Normal file
19
Days/Kubernetes/configs/config
Normal 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=
|
1
Days/Kubernetes/configs/join.sh
Normal file
1
Days/Kubernetes/configs/join.sh
Normal file
@ -0,0 +1 @@
|
||||
kubeadm join 10.0.0.10:6443 --token 0s6dei.3nv1q4xkkv8g98qc --discovery-token-ca-cert-hash sha256:5a7d70a8498795c680b2fe3d7840585ac74b0451769f4781bc4298de4c9b23f8
|
1
Days/Kubernetes/configs/token
Normal file
1
Days/Kubernetes/configs/token
Normal file
@ -0,0 +1 @@
|
||||
eyJhbGciOiJSUzI1NiIsImtpZCI6IlM1WGxrRnVIclJRaEVDbmg3cndZZFVTRTFpT0lfQzZsZ2NXbHZoOS1pbVUifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWo1a3B2Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJiZTZjZmUwZS0yYzFhLTRkNTYtYmVkMC1jYWRmYjYxNzA1N2YiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.LaBPEh6Qantd8tAc0X5DY9dDwUqZpxu38FHnp9TSJw-ghs3TsjrscFulUeEAtp2ng3ElLcU4SbNKPGJflF2dyW9Tmfn-Kt_6Jwq8HQ9GOCwAicEz0JVireHA7EWhATzuT56eO6MTe-2j5bpGnPQRJJtQ8AbtAN3nVK7RPjSzmc8Ppqx1z5i4oCGwiyRlGwqT-FkCtQLbQaQ4XmrASQoN4pJ_OBy5slztUhk32HdGP6pQx5c-nfei-of_4ij_fHrP0xEEfmVVvXqi9WKv1PLkQ3qTiSFDzv8M2sE4T6XmCGBbw7gyHzEGSpOAPZr00bX_YMCUvEF0lyP4YK696xWCBA
|
41
Days/Kubernetes/nginx-stateless-demo.yaml
Normal file
41
Days/Kubernetes/nginx-stateless-demo.yaml
Normal 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
|
17
Days/Kubernetes/pacman-ingress.yaml
Normal file
17
Days/Kubernetes/pacman-ingress.yaml
Normal 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
|
281
Days/Kubernetes/pacman-stateful-demo.yaml
Normal file
281
Days/Kubernetes/pacman-stateful-demo.yaml
Normal 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
|
91
Days/Kubernetes/scripts/common.sh
Normal file
91
Days/Kubernetes/scripts/common.sh
Normal 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 Docker’s 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
|
||||
|
83
Days/Kubernetes/scripts/master.sh
Normal file
83
Days/Kubernetes/scripts/master.sh
Normal 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
|
||||
|
||||
|
||||
|
14
Days/Kubernetes/scripts/node.sh
Normal file
14
Days/Kubernetes/scripts/node.sh
Normal 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
|
86
Days/Kubernetes/statefulset.yaml
Normal file
86
Days/Kubernetes/statefulset.yaml
Normal 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/
|
Loading…
Reference in New Issue
Block a user