allineamento

This commit is contained in:
alessandro barucci
2026-07-17 10:00:09 +02:00
parent 20d506407a
commit 6ffb202579
24 changed files with 714 additions and 30 deletions

View File

@@ -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
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

View File

@@ -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:

58
add-on/act-runner.yaml Normal file
View File

@@ -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

139
add-on/certm.yaml Normal file
View File

@@ -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

0
add-on/dbgate.docker Normal file
View File

View File

@@ -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

62
add-on/dns.json Normal file
View File

@@ -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"
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

10
add-on/nfs-service.yaml Normal file
View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-backend
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Gi

View File

@@ -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

2
add-on/verdaccio.txt Normal file
View File

@@ -0,0 +1,2 @@
helm repo add verdaccio https://charts.verdaccio.org
helm install npm verdaccio/verdaccio

BIN
kubectl Normal file

Binary file not shown.

3
kubegreen.txt Normal file
View File

@@ -0,0 +1,3 @@
kubegreen
kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml

3
kyverno.txt Normal file
View File

@@ -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

55
pipeline/_customize.sh Normal file
View File

@@ -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"

View File

@@ -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 <server>.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 <server>.${DNS_ZONE}: salto creazione record DNS"
fi

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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"
}'
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

View File

@@ -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