Sobes.tech
Middle

შესაძლებელია თუ არა ერთ სახელის სივრცის აპლიკაციას სხვა სახელის სივრცის აპლიკაცია კლასტერში ნახოს?

sobes.tech AI

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

დიახ, სხვადასხვა სახელების სივრცეში (namespace) განლაგებული პროგრამები ერთმანეთის ხედვას შეძლებენ კლასტერში.

Kubernetes-ში, namespace-ები ლოგიკური იზოლაციებია, რომლებიც რესურსების ორგანიზებაში ეხმარება. ისინი არ წარმოადგენს ქსელურ იზოლაციას სტანდარტულად.

Namespace-ებს შორის ურთიერთქმედება შესაძლებელია Kubernetes-ის DNS სერვისების მეშვეობით.

namespace-a-ში განლაგებული პროგრამა შეიძლება მიაწვდინოს my-service სახელწოდების სერვისს namespace-b-ში, მისი სრული დომენის სახელი (FQDN) გამოყენებით:

<სერვისის სახელი>.<namespace-ის სახელი>.svc.cluster.local

მაგალითი: my-service.namespace-b.svc.cluster.local

ასევე, შესაძლებელია მოკლე სახელი გამოიყენოს, თუ DNS კლასტერში სწორად არის კონფიგურირებული, მაგრამ FQDN ყოველთვის უფრო საიმედოა namespace-ებს შორის ურთიერთქმედებისთვის.

# მაგალითი სერვისის namespace-b-ში
apiVersion: v1
kind: Service
metadata:
  name: my-service # სერვისის სახელი
  namespace: namespace-b # სერვისის namespace
spec:
  selector:
    app: my-app # სელექტორი პოდებისთვის, რომელთაც სერვისი მიმართავს
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
# მაგალითი პოდის namespace-a-ში, რომელიც მიიწვდის სერვისს namespace-b-ში
apiVersion: v1
kind: Pod
metadata:
  name: consumer-pod
  namespace: namespace-a # მომხმარებლის namespace
spec:
  containers:
  - name: consumer-container
    image: my-consumer-image
    command: ["curl", "my-service.namespace-b.svc.cluster.local"] # მისამართი სხვა namespace-ის სერვისისთვის

მნიშვნელოვანია აღინიშნოს, რომ ქსელური პოლიტიკები (Network Policies) შეიძლება გამოყენებულ იქნას — namespace-ებს შორის ურთიერთქმედების შეზღუდვისთვის. სტანდარტულად, თუ ასეთი პოლიტიკები არ არსებობს, ურთიერთქმედება ნებადართულია.

ქსელური პოლიტიკები განსაზღვრავს პოდების ჯგუფებს, რომლებიც შეუძლიათ ურთიერთქმედება ერთმანეთთან, მათი namespace-ებისა და ეტიკეტების საფუძველზე.