- 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
61 lines
1.8 KiB
Bash
61 lines
1.8 KiB
Bash
#!/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
|