Prechádzať zdrojové kódy

Primer commit funcionando

Tino 1 mesiac pred
commit
c837c0f88b
10 zmenil súbory, kde vykonal 175 pridanie a 0 odobranie
  1. 13 0
      README.md
  2. 39 0
      backup_gogs.sh
  3. 24 0
      copyGogsDB
  4. 3 0
      creaTodo.sh
  5. 10 0
      gogs-db.yaml
  6. 22 0
      gogs-service.yaml
  7. 46 0
      gogs-statefulset.yaml
  8. 5 0
      kustomization.yaml
  9. 2 0
      paraTodo.sh
  10. 11 0
      registry-secrets.yaml

+ 13 - 0
README.md

@@ -0,0 +1,13 @@
+# restaurar un zip
+
+primero la base de datos
+
+./gogs restore --database-only --config=/data/gogs/conf/app.ini --from=/data/gogs-backup-20260818105724.zip
+
+
+si da error al entrar en algún proyecto
+
+desde el directorio /data/git/gogs-repositories:
+
+su -s /bin/bash git -c "git config --global --add safe.directory '*'"
+

+ 39 - 0
backup_gogs.sh

@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# --- CONFIGURACIÓN ---
+NAMESPACE="gogs"
+POD_NAME=$(kubectl get pods -n "$NAMESPACE" -l app=gogs-app -o jsonpath='{.items[0].metadata.name}')
+CONTAINER_BACKUP_DIR="/data"
+LOCAL_DEST_DIR="/mnt/Family/Gogs"
+
+# Crear directorio local si no existe
+mkdir -p "$LOCAL_DEST_DIR"
+
+# 1. Ejecutar el backup dentro del contenedor (lo guarda temporalmente en el PVC)
+echo "Generando backup de Gogs dentro del contenedor..."
+kubectl exec -n "$NAMESPACE" "$POD_NAME" -- \
+  bash -c "USER=git HOME=/data /app/gogs/gogs backup --target $CONTAINER_BACKUP_DIR"
+
+# 2. Buscar el nombre del archivo ZIP recién creado dentro del contenedor
+ZIP_FILE=$(kubectl exec -n "$NAMESPACE" "$POD_NAME" -- \
+  bash -c "ls -t $CONTAINER_BACKUP_DIR/gogs-backup-*.zip | head -n 1")
+
+# Validar si se encontró el archivo
+if [ -z "$ZIP_FILE" ]; then
+    echo "Error: No se encontró ningún archivo de respaldo en el contenedor."
+    exit 1
+fi
+
+ZIP_NAME=$(basename "$ZIP_FILE")
+echo "Archivo encontrado: $ZIP_NAME"
+
+# 3. Descargar el archivo directamente a /mnt/Family
+echo "Moviendo archivo a $LOCAL_DEST_DIR..."
+kubectl cp "$NAMESPACE/$POD_NAME:$ZIP_FILE" "$LOCAL_DEST_DIR/$ZIP_NAME"
+
+# 4. Limpiar el archivo temporal dentro del volumen persistente del contenedor
+echo "Limpiando residuo del contenedor..."
+kubectl exec -n "$NAMESPACE" "$POD_NAME" -- rm "$ZIP_FILE"
+
+echo "¡Respaldo completado con éxito en $LOCAL_DEST_DIR/$ZIP_NAME!"
+

+ 24 - 0
copyGogsDB

