Sobes.tech
Middle

როგორ იქმნება ნეიმსფეისები და იწყება დეპლოიმენტები API-სერვერის ან სხვა ინსტრუმენტების გამოყენებით?

sobes.tech AI

პასუხი AI-სგან

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace # შექმნილი ნეიმსფეისის სახელი

ნეიმსფეისების შექმნა API-სერვერზე ხორციელდება HTTP POST მოთხოვნის გზით, YAML ან JSON მანიაფესტით ნეიმსფეისს, რომელიც იგზავნება მისამართზე /api/v1/namespaces.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  namespace: my-namespace # ნეიმსფეისი, სადაც განთავსდება დიპლოიმენტი
spec:
  replicas: 3 # სასურველი პოდების რაოდენობა
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app-container
        image: my-image:latest # კონტეინერის იმიჯი

დეპლოიმენტების გაშვება API-სერვერზე იგივე მეთოდით ხდება — YAML ან JSON მანიაფესტით, რომელიც იგზავნება მისამართზე /apis/apps/v1/namespaces/{namespace-name}/deployments.

სხვადასხვა ინსტრუმენტი გამოიყენება API-სერვერთან ურთიერთქმედებისთვის:

  • kubectl: Kubernetes კლასტერის მართვის კომანდური კლაიენტი.
    # ნეიმსფეისის შექმნა
    kubectl create namespace my-namespace
    
    # დიპლოიმენტის შექმნა my-deployment.yaml ფაილიდან ნეიმსფეისში my-namespace
    kubectl create -f my-deployment.yaml -n my-namespace
    
  • Kubernetes Client Libraries: სხვადასხვა პროგრამირების ენებისთვის (Python, Java, Go და სხვა), რომლებიც საშუალებას აძლევენ პროგრამულად ურთიერთქმედებას API-სერვერთან.
    # Python-კლიენტის გამოყენების მაგალითი
    from kubernetes import client, config
    
    config.load_kube_config()
    v1 = client.CoreV1Api()
    
    namespace_manifest = {
        "apiVersion": "v1",
        "kind": "Namespace",
        "metadata": {
            "name": "my-namespace-python"
        }
    }
    
    v1.create_namespace(body=namespace_manifest)
    
    apps_v1 = client.AppsV1Api()
    
    deployment_manifest = {
        "apiVersion": "apps/v1",
        "kind": "Deployment",
        "metadata": {
            "name": "my-app-python",
            "namespace": "my-namespace-python"
        },
        "spec": {
            "replicas": 2,
            "selector": {
                "matchLabels": {
                    "app": "my-app-python"
                }
            },
            "template": {
                "metadata": {
                    "labels": {
                        "app": "my-app-python"
                    }
                },
                "spec": {
                    "containers": [
                        {
                            "name": "app-container",
                            "image": "nginx"
                        }
                    ]
                }
            }
        }
    }
    
    apps_v1.create_namespaced_deployment(namespace="my-namespace-python", body=deployment_manifest)
    
  • Helm: Kubernetes-ის პაკეტური მენეჯერი, რომელიც საშუალებას აძლევს განთავსების მართვას Charts-ის გამოყენებით.
    # Charts-ის ინსტალაცია, რომელიც შეიძლება მოიცავდეს ნეიმსფეისისა და დიპლოიმენტის შექმნას
    helm install my-release my-chart --create-namespace --namespace my-namespace
    
  • Kubernetes ოპერატორები: სპეციალიზებული კონტროლერები, რომლებიც ამდიდრიან Kubernetes API-ს ფუნქციონალობას და მართავენ რთულ აპლიკაციებსა და სერვისებს. მათ შეუძლიათ ავტომატურად შექმნან ნეიმსფეისები და განთავსდნენ კომპონენტები.
  • CI/CD პაიპლაინები: უწყვეტი ინტეგრაციის და მიწოდების სისტემები (Jenkins, GitLab CI, GitHub Actions და სხვა), რომლებიც ხშირად იყენებენ kubectl-ს ან კლიენტურ ბიბლიოთეკებს ნეიმსფეისების და აპლიკაციების ავტომატური შექმნისთვის პაიპლაინის ფარგლებში.

ინსტრუმენტის არჩევანი დამოკიდებულია კონკრეტულ ამოცანაზე, ავტომატიზაციის დონეზე და გუნდის პრეფერენციებზე.