Kubernetes'de makinalar, bileşenler ve pod'lar arasındaki iletişimde TLS kullanılmaktadır. Bu nedenle bol miktarda sertifika oluşturacağız.
Kaynak: Kubernetes Architecture by Lucas Käldström.
PKI Altyapısını sağlamak ve TLS sertifikaları oluşturmak için cfssl ve cfssljson komut satırı yardımcı programları kullanılacaktır. Tabii ki cfssl'den başka araçlar da kullanılabilir. örneğin
Farklı araçlarla sertifika olurmak için şu sayfayı ziyaret etmenizi öneririm.
Son olarak eğer TLS hakkında yetersiz olduğunu düşünüyorsanız Gökhan Şengün'ün "Pratik Kriptogafi ve Güvenlik Konseptleri" başlıklı sunumunu izlemenizi kesinlikle tavsiye ederim.
Artık kuruluma başlayabiliriz.
Linux ve Mac için
mkdir ~/kubernetes && cd ~/kubernetes
wget -q --show-progress --https-only --timestamping \
https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/linux/cfssl \
https://storage.googleapis.com/kubernetes-the-hard-way/cfssl/1.4.1/linux/cfssljson
chmod +x cfssl cfssljson
sudo mv cfssl cfssljson /usr/local/bin/
Windows İçin
Resmi sayfasındaki release'lerden 1.2 versiyonuna ait cfssl_windows-amd64.exe ve cfssljson_windows-amd64.exe dosyalarını indirmelisiniz. Tavsiyem userprofile dizininizde kubenetes adında bir klasör oluşturup oraya indirmeniz.
Diğer bir tavsiyem de Windows'u sadece kubectl için kullanmanız gerekiyor kalan bütün kurulum ve konfigürasyon işleri için Lab ortamında oluşturduğumuz load balancer makinalarından birini kullanmaları olacak. Sertifika, config dosyalarını oluşturma ve dağıtma işleri dışında zaten host makinalarında bir iş yapmayacağız. İşlemlerimizin çoğu Linux ortamında olacağı için Windows-Linux iletişiminde yaşanacak problemlerle uğraşmamış olursunuz.
Kurulumu doğrulamak için alttaki komutla versiyon kontrolü yapıyoruz.
cfssl version
Version: 1.2.0 # version siz kurduğunuzda değişmiş olabilir
Revision: dev
Runtime: go1.15.4
Ubuntu ve Centos için alttaki komutlarla yapabilirsiniz.
wget https://storage.googleapis.com/kubernetes-release/release/v1.21.0/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
Eğer paket yöneticisi ile kurmak isterseniz
Ubuntu için kurulum
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
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
sudo apt-get update
sudo apt-get install -y kubectl=1.21
Centos için kurulum
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl-1.21
Mac için kurulum
brew install [email protected]
kubectl version --client
- Mac için diğer kurulum teknikleri için Kubernetes resmi sayfasını ziyaret edebilirsiniz.
Windows için kurulum
Kendi belirlediğiniz bir klasörde aşağıdaki script'le yada tarayıcı ile download edebilirsiniz.
curl -LO https://dl.k8s.io/release/v1.21.0/bin/windows/amd64/kubectl.exe
kubectl'i indirdiğiniz dizinde iken aşağıdaki komutu çalıştırarak test edebilirsiniz.
kubectl version --client
Eğer bütün dizinlerden kubectl i çalıştırmak istiyorsanız PATH' e eklemek gerekiyor. Alttaki komutla bunu da yapabilirsiniz. CMD'yi administrator olarak açıp alttaki komutu çalıştırınız.
setx PATH "C:\kubectl_in_oldugu_dizin;%PATH%"
CMD yi kapatıp tekrar açtıktan sonra alttaki komutla test ediniz.
C:\>echo %PATH%
Bu işlemi GUI olarak da yapmak mümkün Google'da komu ile ilgili birçok kaynak bulabilceğiniz için buraya resimleri ekleyerek yazıyı uzatmak istemedim.
- Windows için diğer kurulum teknikleri için Kubernetes resmi sayfasını ziyaret edebilirsiniz.
Kurulumu doğrulama için versiyon kontrolü yapıyoruz.
UYARI: İleride yapacağımız işlemlerde sorun yaşamamak için versiyonun 1.21 olduğundan emin olunuz.
kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port?
- Giriş ve Lab Ortamının Kurulması
- İstemci Araçlarının Kurulumu
- Harici Yük Dengeleyici Kurulumu
- Certificate Authority ve TLS Sertifikalarının Oluşturulması
- Kubeconfig Dosyalarının Oluşturulması
- Data Encryption Config ve Key Oluşturulması
- Etcd Cluster Kurulumu
- Control Plane'nin Kurulumu ve Konfigürasyonu
- Worker Node'ların Kurulumu ve Konfigürasyonu
- Uzak Bağlantı için Kubectl Konfigürasyonu
- Pod Network Route'larının Ayarlanması
- DNS'in Kurulumu ve Konfigürasyonu
- Smoke Test