@@ -0,0 +1,24 @@
+# Backup date
+
+today=$(date "+%Y_%m_%d-%H_%M_%S")
+
+echo "Current date: $today"
+
+# build up filename
+
+# destination folder (change to your own needs)
+
+BACKUP_FOLDER=/tmp
+
+file_name=$BACKUP_FOLDER/bkup_gogs
+new_name=$file_name-$today.sql
+echo "Backup file name: " "$new_name"
+
+#sudo docker exec `sudo docker container ls | grep mysql_gogs | cut -f1 -d' '` /usr/bin/mysqldump -u root --password=Dsa-0213 gogs > $new_name
+sudo kubectl --kubeconfig /home/creylopez/.kube/config exec `kubectl --kubeconfig /home/creylopez/.kube/config get pod -n gogs|grep mysql|cut -f1 -d' '` -n gogs -- /usr/bin/mysqldump -u root --password=Dsa-0213 gogs > $new_name
+
+message="Backup stored "$today
+
+sudo -u creylopez cat $new_name | mail -s "Gogs backup finished" "creylopez@yahoo.es"
+
+sudo rm $new_name

+ 3 - 0
creaTodo.sh

@@ -0,0 +1,3 @@
+kubectl create namespace gogs
+kubectl create -k ./
+watch kubectl get all,pvc -n gogs

+ 10 - 0
gogs-db.yaml

@@ -0,0 +1,10 @@
+apiVersion: postgresql.cnpg.io/v1
+kind: Database
+metadata:
+  name: gogs-db
+  namespace: reymota-pg-cluster
+spec:
+  name: gogs
+  owner: creylopez
+  cluster:
+    name: postgres-cluster

+ 22 - 0
gogs-service.yaml

@@ -0,0 +1,22 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: gogs-app
+  namespace: gogs
+  labels:
+    app: gogs-app
+spec:
+  ports:
+  - name: ssh
+    protocol: TCP
+    port: 22
+    targetPort: 22
+    nodePort: 30022
+  - name: http
+    protocol: TCP
+    port: 3000
+    targetPort: 3000
+    nodePort: 30009
+  selector:
+    app: gogs-app
+  type: NodePort

+ 46 - 0
gogs-statefulset.yaml

@@ -0,0 +1,46 @@
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  labels:
+    app: gogs-app
+  name: gogs-app
+  namespace: gogs
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: gogs-app
+  serviceName: gogs-app
+  template:
+    metadata:
+      labels:
+        app: gogs-app
+    spec:
+      containers:
+      - image: gogs/gogs
+        imagePullPolicy: IfNotPresent
+        name: gogs-app
+        resources: {}
+        ports:
+          - containerPort: 3000
+            name: web
+            protocol: TCP
+          - containerPort: 22
+            name: ssh
+            protocol: TCP
+        volumeMounts:
+        - name: gogs-pv
+          mountPath: /data
+      imagePullSecrets:
+      - name: reg-cred-secret
+      dnsPolicy: ClusterFirst
+      restartPolicy: Always
+      terminationGracePeriodSeconds: 30
+  volumeClaimTemplates:
+  - metadata:
+      name: gogs-pv
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      resources:
+        requests:
+          storage: 10Gi

+ 5 - 0
kustomization.yaml

@@ -0,0 +1,5 @@
+secretGenerator:
+resources:
+  - gogs-service.yaml
+  - registry-secrets.yaml
+  - gogs-statefulset.yaml

+ 2 - 0
paraTodo.sh

@@ -0,0 +1,2 @@
+kubectl delete -k ./
+#kubectl delete namespace gogs

+ 11 - 0
registry-secrets.yaml

@@ -0,0 +1,11 @@
+apiVersion: v1
+data:
+  .dockerconfigjson: eyJhdXRocyI6eyJkb2NrZXItcmVnaXN0cnk6MzIwMDAiOnsidXNlcm5hbWUiOiJjcmV5bG9wZXoiLCJwYXNzd29yZCI6IlJleS0xMTc2IiwiYXV0aCI6IlkzSmxlV3h2Y0dWNk9sSmxlUzB4TVRjMiJ9fX0=
+kind: Secret
+metadata:
+  creationTimestamp: "2023-01-29T10:54:14Z"
+  name: reg-cred-secret
+  namespace: gogs
+  resourceVersion: "19890385"
+  uid: 66b3b7c5-26c1-4e5a-af4e-dc973aaafe4b
+type: kubernetes.io/dockerconfigjson