diff --git a/add-on/Istruzioni_kubeedge.txt b/add-on/Istruzioni_kubeedge.txt index db9ca36..3a6d8e4 100644 --- a/add-on/Istruzioni_kubeedge.txt +++ b/add-on/Istruzioni_kubeedge.txt @@ -117,6 +117,11 @@ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/cri sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin rm -f crictl-$VERSION-linux-amd64.tar.gz + + +Taint:kubectl taint nodes edge-node-2 edgenode=true:NoExecute +Label: kubectl label node edge-node-2 edgeproject=resilki + edge-cleanup.sh: #!/bin/bash @@ -273,4 +278,18 @@ done verifica : -mosquitto_sub -h localhost -t sensors/home/livingroom \ No newline at end of file +mosquitto_sub -h localhost -t sensors/home/livingroom + +#### modifiche per rasperry############################################## + +#cgroups +vi /boot/firmware/cmdline.txt +Add cgroup parameters:Add the following to the end of the existing line (do not create a new line): +textcgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1 + +#streaming +su /etc/kubeedge/config/edgecore.yaml +modules: + edgeStream: + enable: true + diff --git a/add-on/RabbitMQ.txt b/add-on/RabbitMQ.txt index 91f35a5..a7d7c55 100644 --- a/add-on/RabbitMQ.txt +++ b/add-on/RabbitMQ.txt @@ -21,7 +21,7 @@ spec: replicas: 1 resources: requests: - cpu: 1 + cpu: 500m memory: 1Gi limits: cpu: 1 @@ -33,7 +33,7 @@ spec: collect_statistics_interval = 10000 persistence: storageClassName: csi-rbdfs-sc - storage: "5Gi" + storage: "2Gi" affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: diff --git a/add-on/act-runner.yaml b/add-on/act-runner.yaml new file mode 100644 index 0000000..c78d023 --- /dev/null +++ b/add-on/act-runner.yaml @@ -0,0 +1,58 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: gitea-act-runner-dind +spec: + replicas: 1 + selector: + matchLabels: + app: gitea-act-runner-dind + template: + metadata: + labels: + app: gitea-act-runner-dind + spec: + containers: + - name: runner + image: vegardit/gitea-act-runner:dind-latest + securityContext: + privileged: true + env: + - name: GITEA_INSTANCE_URL + value: "http://gitea.italiadatacenter.com" + - name: GITEA_RUNNER_REGISTRATION_TOKEN + valueFrom: + secretKeyRef: + name: gitea-runner-secret + key: registration-token + volumeMounts: + - name: data + mountPath: /data + - name: docker-storage + mountPath: /var/lib/docker + volumes: + - name: data + persistentVolumeClaim: + claimName: gitea-runner-data-pvc + - name: docker-storage + emptyDir: {} +--- +--- +apiVersion: v1 +kind: Secret +metadata: + name: gitea-runner-secret +type: Opaque +stringData: + registration-token: "Yx9aGssgXzcsoX75KOpFY1OliQz5cO9bTR0tuo4Z" +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: gitea-runner-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi \ No newline at end of file diff --git a/add-on/certm.yaml b/add-on/certm.yaml new file mode 100644 index 0000000..99e5cfc --- /dev/null +++ b/add-on/certm.yaml @@ -0,0 +1,139 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + deployment.kubernetes.io/revision: "1" + meta.helm.sh/release-name: cert-manager + meta.helm.sh/release-namespace: cert-manager + creationTimestamp: "2026-02-08T14:54:09Z" + generation: 1 + labels: + app: cert-manager + app.kubernetes.io/component: controller + app.kubernetes.io/instance: cert-manager + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: cert-manager + app.kubernetes.io/version: v1.19.3 + helm.sh/chart: cert-manager-v1.19.3 + name: cert-manager + namespace: cert-manager + resourceVersion: "90308180" + uid: addcc5cd-6990-45bc-81c0-8a5b84388744 +spec: + progressDeadlineSeconds: 600 + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + app.kubernetes.io/component: controller + app.kubernetes.io/instance: cert-manager + app.kubernetes.io/name: cert-manager + strategy: + rollingUpdate: + maxSurge: 25% + maxUnavailable: 25% + type: RollingUpdate + template: + metadata: + annotations: + prometheus.io/path: /metrics + prometheus.io/port: "9402" + prometheus.io/scrape: "true" + labels: + app: cert-manager + app.kubernetes.io/component: controller + app.kubernetes.io/instance: cert-manager + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: cert-manager + app.kubernetes.io/version: v1.19.3 + helm.sh/chart: cert-manager-v1.19.3 + spec: + initContainers: + - name: resolve-gateway + image: busybox:1.35 + command: + - sh + - -c + - | + GW_IP=$(getent hosts main-gateway-nginx.nginx-gateway.svc.cluster.local 2>/dev/null | awk '{print $1}') + if [ -n "$GW_IP" ]; then + echo "$GW_IP main-gateway-nginx.nginx-gateway.svc.cluster.local" >> /etc/hosts + echo "$GW_IP main-gateway-nginx" >> /etc/hosts + echo "Risoluzione aggiunta: $GW_IP main-gateway-nginx" + else + echo "Avviso: impossibile risolvere main-gateway-nginx.nginx-gateway.svc.cluster.local" + fi + containers: + - args: + - --v=2 + - --config=/var/cert-manager/config/config.yaml + - --cluster-resource-namespace=$(POD_NAMESPACE) + - --leader-election-namespace=kube-system + - --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.19.3 + - --max-concurrent-challenges=60 + env: + - name: POD_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + image: quay.io/jetstack/cert-manager-controller:v1.19.3 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 8 + httpGet: + path: /livez + port: http-healthz + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 15 + name: cert-manager-controller + ports: + - containerPort: 9402 + name: http-metrics + protocol: TCP + - containerPort: 9403 + name: http-healthz + protocol: TCP + resources: {} + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: true + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /var/cert-manager/config + name: config + dnsPolicy: ClusterFirst + enableServiceLinks: false + hostAliases: + - ip: "127.0.0.1" + hostnames: + - "localhost.local" + - "example.local" + # Aggiungi altri domini locali qui: + # - ip: "10.0.0.1" + # hostnames: + # - "internal.domain" + # - "api.domain" + nodeSelector: + kubernetes.io/os: linux + restartPolicy: Always + schedulerName: default-scheduler + securityContext: + runAsNonRoot: true + seccompProfile: + type: RuntimeDefault + serviceAccount: cert-manager + serviceAccountName: cert-manager + terminationGracePeriodSeconds: 30 + volumes: + - configMap: + defaultMode: 420 + name: cert-manager + name: config diff --git a/add-on/dbgate.docker b/add-on/dbgate.docker new file mode 100644 index 0000000..e69de29 diff --git a/add-on/dbgate.yaml b/add-on/dbgate.yaml index cf79c63..e113f32 100644 --- a/add-on/dbgate.yaml +++ b/add-on/dbgate.yaml @@ -3,6 +3,20 @@ kind: Namespace metadata: name: dbgate --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: dbgate-data + namespace: dbgate +data: + # Aggiungere qui i file di configurazione iniziali di dbgate (es. connections.yaml) + # I file verranno montati in /root/.dbgate nel container. + # Esempio: + # connections.yaml: | + # - id: con1 + # engine: mysql@dbgate-plugin-mysql + # ... +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -33,6 +47,10 @@ spec: - name: CONNECTIONS value: "" + volumeMounts: + - name: dbgate-data + mountPath: /root/.dbgate + resources: requests: cpu: "100m" @@ -40,7 +58,12 @@ spec: limits: cpu: "500m" - memory: "512Mi" + memory: "512Mi" + + volumes: + - name: dbgate-data + configMap: + name: dbgate-data --- apiVersion: v1 kind: Service diff --git a/add-on/dns.json b/add-on/dns.json new file mode 100644 index 0000000..d09c4e5 --- /dev/null +++ b/add-on/dns.json @@ -0,0 +1,62 @@ +{ + "response": { + "zone": { + "name": "italiadatacenter.com", + "type": "Primary", + "lastModified": "2026-06-17T06:07:53.4067414Z", + "disabled": false, + "soaSerial": 2026061700, + "internal": false, + "catalog": null, + "dnssecStatus": "Unsigned", + "hasDnssecPrivateKeys": false, + "notifyFailed": false, + "notifyFailedFor": [] + }, + "records": [ + { + "name": "italiadatacenter.com", + "type": "NS", + "ttl": 14400, + "ttlString": "4h", + "disabled": false, + "rData": { + "nameServer": "pt.idc" + }, + "dnssecStatus": "Unknown", + "lastUsedOn": "0001-01-01T00:00:00", + "lastModified": "2026-03-27T08:57:05.078Z", + "expiryTtl": 0, + "expiryTtlString": "0s" + }, + { + "name": "italiadatacenter.com", + "type": "SOA", + "ttl": 900, + "ttlString": "15m", + "disabled": false, + "rData": { + "primaryNameServer": "pt.idc", + "responsiblePerson": "hostadmin@italiadatacenter.com", + "serial": 2026061700, + "refresh": 900, + "retry": 300, + "expire": 604800, + "minimum": 900, + "refreshString": "15m", + "retryString": "5m", + "expireString": "1w", + "minimumString": "15m", + "useSerialDateScheme": true + }, + "dnssecStatus": "Unknown", + "lastUsedOn": "2026-06-17T17:37:31.9215889Z", + "lastModified": "2026-03-27T08:57:05.078Z", + "expiryTtl": 0, + "expiryTtlString": "0s" + } + ] + }, + "server": "pt.idc", + "status": "ok" +} diff --git a/add-on/migrazione st2idc applicazioni. sporteams.txt b/add-on/migrazione st2idc applicazioni. sporteams.txt new file mode 100644 index 0000000..a051eab --- /dev/null +++ b/add-on/migrazione st2idc applicazioni. sporteams.txt @@ -0,0 +1,64 @@ +microservices + ./run_st2idc.sh sporteams-platform/microservices/tornei sporteams/tornei ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/accessi sporteams/accessi ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/sponsor sporteams/sponsor ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/eventi-club sporteams/eventi-club ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/notifiche sporteams/notifiche ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/convocazioni sporteams/convocazioni ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/eventi-wow sporteams/eventi-wow ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/gare sporteams/gare ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/referti sporteams/referti ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/mail-sms sporteams/mail-sms ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/anagrafiche sporteams/anagrafiche ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/allenamenti sporteams/allenamenti ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/strutture sporteams/strutture ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/localita sporteams/localita ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/companies sporteams/companies ./st_transform.env + ./run_st2idc.sh sporteams-platform/microservices/moduli sporteams/moduli ./st_transform.env + +progetti + ./run_st2idc.sh sporteams-platform/progetti/club/club-backend sporteams/club-backend ./st_transform.env + ./run_st2idc.sh sporteams-platform/progetti/club/club-frontend sporteams/club-frontend ./st_transform.env + + + + + lnd tornei + staysafe lite + giornalista 4.0 + geco + + +commesse + enba + sestra + ncslab + app camminatori + + +microservices esterni + prenotazioni-enba + accessi-enba + prenotazioni-csi + accessi-csi + prenotazioni-club + accessi-club (microservizio giuneco per gli accessi per club) + +frontend: + homepage + wow-festival + match + +gateway: + webhooks + licenze + gateway accessi + wow-festival2 + csi + mockapi + match + +cross services + supertoken + mongodb + nocodb diff --git a/add-on/migrazione st2idc applicazioni.txt b/add-on/migrazione st2idc applicazioni.txt new file mode 100644 index 0000000..25b46dd --- /dev/null +++ b/add-on/migrazione st2idc applicazioni.txt @@ -0,0 +1,49 @@ +Limec Club + + +Run clonazioni: + + +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/accessi Sporteams/limecaccessi ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/strutture Sporteams/limecstrutture ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/convocazioni Sporteams/limecconvocazioni ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/mail-sms Sporteams/limecmail-sms ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/sponsor Sporteams/limecsponsor ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/piano-carriere Sporteams/limecpiano-carriere ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/limec-licenze Sporteams/limec-licenze ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/limec-backend Sporteams/limec-backend ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/limec-frontend Sporteams/limec-frontend ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/anagrafiche Sporteams/limecanagrafiche ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/cross-services/supertokens Sporteams/limecsupertokens ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/moduli Sporteams/limecmoduli ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/companies Sporteams/limeccompanies ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/eventi-club Sporteams/limeceventi-club ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/gare Sporteams/ ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/notifiche Sporteams/limecnotifiche ./limec_transform.env true +./run_st2idc.sh sporteams-platform/progetti/limec/microservices/allenamenti Sporteams/limecallenamenti ./limec_transform.env true + + +# Modalità completa +./clone-and-transform.sh -u https://gitlab.com -t glpat-xxx -r group/proj -d ./repo + +# Modalità transformation (skip GitLab clone) +./clone-and-transform.sh -transformation -d ./existing-repo --gitea-repo group/proj -f ./transform.env + + +limec-backend-dev ["gateway-limec-dev.pigreco66.it"] 30h +limec-frontend-dev ["limecdev.pigreco66.it"] 22h +limeccompanies-dev ["limeccompaniesdev.pigreco66.it"] 5d2h +limeceventi-club-dev ["limeceventiclubdev.pigreco66.it"] 3d17h +limecmoduli-dev ["limecmoduliapidev.pigreco66.it"] 4d3h +limecsupertokens-dev ["limecsupertokensdev.pigreco66.it"] 5d7 + +nest.limecaccessi-dev.svc.cluster.local +nest.limecsponsor-dev.svc.cluster.local +nest.limecanagrafiche-dev.svc.cluster.local + +- gateway-limec-dev.pigreco66.it +- limecdev.pigreco66.it +- limeccompaniesdev.pigreco66.it +- limeceventiclubdev.pigreco66.it +- limecmoduliapidev.pigreco66.it +- limecsupertokensdev.pigreco66.it \ No newline at end of file diff --git a/add-on/migrazione st2idc database.txt b/add-on/migrazione st2idc database.txt new file mode 100644 index 0000000..181bef0 --- /dev/null +++ b/add-on/migrazione st2idc database.txt @@ -0,0 +1,54 @@ +Walk4All +acc398 +accessi +accessi_microservizio +agim +allenamenti +anagrafiche +anagrafiche_info +asdgestold +autocertificazioni +camminatori +club +cmdb +companies +contatti +convocazioni +csi +enba +eventi +eventi_wow +gare +geco +licenze +localita +mail_sms +match +moduli +moduli_info +nocodb +notifiche +pgare +piano_carriere +referti +segdigi +segdigiold +sestra +sonar +sonarq9 +sponsor +sporteams-app +strutture +supertokens +supertokens_match +supertokens_sestra +tornei + + +./backuppg.sh dbdev16 anagrafiche postgresql-16-postgresql-0 + +SELECT './backuppg.sh dbdev16 '||datname||' postgresql-16-postgresql-0' +FROM pg_database +WHERE datistemplate = false + AND datname <> 'postgres' +ORDER BY datname \ No newline at end of file diff --git a/add-on/nfs-service.yaml b/add-on/nfs-service.yaml new file mode 100644 index 0000000..a7455a4 --- /dev/null +++ b/add-on/nfs-service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-backend +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 500Gi \ No newline at end of file diff --git a/add-on/postgresql.sh b/add-on/postgresql.sh index ef9364e..2e19018 100644 --- a/add-on/postgresql.sh +++ b/add-on/postgresql.sh @@ -76,6 +76,26 @@ backup: --- pgadmin ------------------- +apiVersion: v1 +kind: ConfigMap +metadata: + name: pgadmin-servers +data: + servers.json: | + { + "Servers": { + "1": { + "Name": "pg-test-rw", + "Group": "Servers", + "Host": "leodeancluster-rw.leodean-dev.svc.cluster.local", + "Port": 5432, + "MaintenanceDB": "leodean", + "Username": "leodeanAdmin", + "SSLMode": "disable" + } + } + } +--- apiVersion: apps/v1 kind: Deployment metadata: @@ -100,6 +120,17 @@ spec: value: pgadmin@italiadatacenter.com - name: PGADMIN_DEFAULT_PASSWORD value: KAYQE1QA7uwUZ8uI + - name: PGADMIN_SERVER_JSON_FILE + value: /pgadmin4/servers.json + volumeMounts: + - name: pgadmin-servers-json + mountPath: /pgadmin4/servers.json + subPath: servers.json + readOnly: true + volumes: + - name: pgadmin-servers-json + configMap: + name: pgadmin-servers --- apiVersion: v1 kind: Service diff --git a/add-on/verdaccio.txt b/add-on/verdaccio.txt new file mode 100644 index 0000000..906fe9b --- /dev/null +++ b/add-on/verdaccio.txt @@ -0,0 +1,2 @@ +helm repo add verdaccio https://charts.verdaccio.org +helm install npm verdaccio/verdaccio \ No newline at end of file diff --git a/kubectl b/kubectl new file mode 100644 index 0000000..ff031a1 Binary files /dev/null and b/kubectl differ diff --git a/kubegreen.txt b/kubegreen.txt new file mode 100644 index 0000000..ed0b5cd --- /dev/null +++ b/kubegreen.txt @@ -0,0 +1,3 @@ +kubegreen + +kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml \ No newline at end of file diff --git a/kyverno.txt b/kyverno.txt new file mode 100644 index 0000000..cf17cd9 --- /dev/null +++ b/kyverno.txt @@ -0,0 +1,3 @@ +helm repo add kyverno https://kyverno.github.io/kyverno/ +helm repo update +helm install kyverno kyverno/kyverno -n kyverno --create-namespace \ No newline at end of file diff --git a/pipeline/_customize.sh b/pipeline/_customize.sh new file mode 100644 index 0000000..99ef7c7 --- /dev/null +++ b/pipeline/_customize.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# Usage: ./customize.sh dev|qa|prod +echo "tetst" $IMAGE_TAG_backend +ENV=$1 +VALUES_DIR="env/$ENV" +PROPERTIES_FILE="properties.env" +YAML_DIR="kubernetes" + +# Estrai l'hash completo del commit e crea una variabile temporanea per la sostituzione +TAG=$(git rev-parse HEAD) +TMP_TAG_FILE=$(mktemp) +TMP_VALUES_FILE=$(mktemp) +echo "TAG=$TAG" > "$TMP_TAG_FILE" +cat ./imglist >> "$TMP_TAG_FILE" + + +if [ ! -d "$VALUES_DIR" ] || ! ls "$VALUES_DIR"/*.env &>/dev/null; then + echo "Nessun file .env trovato in $VALUES_DIR" + exit 1 +fi + +if [ ! -f "$PROPERTIES_FILE" ]; then + echo "File $PROPERTIES_FILE non trovato." + exit 1 +fi + +# Crea una lista key=value temporanea partendo da tutti i file *.env in env/$ENV e aggiunge env dinamico +> "$TMP_VALUES_FILE" +for env_file in "$VALUES_DIR"/*.env; do + cat "$env_file" >> "$TMP_VALUES_FILE" + printf '\n' >> "$TMP_VALUES_FILE" +done +printf '\nenv=%s\n' "$ENV" >> "$TMP_VALUES_FILE" + +# Trova tutti i file .yaml nella directory kubernetes e sottodirectory +find "$YAML_DIR" -type f -name "*.yaml" | while read YAML_FILE; do + + while IFS='=' read -r key value; do + sed -i "s|<$key>|$value|g" "$YAML_FILE" + done < "$TMP_VALUES_FILE" + + while IFS='=' read -r key value; do + sed -i "s|<$key>|$value|g" "$YAML_FILE" + done < "$PROPERTIES_FILE" + + # Sostituzione dinamica della chiave TAG + while IFS='=' read -r key value; do + sed -i "s|<$key>|$value|g" "$YAML_FILE" + done < "$TMP_TAG_FILE" + + echo "Sostituzione completata per file $YAML_FILE ambiente $ENV." + cat $YAML_FILE +done + +rm -f "$TMP_TAG_FILE" "$TMP_VALUES_FILE" diff --git a/pipeline/add-listener.sh b/pipeline/add-listener.sh index d989537..b5ffc24 100644 --- a/pipeline/add-listener.sh +++ b/pipeline/add-listener.sh @@ -12,6 +12,11 @@ set -euo pipefail GATEWAY_NAME="main-gateway" GATEWAY_NS="nginx-gateway" +DNS_API_BASE="http://10.20.1.10:5380/api/zones/records/add" +DNS_API_TOKEN="fb85a1eaa5216eeefda11c0e500cfeb8cfaa1ddda9eaae0781e656eaf52852a6" +DNS_ZONE="italiadatacenter.com" +DNS_IP="10.20.1.100" +DNS_TTL="3600" HOSTNAME_VAL="${1:-}" NAME_VAL="${2:-}" @@ -79,3 +84,14 @@ echo "Listener aggiunto alla risorsa ${GATEWAY_NS}/${GATEWAY_NAME}:" echo " hostname : ${HOSTNAME_VAL}" echo " name : ${NAME_VAL}" echo " secret : ${SECRET_NAME}" + +# Se l'hostname e' del tipo .italiadatacenter.com, registra/aggiorna il record A via API DNS. +if [[ "$HOSTNAME_VAL" =~ ^[a-zA-Z0-9-]+\.italiadatacenter\.com$ ]]; then + echo "Hostname conforme al dominio ${DNS_ZONE}. Aggiorno il record DNS..." + curl --fail --silent --show-error \ + -H "Authorization: Bearer ${DNS_API_TOKEN}" \ + -X GET "${DNS_API_BASE}?domain=${HOSTNAME_VAL}&zone=${DNS_ZONE}&type=A&ipAddress=${DNS_IP}&ttl=${DNS_TTL}&overwrite=true" + echo "Record DNS creato/aggiornato: ${HOSTNAME_VAL} -> ${DNS_IP}" +else + echo "Hostname fuori formato .${DNS_ZONE}: salto creazione record DNS" +fi diff --git a/pipeline/addlistener.sh b/pipeline/addlistener.sh index 68ad2bd..0eeda21 100644 --- a/pipeline/addlistener.sh +++ b/pipeline/addlistener.sh @@ -1,8 +1,14 @@ #!/usr/bin/env bash set -euo pipefail -# Usa properties.env nella directory corrente, oppure un path passato come primo argomento. -PROPERTIES_FILE="${1:-properties.env}" +# Uso: ./addlistener.sh [env] [properties_file] +# env e' ignorato: endpoint viene sempre letto dalla chiave "endpoint". +ENVIRONMENT="${1:-dev}" +PROPERTIES_FILE="${2:-env/${ENVIRONMENT}/values.env}" + +if [[ -n "$ENVIRONMENT" ]]; then + echo "Ambiente richiesto: $ENVIRONMENT (chiave usata: endpoint)" +fi if [[ ! -f "$PROPERTIES_FILE" ]]; then echo "Warning: file non trovato: $PROPERTIES_FILE" >&2 diff --git a/pipeline/build_container.sh b/pipeline/build_container.sh index 17dd172..11d3b15 100644 --- a/pipeline/build_container.sh +++ b/pipeline/build_container.sh @@ -7,9 +7,26 @@ REPO_NAME=$1 COMMIT_SHA=$(git rev-parse HEAD) REGISTRY_URL=$2 +# Esegui build_src.sh se presente prima della build container +if [ -f "./build_src.sh" ]; then + echo "build_src.sh trovato, lo rendo eseguibile e lo eseguo" + chmod +x ./build_src.sh + ./build_src.sh +fi + +# Controlla se la directory containers esiste +if [ ! -d "containers" ]; then + echo "⚠️ Directory 'containers' non trovata, niente da fare" + exit 0 +fi + for dir in containers/*/; do CONTAINER_NAME=$(basename "$dir") - cp -R src/${CONTAINER_NAME}/. containers/${CONTAINER_NAME}/. + if [ -d "src/${CONTAINER_NAME}" ]; then + cp -R "src/${CONTAINER_NAME}/." "containers/${CONTAINER_NAME}/." + else + echo "Directory src/${CONTAINER_NAME} non trovata, skip copia sorgenti" + fi ls -la $dir # Cerca sia dockerfile che Dockerfile @@ -41,17 +58,23 @@ for dir in containers/*/; do if [ -f "$DOCKERFILE" ]; then if [ -n "$BUILD_PLATFORM" ]; then - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - docker buildx create --driver docker-container --use - docker buildx inspect --bootstrap - docker buildx build --platform "$BUILD_PLATFORM" -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir" --push else - docker build -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir" - docker push "$IMAGE_TAG" - docker push "$IMAGE_TAG_LATEST" + docker buildx build \ + --cache-from=type=registry,ref="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:cache" \ + --cache-to=type=registry,ref="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:cache",mode=max \ + -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" \ + -f "$DOCKERFILE" "$dir" --push fi echo "Build e push completate: $IMAGE_TAG" + + # Cleanup immagini locali dopo il push (buildx --push potrebbe non averle in locale) + docker image rm -f "$IMAGE_TAG" "$IMAGE_TAG_LATEST" >/dev/null 2>&1 || true + echo "Cleanup immagini locali completato: $IMAGE_TAG, $IMAGE_TAG_LATEST" + + # Cleanup globale ad ogni ciclo: immagini inutilizzate e cache builder + docker image prune -af + docker builder prune -af else echo "Dockerfile non trovato in $dir" fi diff --git a/pipeline/build_imagelist.sh b/pipeline/build_imagelist.sh new file mode 100644 index 0000000..b61ec1c --- /dev/null +++ b/pipeline/build_imagelist.sh @@ -0,0 +1,41 @@ +#!/bin/bash +set -e +set -o pipefail + +echo "progetto" $1 +REPO_NAME=$1 +COMMIT_SHA=$(git rev-parse HEAD) +REGISTRY_URL=$2 + +# Controlla se la directory containers esiste +if [ ! -d "containers" ]; then + echo "⚠️ Directory 'containers' non trovata, niente da fare" + exit 0 +fi + +for dir in containers/*/; do + CONTAINER_NAME=$(basename "$dir") + if [ -d "src/${CONTAINER_NAME}" ]; then + cp -R "src/${CONTAINER_NAME}/." "containers/${CONTAINER_NAME}/." + else + echo "Directory src/${CONTAINER_NAME} non trovata, skip copia sorgenti" + fi + ls -la $dir + + # Cerca sia dockerfile che Dockerfile + if [ -f "$dir/dockerfile" ]; then + DOCKERFILE="$dir/dockerfile" + elif [ -f "$dir/Dockerfile" ]; then + DOCKERFILE="$dir/Dockerfile" + else + echo "Dockerfile non trovato in $dir" + continue + fi + + + + IMAGE_TAG="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:${COMMIT_SHA}" + IMAGE_TAG_LATEST="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:latest" + echo "IMAGE_TAG_${CONTAINER_NAME}=$IMAGE_TAG" >> ./imglist + +done \ No newline at end of file diff --git a/pipeline/deploy.sh b/pipeline/deploy.sh index 113c138..e4d1dfb 100644 --- a/pipeline/deploy.sh +++ b/pipeline/deploy.sh @@ -3,6 +3,8 @@ set -euo pipefail # Esegue kubectl apply per ogni sottodirectory di kubernetes separatamente +ENVIRONMENT="${1:-dev}" + YAML_DIR="kubernetes" # --------------------------------------------------------------------------- @@ -57,4 +59,4 @@ done echo "Deploy completato di tutte le directory YAML." echo "Eseguo check su endpoint da pubblicare" -/root/work/pipeline/addlistener.sh +/root/work/pipeline/addlistener.sh "$ENVIRONMENT" diff --git a/todo_list.txt b/todo_list.txt index 203ab65..089fc1c 100644 --- a/todo_list.txt +++ b/todo_list.txt @@ -18,15 +18,32 @@ Kyverno - installazione Kyverno - predisposizione policy per taint autmatica edgenode -->kubeedge - label/taint per progetto git - gestione release +kubeedge - possibilità aggiornamento OS edge node - -git tagging -curl -X 'POST' \ - 'https://git.italiadatacenter.com/api/v1/repos/STS_Lab/idcidp/tags?access_token=65fc5f07365bd3f89c5b9ddca3d2d2e7b3777a88' \ - -H 'accept: application/json' \ - -H 'Content-Type: application/json' \ - -d '{ - "message": "string", - "tag_name": "v1.0", - "target": "ab3e33a214" -}' \ No newline at end of file + git tagging + curl -X 'POST' \ + 'https://git.italiadatacenter.com/api/v1/repos/STS_Lab/idcidp/tags?access_token=65fc5f07365bd3f89c5b9ddca3d2d2e7b3777a88' \ + -H 'accept: application/json' \ + -H 'Content-Type: application/json' \ + -d '{ + "message": "string", + "tag_name": "v1.0", + "target": "ab3e33a214" + }' + + step in pipeline di tagging + + Sporteams Ingestion + runner in container + bottone on/off + sonarqube + ambienti qa/dev + mysql + bricks php,apache,mysql + bricks blank + bricks storage, nfs + services: + link pgadmin con istanza in linea + Kagent -->draft proposta + Knative + \ No newline at end of file diff --git a/utils.txt b/utils.txt index f9dfcc8..784274a 100644 --- a/utils.txt +++ b/utils.txt @@ -46,9 +46,6 @@ EOF kubectl -n demo-apps exec -it swiss-army-knife -- sh -# Source - https://stackoverflow.com/a/59558862 -# Posted by P Ekambaram, modified by community. See post 'Timeline' for change history -# Retrieved 2026-02-28, License - CC BY-SA 4.0 gateway-nginx-nodeport.nginx-gateway.svc.cluster.local:30864 @@ -56,4 +53,14 @@ kubectl exec -n nginx-gateway main-gateway-nginx-6968db7f9f-6v4qg -- ss -tulnp kubectl edit gateway main-gateway -n nginx-gateway -glpat-E67BjdXoKvSEgHG31XZW0GM6MQpvOjEKdTozNzF5OQ8.01.171191k74 +Pulizia disco: +docker system prune -af +docker builder prune -af + + +db postgresql------------------------------------- + +kubectl get clusters.postgresql.cnpg.io -n stsharedservices-dev + +kubectl cnpg hibernate on stpgclusterdev -n stsharedservices-dev +kubectl cnpg hibernate off stpgclusterdev -n stsharedservices-dev