K3S ilə minimal kubernetes qurulması ( Nginx + Cert-Manager + ArgoCD)

K3S ilə minimal kubernetes qurulması ( Nginx + Cert-Manager + ArgoCD)

K3S və Nginx-Ingress Reverse Proxy quraşdırılması

logo

Ön tələblər:

  • Fərdi Domain
  • Linux Server ( Ubuntu Server 24.04)

1.K3S yüklə.

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh -s -

# to check

k3s --version

Burada, yuxarıdakı koddan da göründüyü kimi, quraşdırmanı Traefik olmadan etdik. Əvəzində Nginx istifadə edəcəyik, çünki o, Traefik-dən daha yaxşı performansa malikdir.

2.Cloudflare-ə Wildcard və root domain recordu əlavə et.

A  - @ - <your-ip>
A  -  *  - <your-ip>

Nümunə Ekran Görüntüsü:

3.APT üzərindən Helm template manager yüklə.

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

4.K3S konfiqurasiyasını path-ə əlavə et.

echo 'export KUBECONFIG=/etc/rancher/k3s/k3s.yaml' >> ~/.bashrc 
source ~/.bashrc

5.Nginx-Ingress-i reverse proxy olaraq yüklə.

logo

ingress-nginx.yaml -> /var/lib/rancher/k3s/server/manifests/ (avtomatik tətbiq üçün)

apiVersion: v1
kind: Namespace
metadata:
  name: ingress-nginx
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: ingress-nginx
  namespace: kube-system
spec:
  chart: ingress-nginx
  repo: https://kubernetes.github.io/ingress-nginx
  targetNamespace: ingress-nginx
  version: v4.12.1
  set:
  valuesContent: |-
    fullnameOverride: ingress-nginx
    controller:
      kind: DaemonSet
      hostNetwork: true
      hostPort:
        enabled: true
      service:
        enabled: false
      publishService:
        enabled: false
      metrics:
        enabled: true
        serviceMonitor:
          enabled: false
      config:
        use-forwarded-headers: "true"

Yoxlamaq üçün:

kubectl get pods -n ingress-nginx

K3S və Nginx quraşdırılmasıyla birinci hissə tamamlandı. Beləliklə növbəti hissəyə — sertifikatların əldə edilməsinə keçə bilərik.

Wildcard sertifikatı əldə etmək üçün Cert-manager quraşdırılması

logo

Kubernetes secretlərini daha anlaşılan olması üçün secret-domain-com kimi adlandırıram. Siz bunları öz domaininizə uyğun olaraq dəyişdir.

1.Cert-manager yüklə.

## CRD-ni tətbiq et
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.1/cert-manager.crds.yaml

## Namespace yarat
kubectl create namespace cert-manager

## Repo-nu əlavə et
helm repo add jetstack https://charts.jetstack.io --force-update

## Repo-nu yenilə
helm repo update

## Cert-Manager- yüklə
helm install cert-manager --namespace cert-manager --version v1.17.1 jetstack/cert-manager

Yoxlamaq üçün:

kubectl get pods -n cert-manager

2.Cloudflare API token-i ilə bir secret yarat:

Cloudflare-də Zone.DNS:Edit icazəsi olan bir API token yarat, sonra həmin açarı cloudflare-secret.yaml faylına əlavə edin və K3S-ə tətbiq et.

cloudflare-secret.yaml:

apiVersion: v1
kind: Secret
metadata:
  name: cloudflare-api-token-site-com   # edit
  namespace: cert-manager
type: Opaque
stringData:
  api-token: <token>  # edit

Tətbiq et:

kubectl apply -f cloudflare-secret.yaml

Yoxlamaq üçün:

kubectl get secrets -n cert-manager

3.Let's Encrypt üçün bir ClusterIssuer yarat .

cluster-issuer.yaml

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod-site-com  # edit
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: [email protected]  # edit
    privateKeySecretRef:
      name: letsencrypt-prod-key-site-com  # edit
    solvers:
    - dns01:
        cloudflare:
          email: [email protected]  # edit
          apiTokenSecretRef:
            name: cloudflare-api-token-site-com  # edit
            key: api-token

