Dış Erişim (External Access) Çözümleri#
🗒️ Saha notu — ham komut/konfigürasyon dökümü. Olduğu gibi korunmuştur; kendi ortamına uyarla.
# 🌐 EXTERNAL ACCESS İÇİN ÇÖZÜMLER
# ══════════════════════════════════════════════════════════════
# 🚀 ÇÖZÜM 1: PORT-FORWARD İLE EXTERNAL ACCESS (Hızlı)
# ══════════════════════════════════════════════════════════════
echo "🛑 Önce mevcut port-forward'ları durdur:"
pkill -f "kubectl port-forward"
echo "🌐 External IP ile port-forward başlat:"
# --address 0.0.0.0 parametresi ile tüm interface'lere bind et
kubectl port-forward --address 0.0.0.0 service/user-frontend-service 8080:80 -n development &
kubectl port-forward --address 0.0.0.0 service/admin-frontend-service 8081:80 -n development &
kubectl port-forward --address 0.0.0.0 service/backend-service 8082:80 -n development &
echo "✅ External access port-forwards started!"
echo ""
echo "🌐 EXTERNAL ACCESS URLS:"
echo "http://<K8S_MASTER_IP>:8080 - User Frontend"
echo "http://<K8S_MASTER_IP>:8081 - Admin Frontend"
echo "http://<K8S_MASTER_IP>:8082 - Backend API"
# ══════════════════════════════════════════════════════════════
# 🚀 ÇÖZÜM 2: NODEPORT SERVICE (Kalıcı Çözüm)
# ══════════════════════════════════════════════════════════════
echo ""
echo "🔧 KALICI ÇÖZÜM: NodePort Services"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# User Frontend'i NodePort'a çevir
kubectl patch service user-frontend-service -n development -p '{"spec":{"type":"NodePort","ports":[{"port":80,"targetPort":80,"nodePort":30080}]}}'
# Admin Frontend'i NodePort'a çevir
kubectl patch service admin-frontend-service -n development -p '{"spec":{"type":"NodePort","ports":[{"port":80,"targetPort":80,"nodePort":30081}]}}'
# Backend'i NodePort'a çevir
kubectl patch service backend-service -n development -p '{"spec":{"type":"NodePort","ports":[{"port":80,"targetPort":80,"nodePort":30082}]}}'
echo "✅ NodePort services configured!"
echo ""
echo "🌐 NODEPORT ACCESS URLS (PORT-FORWARD GEREKSIZ):"
echo "http://<K8S_MASTER_IP>:30080 - User Frontend"
echo "http://<K8S_MASTER_IP>:30081 - Admin Frontend"
echo "http://<K8S_MASTER_IP>:30082 - Backend API"
# ══════════════════════════════════════════════════════════════
# 🚀 ÇÖZÜM 3: LOAD BALANCER (Production Ready)
# ══════════════════════════════════════════════════════════════
echo ""
echo "🏢 PRODUCTION ÇÖZÜM: LoadBalancer Services"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# LoadBalancer services (cloud provider gerekli)
cat << 'EOF' > loadbalancer-services.yaml
apiVersion: v1
kind: Service
metadata:
name: user-frontend-lb
namespace: development
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: user-frontend
---
apiVersion: v1
kind: Service
metadata:
name: admin-frontend-lb
namespace: development
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: admin-frontend
---
apiVersion: v1
kind: Service
metadata:
name: backend-lb
namespace: development
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: backend
EOF
echo "📝 LoadBalancer services created in loadbalancer-services.yaml"
echo "Apply with: kubectl apply -f loadbalancer-services.yaml"
# ══════════════════════════════════════════════════════════════
# 🚀 ÇÖZÜM 4: INGRESS CONTROLLER (En Professional)
# ══════════════════════════════════════════════════════════════
echo ""
echo "🌟 PROFESSIONAL ÇÖZÜM: Ingress Controller"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# Nginx Ingress Controller kur
cat << 'EOF' > install-ingress.sh
#!/bin/bash
echo "🚀 Installing Nginx Ingress Controller..."
# Nginx Ingress Controller kur
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/baremetal/deploy.yaml
# NodePort olarak expose et (bare metal için)
kubectl patch service ingress-nginx-controller -n ingress-nginx -p '{"spec":{"type":"NodePort","ports":[{"port":80,"targetPort":80,"nodePort":30080,"name":"http"},{"port":443,"targetPort":443,"nodePort":30443,"name":"https"}]}}'
echo "✅ Ingress Controller installed!"
echo "HTTP: http://<K8S_MASTER_IP>:30080"
echo "HTTPS: https://<K8S_MASTER_IP>:30443"
EOF
chmod +x install-ingress.sh
# Ingress manifests oluştur
cat << 'EOF' > ingress-manifests.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ikpanel-ingress
namespace: development
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: user.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: user-frontend-service
port:
number: 80
- host: admin.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: admin-frontend-service
port:
number: 80
- host: api.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 80
---
# Path-based routing alternatifi
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ikpanel-path-ingress
namespace: development
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: ikpanel.local
http:
paths:
- path: /user(/|$)(.*)
pathType: Prefix
backend:
service:
name: user-frontend-service
port:
number: 80
- path: /admin(/|$)(.*)
pathType: Prefix
backend:
service:
name: admin-frontend-service
port:
number: 80
- path: /api(/|$)(.*)
pathType: Prefix
backend:
service:
name: backend-service
port:
number: 80
EOF
echo "📝 Ingress manifests created in ingress-manifests.yaml"
# ══════════════════════════════════════════════════════════════
# 🛠️ FIREWALL VE NETWORK AYARLARI
# ══════════════════════════════════════════════════════════════
echo ""
echo "🛡️ FIREWALL CONFIGURATION"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
# UFW firewall rules (Ubuntu/Debian)
cat << 'EOF' > firewall-setup.sh
#!/bin/bash
echo "🛡️ Configuring firewall for Kubernetes access..."
# NodePort range için firewall açma
sudo ufw allow 30080:30090/tcp comment "Kubernetes NodePort Services"
# Specific ports
sudo ufw allow 8080/tcp comment "User Frontend Port Forward"
sudo ufw allow 8081/tcp comment "Admin Frontend Port Forward"
sudo ufw allow 8082/tcp comment "Backend Port Forward"
# Kubernetes cluster communication
sudo ufw allow 6443/tcp comment "Kubernetes API Server"
sudo ufw allow 10250/tcp comment "Kubelet API"
echo "✅ Firewall rules added"
sudo ufw status numbered
EOF
chmod +x firewall-setup.sh
# iptables rules (Alternative)
cat << 'EOF' > iptables-setup.sh
#!/bin/bash
echo "🛡️ Configuring iptables for Kubernetes access..."
# Port forward trafiği için iptables kuralları
sudo iptables -A INPUT -p tcp --dport 8080:8082 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 30080:30090 -j ACCEPT
# Persistent olması için
sudo iptables-save > /etc/iptables/rules.v4
echo "✅ iptables rules configured"
EOF
chmod +x iptables-setup.sh
# ══════════════════════════════════════════════════════════════
# 📊 STATUS CHECK SCRIPT
# ══════════════════════════════════════════════════════════════
cat << 'EOF' > check-access.sh
#!/bin/bash
echo "🔍 KUBERNETES ACCESS STATUS CHECK"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
SERVER_IP="<K8S_MASTER_IP>"
echo "1️⃣ Port Forward Status:"
ps aux | grep "kubectl port-forward" | grep -v grep || echo "No active port forwards"
echo -e "\n2️⃣ NodePort Services:"
kubectl get services -n development -o wide | grep NodePort
echo -e "\n3️⃣ Port Connectivity Test:"
# Test port-forward ports
for port in 8080 8081 8082; do
if netstat -tuln | grep -q ":$port "; then
echo "✅ Port $port is open"
# Test HTTP response
response=$(curl -s -o /dev/null -w "%{http_code}" http://$SERVER_IP:$port --connect-timeout 5)
echo " HTTP Response: $response"
else
echo "❌ Port $port is not open"
fi
done
echo -e "\n4️⃣ NodePort Connectivity Test:"
# Test NodePort ports
for port in 30080 30081 30082; do
if netstat -tuln | grep -q ":$port "; then
echo "✅ NodePort $port is open"
response=$(curl -s -o /dev/null -w "%{http_code}" http://$SERVER_IP:$port --connect-timeout 5)
echo " HTTP Response: $response"
else
echo "❌ NodePort $port is not available"
fi
done
echo -e "\n5️⃣ Pod Status:"
kubectl get pods -n development -o wide
echo -e "\n6️⃣ Service Endpoints:"
kubectl get endpoints -n development
echo -e "\n📋 RECOMMENDED ACCESS METHODS:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🚀 Port Forward (if active):"
echo " http://$SERVER_IP:8080 - User Frontend"
echo " http://$SERVER_IP:8081 - Admin Frontend"
echo " http://$SERVER_IP:8082 - Backend API"
echo ""
echo "🏗️ NodePort (permanent):"
echo " http://$SERVER_IP:30080 - User Frontend"
echo " http://$SERVER_IP:30081 - Admin Frontend"
echo " http://$SERVER_IP:30082 - Backend API"
EOF
chmod +x check-access.sh
echo ""
echo "🎯 INSTANT FIX - Bu komutu çalıştır:"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "pkill -f 'kubectl port-forward' && sleep 2"
echo "kubectl port-forward --address 0.0.0.0 service/user-frontend-service 8080:80 -n development &"
echo "kubectl port-forward --address 0.0.0.0 service/admin-frontend-service 8081:80 -n development &"
echo "kubectl port-forward --address 0.0.0.0 service/backend-service 8082:80 -n development &"
echo ""
echo "✅ Then access: http://<K8S_MASTER_IP>:8080"