fix deploy dotnet backend

This commit is contained in:
2025-10-02 16:59:42 +05:00
parent 109629c6f9
commit 4fdfb37216
6 changed files with 124 additions and 12 deletions

View File

@ -1,38 +1,55 @@
.PHONY: help build-backend build-frontend build-all deploy undeploy clean
# Переменные для путей к утилитам
KIND_PATH = /home/tactile/.kind-d8/kind
KUBECTL_PATH = /home/tactile/.kind-d8/kubectl
.PHONY: help build-backend build-backend-dotnet build-frontend build-all load-images deploy undeploy clean
help:
@echo "Доступные команды:"
@echo " make build-backend - Собрать Docker образ бэкенда"
@echo " make build-backend - Собрать Docker образ Python бэкенда"
@echo " make build-backend-dotnet - Собрать Docker образ .NET бэкенда"
@echo " make build-frontend - Собрать Docker образ фронтенда"
@echo " make build-all - Собрать все Docker образы"
@echo " make load-images - Загрузить образы в kind кластер"
@echo " make deploy - Развернуть приложение в k8s"
@echo " make undeploy - Удалить приложение из k8s"
@echo " make clean - Очистить все ресурсы"
build-backend:
@echo "Сборка backend образа..."
@echo "Сборка Python backend образа..."
docker build -t python-navigator-demo-backend:latest ./backend
build-backend-dotnet:
@echo "Сборка .NET backend образа..."
docker build -t python-navigator-demo-backend-dotnet:latest ./backend-dotnet
build-frontend:
@echo "Сборка frontend образа..."
docker build -t python-navigator-demo-frontend:latest ./frontend
build-all: build-backend build-frontend
build-all: build-backend build-backend-dotnet build-frontend
@echo "Все образы собраны успешно!"
load-images:
@echo "Загрузка образов в kind кластер..."
$(KIND_PATH) load docker-image python-navigator-demo-backend:latest --name d8
$(KIND_PATH) load docker-image python-navigator-demo-backend-dotnet:latest --name d8
$(KIND_PATH) load docker-image python-navigator-demo-frontend:latest --name d8
@echo "Образы загружены в kind кластер!"
deploy:
@echo "Развертывание приложения в Kubernetes..."
~/.kind-d8/kubectl apply -k k8s/
$(KUBECTL_PATH) apply -k k8s/
@echo "Приложение развернуто!"
@echo "Доступно по адресу: https://python-navigator-demo.127.0.0.1.sslip.io"
undeploy:
@echo "Удаление приложения из Kubernetes..."
~/.kind-d8/kubectl delete -k k8s/
$(KUBECTL_PATH) delete -k k8s/
@echo "Приложение удалено!"
clean: undeploy
@echo "Очистка Docker образов..."
docker rmi navigator-demo-backend:latest navigator-demo-frontend:latest || true
docker rmi python-navigator-demo-backend:latest python-navigator-demo-backend-dotnet:latest python-navigator-demo-frontend:latest || true
@echo "Очистка завершена!"

View File

@ -5,6 +5,16 @@ using Npgsql;
var builder = WebApplication.CreateBuilder(args);
// // Force binding to all interfaces in Kubernetes
// Console.WriteLine($"ASPNETCORE_URLS env var: {Environment.GetEnvironmentVariable("ASPNETCORE_URLS")}");
// Console.WriteLine($"ASPNETCORE_HTTP_PORTS env var: {Environment.GetEnvironmentVariable("ASPNETCORE_HTTP_PORTS")}");
// // Clear any existing configuration and force our URL
// builder.WebHost.ConfigureKestrel(options =>
// {
// options.ListenAnyIP(8000);
// });
// Configuration
var config = new AppConfig
{

View File

@ -5,7 +5,6 @@
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Urls": "http://localhost:8000"
"AllowedHosts": "*"
}

78
k8s/backend-dotnet.yaml Normal file
View File

@ -0,0 +1,78 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: backend-dotnet-config
namespace: python-navigator-demo
data:
DB_HOST: postgres
DB_PORT: "5432"
DB_NAME: python-navigator-demo
DB_USER: python-navigator-demo
DEX_ISSUER: https://dex.127.0.0.1.sslip.io/
---
apiVersion: v1
kind: Secret
metadata:
name: backend-dotnet-secret
namespace: python-navigator-demo
type: Opaque
stringData:
DB_PASSWORD: python-navigator-demo
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend-dotnet
namespace: python-navigator-demo
spec:
selector:
matchLabels:
app: backend-dotnet
template:
metadata:
labels:
app: backend-dotnet
spec:
containers:
- name: backend-dotnet
image: python-navigator-demo-backend-dotnet:latest
imagePullPolicy: Never # Для локальной разработки
ports:
- containerPort: 8000
env:
- name: ASPNETCORE_URLS
value: "http://0.0.0.0:8000"
# - name: ASPNETCORE_HTTP_PORTS
# value: "8000"
envFrom:
- configMapRef:
name: backend-dotnet-config
- secretRef:
name: backend-dotnet-secret
# livenessProbe:
# httpGet:
# path: /api/health
# port: 8000
# initialDelaySeconds: 10
# periodSeconds: 10
# readinessProbe:
# httpGet:
# path: /api/health
# port: 8000
# initialDelaySeconds: 5
# periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: backend-dotnet
namespace: python-navigator-demo
spec:
selector:
app: backend-dotnet
ports:
- port: 8000
targetPort: 8000
type: ClusterIP

View File

@ -35,7 +35,7 @@ spec:
spec:
containers:
- name: backend
image: navigator-demo-backend:latest
image: python-navigator-demo-backend:latest
imagePullPolicy: Never # Для локальной разработки
ports:
- containerPort: 8000

View File

@ -22,14 +22,22 @@ spec:
- host: python-navigator-demo.127.0.0.1.sslip.io
http:
paths:
# API запросы идут напрямую в backend
# API запросы для .NET backend
- path: /api
pathType: Prefix
backend:
service:
name: backend
name: backend-dotnet
port:
number: 8000
# API запросы идут напрямую в Python backend
# - path: /api
# pathType: Prefix
# backend:
# service:
# name: backend
# port:
# number: 8000
# Все остальное идет в frontend
- path: /
pathType: Prefix