Middle
Uygulamanın çalıştığı Kubernetes konteynerine dış ağdan nasıl erişebiliriz?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir dış ağdan Kubernetes konteynerine erişmek için birkaç temel yöntem vardır:
-
LoadBalancer türü Hizmet:
- Bulut sağlayıcıları (AWS, GCP, Azure) dış yük dengeleyici oluşturur ve trafiği uygulamanızın pod'larına yönlendirir.
- Dış IP adresi atanır.
- Bulut ortamında en basit yöntem.
-
NodePort türü Hizmet:
- Küme içindeki her düğümde bir port açar.
- Bu port, trafiği uygulama hizmetinize yönlendirir.
- Herhangi bir düğümün IP'si ve NodePort numarasıyla erişilir.
- LoadBalancer'dan daha az ölçeklenebilir ve güvenlidir.
-
ClusterIP türü Hizmet ve Ingress ile birlikte:
- ClusterIP - sadece küme içinde erişilebilir hizmet.
- Ingress - kümedeki hizmetlere dış erişimi yöneten API nesnesi.
- Ingress denetleyicisi (örneğin, Nginx Ingress Controller, Traefik) dış trafiği dinler ve uygun ClusterIP hizmetine yönlendirir.
- Yönlendirme, SSL sonlandırma, yük dengeleme gibi merkezi yönetim sağlar.
- Esnek ve ölçeklenebilir bir yaklaşım.
-
ExternalName türü Hizmet:
- Dış alan adı için takma ad oluşturur. Bu hizmet aracılığıyla doğrudan konteynıra erişim sağlamaz, ancak küme içinden dış kaynağa DNS adı kullanarak erişim sağlar. Dışardan doğrudan erişim için uygun değildir.
-
Pod üzerinde doğrudan NodePort/HostPort erişimi:
- Pod tanımında
hostPortbelirtebilir ve pod'un çalıştığı düğümde port açabilirsiniz. Üretim ortamları için önerilmez, düşük yönetilebilirlik ve potansiyel port çatışmaları nedeniyle. - Benzer şekilde,
nodePortde NodePort türü hizmette belirtilebilir.
- Pod tanımında
Yapılandırma örnekleri:
-
LoadBalancer Hizmeti:
// service.yaml apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer -
NodePort Hizmeti:
// service-nodeport.yaml apiVersion: v1 kind: Service metadata: name: my-app-service-np spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 nodePort: 30000 # isteğe bağlı, Kubernetes atayacaktır type: NodePort -
Ingress (ClusterIP hizmeti için):
// service-clusterip.yaml (zaten mevcut) apiVersion: v1 kind: Service metadata: name: my-app-service-ci spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: ClusterIP// ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec: rules: - host: myapp.example.com http: paths: - path: / pathType: Prefix backend: service: name: my-app-service-ci port: number: 80
Seçim, ölçeklenebilirlik, güvenlik, dağıtım ortamı (bulut veya yerinde) ve merkezi erişim yönetimi gereksinimlerine bağlıdır. Ingress, üretim sistemleri için tercih edilen çözümdür.