Tətbiq et:

kubectl apply -f cluster-issuer.yaml

Yoxlamaq üçün:

kubectl get clusterissuer -n cert-manager

4.Hər iki domain üçün Wildcard sertifikatları al

certificates.yaml

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: wildcard-site-com  # edit
  namespace: kube-system
spec:
  secretName: wildcard-site-com-tls  # edit
  issuerRef:
    name: letsencrypt-prod-site-com  # edit
    kind: ClusterIssuer
  dnsNames:
  - "*.site.com"  # edit
  - "site.com"  # edit

Tətbiq et:

kubectl apply -f certificates.yaml

Yoxlamaq üçün:

kubectl describe certificate -n kube-system
kubectl get secret wildcard-site-com-tls -n kube-system

Aşağıdakı şəkildən də göründüyü kimi, sertifikatımız uğurla əldə edildi:

Argocd quraşdırılması

logo

Argocd-nin yüklənməsi hissəsi ilə davam edə bilərik:

1.Namespace yaradın və argocd yüklə:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

Yoxlamaq üçün:

kubectl get pods -n argocd

2.Tls secret-i köçür:

kubectl get secret wildcard-site-com-tls --namespace=kube-system -o yaml \      # edit
  | sed 's/namespace: kube-system/namespace: argocd/' \
  | kubectl apply -f -

3.İngress-i tətbiq et:

argocd-ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: argocd-server-ingress
  namespace: argocd
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  ingressClassName: nginx
  rules:
  - host: argocd.site.com  # edit
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: argocd-server
            port:
              name: https
  tls:
  - hosts:
    - argocd.site.com  # edit
    secretName: wildcard-site-com-tls  # edit

Tətbiq et:

kubectl apply -f argocd-ingress.yaml

Yoxlamaq üçün:

kubectl get ingress -n argocd

Artıq aşağıda göründüyü kimi argocd.site.com ünvanına daxil ola bilirik:

4.Default admin parolunu götür:

kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d

5.Daxil olun və defaul parolu dəyişdir

6.Default parolu sil:

kubectl delete secret argocd-initial-admin-secret -n argocd

ArgoCD+Wildcard Sertifikatı ilə əldə etdiyimiz son nəticə aşağıdakı kimi olmalıdır:


Ümumi sistem məlumatlarını əldə etmək üçün komandalar:

kubectl get namespaces
kubectl get pods -A -o wide
kubectl get deployments -A -o wide
kubectl get services -A -o wide
kubectl get ingress -A -o wide

Read more

İT Layihə İdarəçiliyində Xidmətkar Liderlik: Empatiya və Avtoritetin Tarazlanması

İT Layihə İdarəçiliyində Xidmətkar Liderlik: Empatiya və Avtoritetin Tarazlanması

Həqiqi liderlik sadəcə tapşırıqları bölüşdürmək deyil — bu, etimad, səlahiyyətləndirmə və məsuliyyət mədəniyyətinin formalaşdırılmasını tələb edir. Servant Leadership (xidmətkar liderlik) yanaşması komanda üzvlərinin ehtiyaclarını önə çəkir və bu, daha yaxşı əməkdaşlığa, yüksək əhval-ruhiyyəyə və uğurlu layihə nəticələrinə gətirib çıxarır. Xidmətkar Liderliyin Əsas Prinsipləri 1. Komandanın Gücləndirilməsi Xidmətkar lider komanda üzvlərinin uğur

By Ulvi Hasanli
Optimizing IT Project Performance Through Reporting and Visualization

Optimizing IT Project Performance Through Reporting and Visualization

Effective reporting and visualization are crucial for IT project management. They provide stakeholders with clear insights into project progress, risks, and performance, enabling data-driven decision-making and strategic planning. Importance of Reporting and Visualization Without structured reporting, project managers may struggle to communicate progress, identify bottlenecks, or justify budget allocations. Visualization

By Ulvi Hasanli