sudo snap install helm
helm repo add travelaps https://travelaps.github.io/helm-charts/
helm show values travelaps/<chart-adı> > values.yaml
helm install <isim> travelaps/<chart-adı> --values values.yaml --timeout 30m
Erişime açık olması gereken domainler: (sadece kurulum sırasında değil program çalışırken de erişebilmeli, aksi taktirde kapanan programı geri açamayabilir)
Gereksinimler:
# Öncelikle microk8s, kubectl ve helm kurulu olduğundan emin ol:
sudo snap install microk8s --classic --channel=1.27/stable && \
sudo snap install kubectl --classic --channel=1.27/stable && \
sudo snap install helm --classic
# Kullanıcıyı microk8s grubuna ekle
sudo mkdir ~/.kube && \
sudo usermod -a -G microk8s user && \
sudo chown -R user ~/.kube && \
newgrp microk8s
# Makinanın dns adreslerini bul
cat /etc/resolv.conf | grep nameserver | grep -v 127.0.0.53; \
cat /run/systemd/resolve/resolv.conf | grep nameserver | grep -v 127.0.0.53
# microk8s add-on'ları aktive et. dns olması şart, ingress ve dashboard opsiyonel
# dns adresi olarak üstte bulunan adresleri virgülle ayırarak yaz
microk8s enable rbac dns:1.1.1.1,8.8.8.8 dashboard ingress
# Oluşan kubernetes erişim config dosyasını kubectl'nin görebileceği yere dump et
microk8s config > ~/.kube/config
chmod 600 ~/.kube/config
# Kubernetes çalıştığını doğrula
kubectl cluster-info
# (Opsiyonel:Longhorn)
# Çoklu makina kurulumu yapılacaksa longhorn kur
helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn \
--namespace longhorn-system \
--create-namespace \
--set persistence.reclaimPolicy="Retain" \
--set csi.kubeletRootDir="/var/snap/microk8s/common/var/lib/kubelet"
# Longhorn kurulumunun tamamlanmasını bekle
# watch -n1 "kubectl -n longhorn-system get pod"
# (Opsiyonel:CertManager)
# Otomatik SSL alımı/yenilemesi için CertManager kur
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set installCRDs=true
# CertManager kurulumunun tamamlanmasını bekle
# watch -n1 "kubectl -n cert-manager get pod"
Diğer node'ları ekle
microk8s add-node
Elektraweb Sıfır Kurulum:
# Travelaps kaynağını tanımla
helm repo add travelaps https://travelaps.github.io/helm-charts/
# Eğer daha önceden tanımlandıysa, güncellenmesi için repo update çalıştır.
# İlk defa helm repo add ile eklendiyse buna gerek yok.
helm repo update
# Parametre dosya şablonunu values.yaml isimli dosyaya indir
helm show values travelaps/elektraweb > values.yaml
# Parametreleri nano, vim vs. bir editör ile ayarla
nano values.yaml
# Bu parametreler ile kurulumu başlat
helm install elektraweb travelaps/elektraweb --values values.yaml --timeout 120m
# (opsiyonel) Kurulumu gözlemlemek için:
watch -n1 "kubectl get pods -A"
Güncelleme / Parametre değiştirme (parametre set ederek):
# Helm repolarını güncelle
helm repo update
# Upgrade komutunda --reuse-values diyerek
# eski parametrelerin üzerine değiştirilecek her bir parametre için
# --set ya da --set-string kullan.
# --set param=1000 değeri direk 1000 olarak basar (bu durumda number olur)
# --set-string=1000 değeri tırnak içinde "1000" olarak basar (bu durumda string olur)
helm upgrade \
--set parametreAdi=parametreDegeri \
--set-string sql.saPassword=123456789 \
--set sql.memoryLimit=8000 \
--reuse-values
elektraweb travelaps/elektraweb
Güncelleme / Parametre değiştirme (values.yaml export ederek):
# Helm repolarını güncelle
helm repo update
# Mevcut kurulumda kullanılan parametreleri dosyaya çıkar:
helm get values elektraweb > values.yaml
# Parametreleri değiştir
nano values.yaml
# Değişiklikleri uygula
helm upgrade elektraweb travelaps/elektraweb --values values.yaml --timeout 120m
Silme:
helm uninstall elektraweb
# Domainler dışarıya açık olacaksa, http01 solver'ı ile otomatik SSL alınabilir.
# http01 yönteminde doğrulama, lets encrypt sunucularından domaine 80 portundan istek atılarak yapılır.
# Eğer domainler dışarıya açık olmayacaksa, o zaman dns solver'ları kullanılmalı.
# Staging
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: ssl@elektraweb.com
privateKeySecretRef:
name: letsencrypt-staging
solvers:
- selector: {}
http01:
ingress:
class: public
---
# Prod
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: ssl@elektraweb.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- selector: {}
http01:
ingress:
class: public
https://longhorn.io/kb/troubleshooting-volume-with-multipath/