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 sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
rm -f crictl-$VERSION-linux-amd64.tar.gz 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: edge-cleanup.sh:
#!/bin/bash #!/bin/bash
@@ -274,3 +279,17 @@ done
verifica : 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 replicas: 1
resources: resources:
requests: requests:
cpu: 1 cpu: 500m
memory: 1Gi memory: 1Gi
limits: limits:
cpu: 1 cpu: 1
@@ -33,7 +33,7 @@ spec:
collect_statistics_interval = 10000 collect_statistics_interval = 10000
persistence: persistence:
storageClassName: csi-rbdfs-sc storageClassName: csi-rbdfs-sc
storage: "5Gi" storage: "2Gi"
affinity: affinity:
podAntiAffinity: podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution: 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: metadata:
name: dbgate 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 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -33,6 +47,10 @@ spec:
- name: CONNECTIONS - name: CONNECTIONS
value: "" value: ""
volumeMounts:
- name: dbgate-data
mountPath: /root/.dbgate
resources: resources:
requests: requests:
cpu: "100m" cpu: "100m"
@@ -41,6 +59,11 @@ spec:
limits: limits:
cpu: "500m" cpu: "500m"
memory: "512Mi" memory: "512Mi"
volumes:
- name: dbgate-data
configMap:
name: dbgate-data
--- ---
apiVersion: v1 apiVersion: v1
kind: Service 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 ------------------- --- 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 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@@ -100,6 +120,17 @@ spec:
value: pgadmin@italiadatacenter.com value: pgadmin@italiadatacenter.com
- name: PGADMIN_DEFAULT_PASSWORD - name: PGADMIN_DEFAULT_PASSWORD
value: KAYQE1QA7uwUZ8uI 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 apiVersion: v1
kind: Service 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_NAME="main-gateway"
GATEWAY_NS="nginx-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:-}" HOSTNAME_VAL="${1:-}"
NAME_VAL="${2:-}" NAME_VAL="${2:-}"
@@ -79,3 +84,14 @@ echo "Listener aggiunto alla risorsa ${GATEWAY_NS}/${GATEWAY_NAME}:"
echo " hostname : ${HOSTNAME_VAL}" echo " hostname : ${HOSTNAME_VAL}"
echo " name : ${NAME_VAL}" echo " name : ${NAME_VAL}"
echo " secret : ${SECRET_NAME}" 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 #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
# Usa properties.env nella directory corrente, oppure un path passato come primo argomento. # Uso: ./addlistener.sh [env] [properties_file]
PROPERTIES_FILE="${1:-properties.env}" # 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 if [[ ! -f "$PROPERTIES_FILE" ]]; then
echo "Warning: file non trovato: $PROPERTIES_FILE" >&2 echo "Warning: file non trovato: $PROPERTIES_FILE" >&2

View File

@@ -7,9 +7,26 @@ REPO_NAME=$1
COMMIT_SHA=$(git rev-parse HEAD) COMMIT_SHA=$(git rev-parse HEAD)
REGISTRY_URL=$2 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 for dir in containers/*/; do
CONTAINER_NAME=$(basename "$dir") 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 ls -la $dir
# Cerca sia dockerfile che Dockerfile # Cerca sia dockerfile che Dockerfile
@@ -41,17 +58,23 @@ for dir in containers/*/; do
if [ -f "$DOCKERFILE" ]; then if [ -f "$DOCKERFILE" ]; then
if [ -n "$BUILD_PLATFORM" ]; 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 docker buildx build --platform "$BUILD_PLATFORM" -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir" --push
else else
docker build -t "$IMAGE_TAG" -t "$IMAGE_TAG_LATEST" -f "$DOCKERFILE" "$dir" docker buildx build \
docker push "$IMAGE_TAG" --cache-from=type=registry,ref="${REGISTRY_URL}/${REPO_NAME}/${CONTAINER_NAME}:cache" \
docker push "$IMAGE_TAG_LATEST" --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 fi
echo "Build e push completate: $IMAGE_TAG" 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 else
echo "Dockerfile non trovato in $dir" echo "Dockerfile non trovato in $dir"
fi 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 # Esegue kubectl apply per ogni sottodirectory di kubernetes separatamente
ENVIRONMENT="${1:-dev}"
YAML_DIR="kubernetes" YAML_DIR="kubernetes"
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@@ -57,4 +59,4 @@ done
echo "Deploy completato di tutte le directory YAML." echo "Deploy completato di tutte le directory YAML."
echo "Eseguo check su endpoint da pubblicare" echo "Eseguo check su endpoint da pubblicare"
/root/work/pipeline/addlistener.sh /root/work/pipeline/addlistener.sh "$ENVIRONMENT"

View File

@@ -18,7 +18,7 @@ Kyverno - installazione
Kyverno - predisposizione policy per taint autmatica edgenode Kyverno - predisposizione policy per taint autmatica edgenode
-->kubeedge - label/taint per progetto -->kubeedge - label/taint per progetto
git - gestione release git - gestione release
kubeedge - possibilità aggiornamento OS edge node
git tagging git tagging
curl -X 'POST' \ curl -X 'POST' \
@@ -30,3 +30,20 @@ curl -X 'POST' \
"tag_name": "v1.0", "tag_name": "v1.0",
"target": "ab3e33a214" "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 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 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 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