feat: CI/CD pipeline + Learning/Medicine/Travel services
- Add Gitea Actions workflow for automated build & deploy - Add K8s manifests: webui, travel-svc, medicine-svc, sandbox-svc - Update kustomization for localhost:5000 registry - Add ingress for gooseek.ru and api.gooseek.ru - Learning cabinet with onboarding, courses, sandbox integration - Medicine service with symptom analysis and doctor matching - Travel service with itinerary planning - Server setup scripts (NVIDIA/CUDA, K3s, Gitea runner) Made-with: Cursor
This commit is contained in:
60
backend/deploy/scripts/setup-k3s-cicd.sh
Normal file
60
backend/deploy/scripts/setup-k3s-cicd.sh
Normal file
@@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "=== Installing K3s ==="
|
||||
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik --disable servicelb --tls-san gooseek.ru --tls-san 5.187.77.89" sh -
|
||||
|
||||
echo "=== Waiting for K3s to be ready ==="
|
||||
sleep 10
|
||||
sudo k3s kubectl wait --for=condition=Ready node --all --timeout=120s
|
||||
|
||||
echo "=== Setting up kubectl for user ==="
|
||||
mkdir -p ~/.kube
|
||||
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
|
||||
sudo chown $(id -u):$(id -g) ~/.kube/config
|
||||
chmod 600 ~/.kube/config
|
||||
|
||||
echo "=== Installing Helm ==="
|
||||
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||
|
||||
echo "=== Installing Nginx Ingress Controller ==="
|
||||
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
|
||||
helm repo update
|
||||
helm install ingress-nginx ingress-nginx/ingress-nginx \
|
||||
--namespace ingress-nginx --create-namespace \
|
||||
--set controller.service.type=NodePort \
|
||||
--set controller.service.nodePorts.http=80 \
|
||||
--set controller.service.nodePorts.https=443 \
|
||||
--set controller.hostNetwork=true \
|
||||
--set controller.kind=DaemonSet
|
||||
|
||||
echo "=== Installing Cert-Manager ==="
|
||||
helm repo add jetstack https://charts.jetstack.io
|
||||
helm install cert-manager jetstack/cert-manager \
|
||||
--namespace cert-manager --create-namespace \
|
||||
--set crds.enabled=true
|
||||
|
||||
echo "=== Waiting for cert-manager ==="
|
||||
kubectl -n cert-manager wait --for=condition=Available deployment --all --timeout=120s
|
||||
|
||||
echo "=== Creating Let's Encrypt ClusterIssuer ==="
|
||||
cat <<EOF | kubectl apply -f -
|
||||
apiVersion: cert-manager.io/v1
|
||||
kind: ClusterIssuer
|
||||
metadata:
|
||||
name: letsencrypt-prod
|
||||
spec:
|
||||
acme:
|
||||
server: https://acme-v02.api.letsencrypt.org/directory
|
||||
email: admin@gooseek.ru
|
||||
privateKeySecretRef:
|
||||
name: letsencrypt-prod
|
||||
solvers:
|
||||
- http01:
|
||||
ingress:
|
||||
class: nginx
|
||||
EOF
|
||||
|
||||
echo "=== K3s + Ingress + Cert-Manager installed ==="
|
||||
kubectl get nodes
|
||||
kubectl get pods -A
|
||||
Reference in New Issue
Block a user