Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ef89f4fbb8 | |||
| e439e06ac4 | |||
| cbf32fff48 | |||
| 90691a5ec7 | |||
| a4210d08c4 | |||
| be080d7511 | |||
| cc8d599ce5 | |||
| a7d1cc3429 | |||
| 934f00d749 | |||
| 9e1686a78d | |||
| 140bd63559 | |||
| 90cc774341 | |||
| db10baf460 | |||
| 53fca60178 | |||
| 8b53c2e70e | |||
|
|
3892692a07 | ||
| 7ec310f161 | |||
| ced5e55698 | |||
| 7cdb02b677 | |||
| 82aed0fdb6 | |||
| 626a1b1f22 | |||
| 3b7c3a9526 | |||
| 0a96827200 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
k8s/deployed_config
|
||||||
31
README.md
31
README.md
@@ -1,3 +1,34 @@
|
|||||||
|
# RUN DOCKER DEMO
|
||||||
|
|
||||||
|
ADD a clean argo
|
||||||
|
```
|
||||||
|
./run_argo.sh
|
||||||
|
```
|
||||||
|
Verify with `kubectl get pods -n argo -w` -> all server are running and 1/1
|
||||||
|
Any problem with this, can be a top problem from your k3s or k8s (FIX IT BEFORE)
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo ./clone_opencloud_microservices.sh demo-alpr
|
||||||
|
cd ./docker
|
||||||
|
./start-demo.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
GO on localhost:8000, prefer a "chromium-browser --disable-web-security" chrome no CORS session to reach img.
|
||||||
|
|
||||||
|
Before launch or to stop properly
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ./docker
|
||||||
|
./stop.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
if you want a linux app :
|
||||||
|
|
||||||
|
```
|
||||||
|
cd ../oc-front
|
||||||
|
./local_run_traefik.sh
|
||||||
|
```
|
||||||
|
|
||||||
# Purpose of this component
|
# Purpose of this component
|
||||||
|
|
||||||
The purpose of oc-deploy, is to deploy all the OC components over a Kubernetes cluster.
|
The purpose of oc-deploy, is to deploy all the OC components over a Kubernetes cluster.
|
||||||
|
|||||||
40
algos-demo/argo-workflow-chu.yaml
Normal file
40
algos-demo/argo-workflow-chu.yaml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Workflow
|
||||||
|
metadata:
|
||||||
|
name: chu-pipeline
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
entrypoint: chu-steps
|
||||||
|
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: chu-data
|
||||||
|
spec:
|
||||||
|
accessModes: ["ReadWriteOnce"]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
|
||||||
|
templates:
|
||||||
|
- name: chu-steps
|
||||||
|
steps:
|
||||||
|
- - name: chu-statistics
|
||||||
|
template: chu-statistics
|
||||||
|
- - name: chu-analyzer
|
||||||
|
template: chu-analyzer
|
||||||
|
|
||||||
|
- name: chu-statistics
|
||||||
|
container:
|
||||||
|
image: opencloudregistry/chu-statistics:latest
|
||||||
|
command: ["chu-statistics"]
|
||||||
|
volumeMounts:
|
||||||
|
- name: chu-data
|
||||||
|
mountPath: /data
|
||||||
|
|
||||||
|
- name: chu-analyzer
|
||||||
|
container:
|
||||||
|
image: opencloudregistry/chu-analyzer:latest
|
||||||
|
command: ["chu-analyzer"]
|
||||||
|
volumeMounts:
|
||||||
|
- name: chu-data
|
||||||
|
mountPath: /data
|
||||||
12
algos-demo/chu-stats-analyzer/Dockerfile
Normal file
12
algos-demo/chu-stats-analyzer/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM golang:1.22-alpine AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY go.mod .
|
||||||
|
COPY main.go .
|
||||||
|
RUN go build -o chu-analyzer .
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
RUN apk --no-cache add ca-certificates tzdata
|
||||||
|
RUN mkdir -p /data
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/chu-analyzer /usr/local/bin/chu-analyzer
|
||||||
|
ENTRYPOINT ["chu-analyzer"]
|
||||||
3
algos-demo/chu-stats-analyzer/go.mod
Normal file
3
algos-demo/chu-stats-analyzer/go.mod
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module chu-stats-analyzer
|
||||||
|
|
||||||
|
go 1.22
|
||||||
204
algos-demo/chu-stats-analyzer/main.go
Normal file
204
algos-demo/chu-stats-analyzer/main.go
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"math"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const dataFile = "/data/chu_stats.json"
|
||||||
|
|
||||||
|
type CHUStats struct {
|
||||||
|
GeneratedAt time.Time `json:"generated_at"`
|
||||||
|
HospitalName string `json:"hospital_name"`
|
||||||
|
Date string `json:"date"`
|
||||||
|
BedsTotal int `json:"beds_total"`
|
||||||
|
BedsOccupied int `json:"beds_occupied"`
|
||||||
|
OccupancyRate float64 `json:"occupancy_rate"`
|
||||||
|
PatientsAdmitted int `json:"patients_admitted"`
|
||||||
|
PatientsDischarge int `json:"patients_discharged"`
|
||||||
|
EmergencyVisits int `json:"emergency_visits"`
|
||||||
|
AvgERWaitMinutes int `json:"avg_er_wait_minutes"`
|
||||||
|
SurgeriesPerformed int `json:"surgeries_performed"`
|
||||||
|
ICUBeds int `json:"icu_beds"`
|
||||||
|
ICUOccupied int `json:"icu_occupied"`
|
||||||
|
MortalityRate float64 `json:"mortality_rate"`
|
||||||
|
InfectionRate float64 `json:"infection_rate"`
|
||||||
|
StaffPresent int `json:"staff_present"`
|
||||||
|
StaffRequired int `json:"staff_required"`
|
||||||
|
PatientSatisfaction float64 `json:"patient_satisfaction"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Check struct {
|
||||||
|
Indicator string `json:"indicator"`
|
||||||
|
Value float64 `json:"value"`
|
||||||
|
Unit string `json:"unit"`
|
||||||
|
Threshold string `json:"threshold"`
|
||||||
|
Conformant bool `json:"conformant"`
|
||||||
|
Severity string `json:"severity"`
|
||||||
|
Message string `json:"message"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Analysis struct {
|
||||||
|
AnalyzedAt time.Time `json:"analyzed_at"`
|
||||||
|
HospitalName string `json:"hospital_name"`
|
||||||
|
StatsDate string `json:"stats_date"`
|
||||||
|
Conformant bool `json:"conformant"`
|
||||||
|
Score int `json:"score"`
|
||||||
|
PassingChecks int `json:"passing_checks"`
|
||||||
|
TotalChecks int `json:"total_checks"`
|
||||||
|
CriticalAlerts int `json:"critical_alerts"`
|
||||||
|
WarningAlerts int `json:"warning_alerts"`
|
||||||
|
Checks []Check `json:"checks"`
|
||||||
|
Summary string `json:"summary"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func round2(v float64) float64 {
|
||||||
|
return math.Round(v*100) / 100
|
||||||
|
}
|
||||||
|
|
||||||
|
func analyze(s CHUStats) Analysis {
|
||||||
|
var checks []Check
|
||||||
|
|
||||||
|
occ := Check{Indicator: "Taux d'occupation des lits", Value: s.OccupancyRate, Unit: "%", Threshold: "< 85%"}
|
||||||
|
switch {
|
||||||
|
case s.OccupancyRate < 85:
|
||||||
|
occ.Conformant, occ.Severity, occ.Message = true, "ok", "Taux d'occupation normal"
|
||||||
|
case s.OccupancyRate < 95:
|
||||||
|
occ.Conformant, occ.Severity, occ.Message = false, "warning", "Taux d'occupation élevé, risque de saturation"
|
||||||
|
default:
|
||||||
|
occ.Conformant, occ.Severity, occ.Message = false, "critical", "Saturation critique des lits hospitaliers"
|
||||||
|
}
|
||||||
|
checks = append(checks, occ)
|
||||||
|
|
||||||
|
er := Check{Indicator: "Temps d'attente aux urgences", Value: float64(s.AvgERWaitMinutes), Unit: "min", Threshold: "< 60 min"}
|
||||||
|
switch {
|
||||||
|
case s.AvgERWaitMinutes < 60:
|
||||||
|
er.Conformant, er.Severity, er.Message = true, "ok", "Temps d'attente aux urgences acceptable"
|
||||||
|
case s.AvgERWaitMinutes < 120:
|
||||||
|
er.Conformant, er.Severity, er.Message = false, "warning", "Temps d'attente aux urgences trop long"
|
||||||
|
default:
|
||||||
|
er.Conformant, er.Severity, er.Message = false, "critical", "Saturation critique des urgences"
|
||||||
|
}
|
||||||
|
checks = append(checks, er)
|
||||||
|
|
||||||
|
icuRate := round2(float64(s.ICUOccupied) / float64(s.ICUBeds) * 100)
|
||||||
|
icu := Check{Indicator: "Taux d'occupation ICU", Value: icuRate, Unit: "%", Threshold: "< 85%"}
|
||||||
|
switch {
|
||||||
|
case icuRate < 85:
|
||||||
|
icu.Conformant, icu.Severity, icu.Message = true, "ok", "Capacité de réanimation suffisante"
|
||||||
|
case icuRate < 95:
|
||||||
|
icu.Conformant, icu.Severity, icu.Message = false, "warning", "Taux d'occupation ICU élevé"
|
||||||
|
default:
|
||||||
|
icu.Conformant, icu.Severity, icu.Message = false, "critical", "Réanimation en situation critique"
|
||||||
|
}
|
||||||
|
checks = append(checks, icu)
|
||||||
|
|
||||||
|
mort := Check{Indicator: "Taux de mortalité hospitalière", Value: s.MortalityRate, Unit: "%", Threshold: "< 2%"}
|
||||||
|
switch {
|
||||||
|
case s.MortalityRate < 2.0:
|
||||||
|
mort.Conformant, mort.Severity, mort.Message = true, "ok", "Taux de mortalité dans les normes"
|
||||||
|
case s.MortalityRate < 4.0:
|
||||||
|
mort.Conformant, mort.Severity, mort.Message = false, "warning", "Taux de mortalité supérieur au seuil recommandé"
|
||||||
|
default:
|
||||||
|
mort.Conformant, mort.Severity, mort.Message = false, "critical", "Taux de mortalité critique — investigation requise"
|
||||||
|
}
|
||||||
|
checks = append(checks, mort)
|
||||||
|
|
||||||
|
infect := Check{Indicator: "Taux d'infection nosocomiale", Value: s.InfectionRate, Unit: "%", Threshold: "< 5%"}
|
||||||
|
switch {
|
||||||
|
case s.InfectionRate < 5.0:
|
||||||
|
infect.Conformant, infect.Severity, infect.Message = true, "ok", "Taux d'infection nosocomiale acceptable"
|
||||||
|
case s.InfectionRate < 8.0:
|
||||||
|
infect.Conformant, infect.Severity, infect.Message = false, "warning", "Taux d'infection nosocomiale préoccupant"
|
||||||
|
default:
|
||||||
|
infect.Conformant, infect.Severity, infect.Message = false, "critical", "Risque infectieux critique — mesures d'urgence requises"
|
||||||
|
}
|
||||||
|
checks = append(checks, infect)
|
||||||
|
|
||||||
|
staffRate := round2(float64(s.StaffPresent) / float64(s.StaffRequired) * 100)
|
||||||
|
staff := Check{Indicator: "Taux de couverture du personnel", Value: staffRate, Unit: "%", Threshold: ">= 80%"}
|
||||||
|
switch {
|
||||||
|
case staffRate >= 80:
|
||||||
|
staff.Conformant, staff.Severity, staff.Message = true, "ok", "Personnel suffisant"
|
||||||
|
case staffRate >= 70:
|
||||||
|
staff.Conformant, staff.Severity, staff.Message = false, "warning", "Manque de personnel, vigilance requise"
|
||||||
|
default:
|
||||||
|
staff.Conformant, staff.Severity, staff.Message = false, "critical", "Sous-effectif critique"
|
||||||
|
}
|
||||||
|
checks = append(checks, staff)
|
||||||
|
|
||||||
|
sat := Check{Indicator: "Satisfaction des patients", Value: s.PatientSatisfaction, Unit: "/ 5", Threshold: ">= 3.5 / 5"}
|
||||||
|
switch {
|
||||||
|
case s.PatientSatisfaction >= 3.5:
|
||||||
|
sat.Conformant, sat.Severity, sat.Message = true, "ok", "Satisfaction des patients satisfaisante"
|
||||||
|
case s.PatientSatisfaction >= 3.0:
|
||||||
|
sat.Conformant, sat.Severity, sat.Message = false, "warning", "Satisfaction des patients insuffisante"
|
||||||
|
default:
|
||||||
|
sat.Conformant, sat.Severity, sat.Message = false, "critical", "Satisfaction des patients très mauvaise"
|
||||||
|
}
|
||||||
|
checks = append(checks, sat)
|
||||||
|
|
||||||
|
passing, critical, warning := 0, 0, 0
|
||||||
|
for _, c := range checks {
|
||||||
|
if c.Conformant {
|
||||||
|
passing++
|
||||||
|
}
|
||||||
|
switch c.Severity {
|
||||||
|
case "critical":
|
||||||
|
critical++
|
||||||
|
case "warning":
|
||||||
|
warning++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
total := len(checks)
|
||||||
|
score := passing * 100 / total
|
||||||
|
|
||||||
|
return Analysis{
|
||||||
|
AnalyzedAt: time.Now().UTC(),
|
||||||
|
HospitalName: s.HospitalName,
|
||||||
|
StatsDate: s.Date,
|
||||||
|
Conformant: passing == total,
|
||||||
|
Score: score,
|
||||||
|
PassingChecks: passing,
|
||||||
|
TotalChecks: total,
|
||||||
|
CriticalAlerts: critical,
|
||||||
|
WarningAlerts: warning,
|
||||||
|
Checks: checks,
|
||||||
|
Summary: fmt.Sprintf(
|
||||||
|
"%d/%d indicateurs conformes (score: %d%%) — %d alerte(s) critique(s), %d avertissement(s)",
|
||||||
|
passing, total, score, critical, warning,
|
||||||
|
),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
for i := range []int{0, 1} {
|
||||||
|
data, err := os.ReadFile(strings.ReplaceAll(dataFile, "stats", "stats"+fmt.Sprintf("%v", i)))
|
||||||
|
if err != nil {
|
||||||
|
if os.IsNotExist(err) {
|
||||||
|
log.Fatalf("stats file not found at %s — run chu-stats-generator first", dataFile)
|
||||||
|
}
|
||||||
|
log.Fatalf("failed to read stats file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var stats CHUStats
|
||||||
|
if err := json.Unmarshal(data, &stats); err != nil {
|
||||||
|
log.Fatalf("failed to parse stats file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
analysis := analyze(stats)
|
||||||
|
|
||||||
|
result, err := json.MarshalIndent(analysis, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("failed to marshal analysis: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Analysis complete: %s", analysis.Summary)
|
||||||
|
fmt.Println(string(result))
|
||||||
|
}
|
||||||
|
}
|
||||||
12
algos-demo/chu-stats-generator/Dockerfile
Normal file
12
algos-demo/chu-stats-generator/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM golang:1.22-alpine AS builder
|
||||||
|
WORKDIR /app
|
||||||
|
COPY go.mod .
|
||||||
|
COPY main.go .
|
||||||
|
RUN go build -o chu-statistics .
|
||||||
|
|
||||||
|
FROM alpine:latest
|
||||||
|
RUN apk --no-cache add ca-certificates tzdata
|
||||||
|
RUN mkdir -p /data
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=builder /app/chu-statistics /usr/local/bin/chu-statistics
|
||||||
|
ENTRYPOINT ["chu-statistics"]
|
||||||
3
algos-demo/chu-stats-generator/go.mod
Normal file
3
algos-demo/chu-stats-generator/go.mod
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module chu-stats-generator
|
||||||
|
|
||||||
|
go 1.22
|
||||||
96
algos-demo/chu-stats-generator/main.go
Normal file
96
algos-demo/chu-stats-generator/main.go
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"math"
|
||||||
|
"math/rand"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const dataFile = "/data/chu_stats.json"
|
||||||
|
|
||||||
|
type CHUStats struct {
|
||||||
|
GeneratedAt time.Time `json:"generated_at"`
|
||||||
|
HospitalName string `json:"hospital_name"`
|
||||||
|
Date string `json:"date"`
|
||||||
|
BedsTotal int `json:"beds_total"`
|
||||||
|
BedsOccupied int `json:"beds_occupied"`
|
||||||
|
OccupancyRate float64 `json:"occupancy_rate"`
|
||||||
|
PatientsAdmitted int `json:"patients_admitted"`
|
||||||
|
PatientsDischarge int `json:"patients_discharged"`
|
||||||
|
EmergencyVisits int `json:"emergency_visits"`
|
||||||
|
AvgERWaitMinutes int `json:"avg_er_wait_minutes"`
|
||||||
|
SurgeriesPerformed int `json:"surgeries_performed"`
|
||||||
|
ICUBeds int `json:"icu_beds"`
|
||||||
|
ICUOccupied int `json:"icu_occupied"`
|
||||||
|
MortalityRate float64 `json:"mortality_rate"`
|
||||||
|
InfectionRate float64 `json:"infection_rate"`
|
||||||
|
StaffPresent int `json:"staff_present"`
|
||||||
|
StaffRequired int `json:"staff_required"`
|
||||||
|
PatientSatisfaction float64 `json:"patient_satisfaction"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func round2(v float64) float64 {
|
||||||
|
return math.Round(v*100) / 100
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateStats() CHUStats {
|
||||||
|
rng := rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
|
||||||
|
bedsTotal := 800 + rng.Intn(400)
|
||||||
|
occupancyPct := 0.65 + rng.Float64()*0.32
|
||||||
|
bedsOccupied := int(float64(bedsTotal) * occupancyPct)
|
||||||
|
|
||||||
|
icuBeds := 40 + rng.Intn(30)
|
||||||
|
icuOccupancyPct := 0.60 + rng.Float64()*0.38
|
||||||
|
icuOccupied := int(float64(icuBeds) * icuOccupancyPct)
|
||||||
|
|
||||||
|
staffRequired := 600 + rng.Intn(300)
|
||||||
|
staffCoverage := 0.65 + rng.Float64()*0.40
|
||||||
|
staffPresent := int(float64(staffRequired) * staffCoverage)
|
||||||
|
|
||||||
|
return CHUStats{
|
||||||
|
GeneratedAt: time.Now().UTC(),
|
||||||
|
HospitalName: "CHU Demo",
|
||||||
|
Date: time.Now().Format("2006-01-02"),
|
||||||
|
BedsTotal: bedsTotal,
|
||||||
|
BedsOccupied: bedsOccupied,
|
||||||
|
OccupancyRate: round2(occupancyPct * 100),
|
||||||
|
PatientsAdmitted: 50 + rng.Intn(120),
|
||||||
|
PatientsDischarge: 40 + rng.Intn(120),
|
||||||
|
EmergencyVisits: 80 + rng.Intn(150),
|
||||||
|
AvgERWaitMinutes: 15 + rng.Intn(130),
|
||||||
|
SurgeriesPerformed: 10 + rng.Intn(50),
|
||||||
|
ICUBeds: icuBeds,
|
||||||
|
ICUOccupied: icuOccupied,
|
||||||
|
MortalityRate: round2(0.3 + rng.Float64()*4.5),
|
||||||
|
InfectionRate: round2(0.5 + rng.Float64()*9.0),
|
||||||
|
StaffPresent: staffPresent,
|
||||||
|
StaffRequired: staffRequired,
|
||||||
|
PatientSatisfaction: round2(2.0 + rng.Float64()*3.0),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
for i, stats := range []CHUStats{generateStats(), generateStats()} {
|
||||||
|
data, err := json.MarshalIndent(stats, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("failed to marshal stats: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := os.MkdirAll("/data", 0755); err != nil {
|
||||||
|
log.Fatalf("failed to create data dir: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := os.WriteFile(strings.ReplaceAll(dataFile, "stats", "stats"+fmt.Sprintf("%v", i)), data, 0644); err != nil {
|
||||||
|
log.Fatalf("failed to write stats file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("Stats saved to %s", dataFile)
|
||||||
|
fmt.Println(string(data))
|
||||||
|
}
|
||||||
|
}
|
||||||
22
datas/add.sh
Normal file
22
datas/add.sh
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
DB="DC_myDC"
|
||||||
|
CONTAINER="mongo"
|
||||||
|
|
||||||
|
echo "📌 Dropping database '$DB'..."
|
||||||
|
docker exec -i $CONTAINER mongosh --eval "db.getSiblingDB('$DB').dropDatabase()"
|
||||||
|
|
||||||
|
echo "📌 Copying datas/ to container..."
|
||||||
|
docker cp ./datas $CONTAINER:/datas
|
||||||
|
|
||||||
|
echo "📌 Importing JSON files..."
|
||||||
|
for i in ./datas/*.json; do
|
||||||
|
filename=$(basename "$i")
|
||||||
|
collection="${filename%.json}"
|
||||||
|
|
||||||
|
echo "→ Importing '$filename' into collection '$collection'..."
|
||||||
|
docker exec -i $CONTAINER sh -c \
|
||||||
|
"mongoimport --jsonArray --db $DB --collection $collection --file /datas/$filename --drop"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "✔ Done!"
|
||||||
1
datas/demo-alpr/collaborative_area.json
Normal file
1
datas/demo-alpr/collaborative_area.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","abstractobject":{"id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","name":"test","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":{"$date":"2025-01-27T10:41:47.741Z"},"update_date":{"$date":"2025-01-27T10:41:47.741Z"},"updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":0},"description":"Proto Collaborative area example","collaborative_area":{},"workflows":["58314c99-c595-4ca2-8b5e-822a6774efed"],"allowed_peers_group":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"workspaces":[]}]
|
||||||
1
datas/demo-alpr/compute_resource.json
Normal file
1
datas/demo-alpr/compute_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
datas/demo-alpr/data_resource.json
Normal file
1
datas/demo-alpr/data_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
datas/demo-alpr/peer.json
Normal file
1
datas/demo-alpr/peer.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"c0cece97-7730-4c2a-8c20-a30944564106","failed_execution":null,"abstractobject":{"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,"id":"c0cece97-7730-4c2a-8c20-a30944564106","name":"local","is_draft":false,"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},"url":"http://localhost:8000","wallet_address":"my-wallet","public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAw2pdG6wMtuLcP0+k1LFvIb0DQo/oHW2uNJaEJK74plXqp4ztz2dR\nb+RQHFLeLuqk4i/zc3b4K3fKPXSlwnVPJCwzPrnyT8jYGOZVlWlETiV9xeJhu6s/\nBh6g1PWz75XjjwV50iv/CEiLNBT23f/3J44wrQzygqNQCiQSALdxWLAEl4l5kHSa\n9oMyV70/Uql94/ayMARZsHgp9ZvqQKbkZPw6yzVMfCBxQozlNlo315OHevudhnhp\nDRjN5I7zWmqYt6rbXJJC7Y3Izdvzn7QI88RqjSRST5I/7Kz3ndCqrOnI+OQUE5NT\nREyQebphvQfTDTKlRPXkdyktdK2DH28Zj6ZF3yjQvN35Q4zhOzlq77dO5IhhopI7\nct8dZH1T1nYkvdyCA/EVMtQsASmBOitH0Y0ACoXQK5Kb6nm/TcM/9ZSJUNiEMuy5\ngBZ3YKE9oa4cpTpPXwcA+S/cU7HPNnQAsvD3iJi8GTW9uJs84pn4/WhpQqmXd4rv\nhKWECCN3fHy01fUs/U0PaSj2jDY/kQVeXoikNMzPUjdZd9m816TIBh3v3aVXCH/0\niTHHAxctvDgMRb2fpvRJ/wwnYjFG9RpamVFDMvC9NffuYzWAA9IRIY4cqgerfHrV\nZ2HHiPTDDvDAIsvImXZc/h7mXN6m3RCQ4Qywy993wd9gUdgg/qnynHcCAwEAAQ==\n-----END RSA PUBLIC KEY-----\n","state":1}]
|
||||||
1
datas/demo-alpr/processing_resource.json
Normal file
1
datas/demo-alpr/processing_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
datas/demo-alpr/storage_resource.json
Normal file
1
datas/demo-alpr/storage_resource.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","name":"IRT risk database","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT risk database.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"env":[{"attr":"source","readonly":true}],"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[{"resourcepartnership":{"namespace":"default","peer_groups":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"pricing_profiles":[{"pricing":{"price":50,"currency":"EUR","buying_strategy":0,"time_pricing_strategy":0}}]}}]},"source":"/mnt/vol","local":false,"security_level":"public","size":50,"size_type":3,"redundancy":"RAID5","throughput":"r:200,w:150"}]},"storage_type":5,"acronym":"DC_myDC"},{"_id":"e726020a-b68e-4abc-ab36-c3640ea3f557","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"e726020a-b68e-4abc-ab36-c3640ea3f557","name":"IRT local file storage","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT local file storage.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"resourceinstance":{"env":[{"attr":"source","readonly":true}],"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[{"resourcepartnership":{"namespace":"default","peer_groups":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"pricing_profiles":[{"pricing":{"price":50,"currency":"EUR","buying_strategy":0,"time_pricing_strategy":0}}]}}]},"source":"/mnt/vol","local":true,"security_level":"public","size":500,"size_type":0,"encryption":true,"redundancy":"RAID5S","throughput":"r:300,w:350"}]},"storage_type":5,"acronym":"DC_myDC"}]
|
||||||
1
datas/demo-alpr/workflow.json
Normal file
1
datas/demo-alpr/workflow.json
Normal file
File diff suppressed because one or more lines are too long
19
deployed_config
Normal file
19
deployed_config
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
clusters:
|
||||||
|
- cluster:
|
||||||
|
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJT0lhTzFqdnRET0F3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRFeE1UTXhNVFU0TVRaYUZ3MHpOVEV4TVRFeE1qQXpNVFphTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUNsVGxkUEozTkpON0wyblVtbDFLM3pNL21PV3VLN0FKZzBjNktJY01nZFhoaEF3Z0FPRzFuUnZhRG8KL3N3ODBweUFjbEJSbzg2bnlyM1d6UUVYa1hTTDY2bFV6LzJzaHh5QlliejJXTDlZeUZGVmxwSzlPY3BRQjVIegpURUNrNStIY28rK1NJVndXUHc0dCtQZXhsb2VpaHZhUUJvUE54d2lxWjhhWG50NUljd0lXU1ZqMVVsT1p1NmhwCnA3VUVuS0dhTWl3Zm5Zb2o4MmNvUVFEdFlEWi9MQS80L3V1UzVlUFZKaTBpb1dXMGduTWdzUm1IUzltY3cvZzkKK1hYVm5vN1lLekYvRjEyeTZPQ0YrOUpGd2JqWmFiVlJhc21rQjZyTFZ1N2FsMi9TQ3VyaitEWk5Mcys5WHVTYgpFb2I2UE8rQlhlNmJDdGp5aWZvZmJ2TExXREc5QWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTd2oyczRpUG9rV0FnSFlNQ1czZ2NxMEEzNlZ6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQWc3ZW9BTWRlZgpwN21IYVFnR1F2YnRQRHVQY2REa2J1NjVKWDI2ZzhNMy9WMlovaEp4MlpqVE0wdTZmNExuOUFnc1p0R3dhL1RRClp0aGRpQWdWdDRuNjZBZ1lLQS8yYlNBbVNWZ1R0cngyd29xN2VzbnJjc1VUcm5ISXptVS9TR01CVzNtTlZnd0sKWnpLN3ZuTm9jaHAzYzNDa0xmbWFXeWpMUjljVXVWejB0T3psa0p5SDB6OUNrQVVXdmVJZ3VTR2Y2WWtManRPZQpvdld3ZHJUcTlLaGQ2SEVXa0lIM241QjNDbTF0aXE0bGFuaVJERkhheWk1enRBSDBYME1UOUhaNGszR0ErdXA4CkZJZXdubDJXTmJoVGxraXdhMzRRTUhDelhpUXdGTThjODUwTnJGNXFOSEVTbUMzeWtGdjk3VlNqOW8wb3pPS3YKSWlERkRVSTZybG0rCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
||||||
|
server: https://127.0.0.1:36289
|
||||||
|
name: kind-opencloud
|
||||||
|
contexts:
|
||||||
|
- context:
|
||||||
|
cluster: kind-opencloud
|
||||||
|
user: kind-opencloud
|
||||||
|
name: kind-opencloud
|
||||||
|
current-context: kind-opencloud
|
||||||
|
kind: Config
|
||||||
|
users:
|
||||||
|
- name: kind-opencloud
|
||||||
|
user:
|
||||||
|
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJVnpzcEVlN3Z2eFF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRFeE1UTXhNVFU0TVRaYUZ3MHlOakV4TVRNeE1qQXpNVFphTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEV2s3YlkKYWVYQjJGaUczSjc1Zk5iaGkxQkhkTTdrNk8yQ0p1WkJydzE0UldSNWZ2YnZUNHVBRm1LZ0VFWHk0angvaWdwOQpFUm9QUmFxUFoxQSs0N21HRUl0bjdSdFFuY0k2N3FMSUxnUUU4ZkhWTE9GU0hVRmV0S05tbGxZNEErWDVRejZmCjBHdExBZzNoMlc4bmtibGtzakNVQjR3SEF5ZnMrM1dtZmJRb0YzcmU5NUlKMDZCY2NtOTgyZTFVUUpsZ1YzaW4KN0pQdlRDYmp0bkR1UmV4VXpyazJsK1JHWjVHYitaZEs3Z1QvS2MvdFhONjVIYTRiTHc2aFR4RzdxZlB5dnlSdAphblVYcHQ5SVNSd3BPc2R6YjF1RkZTYUN6V1FBWUNJc3RpeWs1bkszVWJwL1ZLS2trTFlub2NVbjdKNUtOdDJFCjhTcTZ1N2RjRWNqZFBaUWhBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRkxDUGF6aUkraVJZQ0FkZwp3SmJlQnlyUURmcFhNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJjSUEyeE9rYXk4aTlLS3pRWUh5bmM5a2xyCmU4ZEN1aHpEUWhGbVhYK3pmeTk3dnRaSnlEWFp4TlN0MlRoS24xeE5KckNKVkxPWTAxV0FDU2JNZm5wRGdxVjgKUWZjRXVFUHdYSithMUV0ZmpsajZPTU41Q0RvYWJnRUllSkhxVkhrZkJzdE5icXFrTEppUThvZmh2VDc4TE1Bcwp2emJNTnd5L0ZXOVBVK0YvUGJkOEdEZkVPWHU3UFJzbmV5Q0JHVXhoNThOM2lmNFhnOXh6L3hwM2EvNE1hK28vClc2RklOUUNkNjVzcVFSWEx1U3VpRjlTTG9peUtYdmJUb1UxNU9YZTNOWFNWTjNOdUdRWmlZWDU4OTFyZGtpZFIKL1NuN3VTTzJDWXNPK3l4QWlqbUZhQmZIeWpNUlZKak51WnpSbStwTDdoODFmNFQ5dDJ1MWpQeVpPbGRiCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
||||||
|
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBMXBPMjJHbmx3ZGhZaHR5ZStYelc0WXRRUjNUTzVPanRnaWJtUWE4TmVFVmtlWDcyCjcwK0xnQlppb0JCRjh1SThmNG9LZlJFYUQwV3FqMmRRUHVPNWhoQ0xaKzBiVUozQ091Nml5QzRFQlBIeDFTemgKVWgxQlhyU2pacFpXT0FQbCtVTStuOUJyU3dJTjRkbHZKNUc1WkxJd2xBZU1Cd01uN1B0MXBuMjBLQmQ2M3ZlUwpDZE9nWEhKdmZObnRWRUNaWUZkNHAreVQ3MHdtNDdadzdrWHNWTTY1TnBma1JtZVJtL21YU3U0RS95blA3VnplCnVSMnVHeThPb1U4UnU2bno4cjhrYldwMUY2YmZTRWtjS1RySGMyOWJoUlVtZ3Mxa0FHQWlMTFlzcE9aeXQxRzYKZjFTaXBKQzJKNkhGSit5ZVNqYmRoUEVxdXJ1M1hCSEkzVDJVSVFJREFRQUJBb0lCQUFkSElhWldkU29DMEt5RwpVc2dMTEJpZ245dVo3U013enFRaG9LRllDQ0RDV0hBOGdRWHpPenZnRzlQcVZBMElaUWZvWW9jRkZrNnY5Mk1xCkhHWjlxbjhQRkVOZjlKTmlrOElVUjZZbGdCSm1NdzhldzJldkZxd0QwWFQ3SXJmVXFLOWJKZ1p5b2I1U0RBUW8KaFU5MkdhL1RmQTFSUjR1OHJOVXFDWlFEamN3OFFSQTQ4SDBzOTJkU252QkN1SmJrQ0VIYXVtQTYwQVlsNHNMOApzS0o0NytFc29WTWZhK1dCOCsybnRYMHFqQlhLM1Yvc1UyZWJTN0tYTGZhVkg5Z21oU01LMFd2dG9peDRRQzlEClViV3RaTCtoSGN6WWxmcjZaYWQxeEFsaHRXYnNDS3p3ZWdjOGxQbVBqSUJmMUU0bjRDQW1OMmJ5R00wUlRrT1QKWHdvdWdEOENnWUVBNGVISWQ0Zy9FV3k0dmx0NGxUN2FnOFJKaVhxMHBOQXVDdTRBL25tVWpnTVVVcFFPbmd6cAora3d6ZjFNSUJnVGR0ejlHNU1zNmd6UHgxaTlYblVOZ1hEUlRuWTRSZkZ3Q256NXVNcW5LZDd3Njhwem9acUxGCjJpSVZ6SmtGUmVoaTNVbXVLWnJmRnJKekYrOFArMGtmZmpjNjcvZkF1c2pnellFbWl5dGxmQnNDZ1lFQTh6QU0KdUh3VG1WMC9aRFlyUUYxLzA2R1ZqbzRtT2Z4S0loUVBxdDZleVNuWElySGlBbUVnTjFOWTc1UHRtMGVVdXF0bApDanU4dmp4aHd0UUF6NnUwNEptTldpTzdZL0ZiYlVKNnAxcHJYaURVWXYvUkRwK3FHa1I1SExsd0gvWENrYzIxCnpnREhJMlVXMzZCUk4wMFhydjdGWThxaHNqU0dlZU1Gei9pNXZITUNnWUVBcDhJSklZVmwyYW9XZHdIMlIxbWIKN2xxOGhzZEVIRmVrcW1kakE1d0dVWVpGOUtLVFRKeW90VVVjeGdaRG9qekE4ZFNqOFU1aVVZa2xwZjRaSXVvawpTYlp2RjBlcEF1Uk82amZ5bmR2dVRBalcrdEsvNDJJbWNULzVVcStlOC9HSVkzTFNUNEgvQjV0VzBVS3lhdDArCjczMVRYMTl3bXdpUHRQQ2pVSjdWUzFzQ2dZRUF3NWthSWlocCt5aXRIQVVWdEtkL2NOQytZZktqZkhBWGtHRmkKV0tUR1FqYU0rekxuL2RIdy80N2lNWkJoeEV0R3JQMitQd1RkUW9WK2ZCM1lxVEFLUTd3OW5RcXdaaXB5eHVaNQprTEdCT2l4ZHAyTHEyMEJBcU8vNkdjaHREc2UwdjJFZG9adXVrQ0YyekZjOSs2VGVMN3ByT1dCNXZjUFJoYWU3CnZSTHBFVkVDZ1lFQXAyREYyWlJFRlZmZ3ZGc2dtdHRwVjFMemd2Qi9Fb0lFMTFpMmFPelZGTzRLb3pabWpHVlAKaTB6T3VlaVBsZmNCYU5ZanRIbkxrRUpYeGVwYm9sSnlvQUdWV0o2b2grcFhON2I5TURJVUhVV0E3ZFArc1NlMwpvS29adS9TVGdJa1VQb2xwa2lJNjJrRXBFdXE4bjRYOFVhUWV5M1E4c1VWNHpYM0dSa3d2QkFZPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
|
||||||
|
|
||||||
9
docker/db/add.sh
Executable file
9
docker/db/add.sh
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
docker cp ./datas mongo:.
|
||||||
|
|
||||||
|
for i in $(ls ./datas); do
|
||||||
|
firstString=$i
|
||||||
|
echo "ADD file $i in collection ${i/.json/}"
|
||||||
|
docker exec -it mongo sh -c "mongoimport --jsonArray --db DC_myDC --collection ${i/.json/} --file ./datas/$i"
|
||||||
|
done
|
||||||
1
docker/db/datas/collaborative_area.json
Normal file
1
docker/db/datas/collaborative_area.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","abstractobject":{"id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","name":"test","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":{"$date":"2025-01-27T10:41:47.741Z"},"update_date":{"$date":"2025-01-27T10:41:47.741Z"},"updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":0},"description":"Proto Collaborative area example","collaborative_area":{},"workflows":["58314c99-c595-4ca2-8b5e-822a6774efed"],"allowed_peers_group":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"workspaces":[]}]
|
||||||
1
docker/db/datas/compute_resource.json
Normal file
1
docker/db/datas/compute_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas/data_resource.json
Normal file
1
docker/db/datas/data_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas/peer.json
Normal file
1
docker/db/datas/peer.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"c0cece97-7730-4c2a-8c20-a30944564106","failed_execution":null,"abstractobject":{"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,"id":"c0cece97-7730-4c2a-8c20-a30944564106","name":"local","is_draft":false,"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},"url":"http://localhost:8000","wallet_address":"my-wallet","public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAw2pdG6wMtuLcP0+k1LFvIb0DQo/oHW2uNJaEJK74plXqp4ztz2dR\nb+RQHFLeLuqk4i/zc3b4K3fKPXSlwnVPJCwzPrnyT8jYGOZVlWlETiV9xeJhu6s/\nBh6g1PWz75XjjwV50iv/CEiLNBT23f/3J44wrQzygqNQCiQSALdxWLAEl4l5kHSa\n9oMyV70/Uql94/ayMARZsHgp9ZvqQKbkZPw6yzVMfCBxQozlNlo315OHevudhnhp\nDRjN5I7zWmqYt6rbXJJC7Y3Izdvzn7QI88RqjSRST5I/7Kz3ndCqrOnI+OQUE5NT\nREyQebphvQfTDTKlRPXkdyktdK2DH28Zj6ZF3yjQvN35Q4zhOzlq77dO5IhhopI7\nct8dZH1T1nYkvdyCA/EVMtQsASmBOitH0Y0ACoXQK5Kb6nm/TcM/9ZSJUNiEMuy5\ngBZ3YKE9oa4cpTpPXwcA+S/cU7HPNnQAsvD3iJi8GTW9uJs84pn4/WhpQqmXd4rv\nhKWECCN3fHy01fUs/U0PaSj2jDY/kQVeXoikNMzPUjdZd9m816TIBh3v3aVXCH/0\niTHHAxctvDgMRb2fpvRJ/wwnYjFG9RpamVFDMvC9NffuYzWAA9IRIY4cqgerfHrV\nZ2HHiPTDDvDAIsvImXZc/h7mXN6m3RCQ4Qywy993wd9gUdgg/qnynHcCAwEAAQ==\n-----END RSA PUBLIC KEY-----\n","state":1}]
|
||||||
1
docker/db/datas/processing_resource.json
Normal file
1
docker/db/datas/processing_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas/storage_resource.json
Normal file
1
docker/db/datas/storage_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas/workflow.json
Normal file
1
docker/db/datas/workflow.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas_alpr/collaborative_area.json
Normal file
1
docker/db/datas_alpr/collaborative_area.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","abstractobject":{"id":"0b6a375f-be3e-49a9-9827-3c2d5eddb057","name":"test","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":{"$date":"2025-01-27T10:41:47.741Z"},"update_date":{"$date":"2025-01-27T10:41:47.741Z"},"updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":0},"description":"Proto Collaborative area example","collaborative_area":{},"workflows":["58314c99-c595-4ca2-8b5e-822a6774efed"],"allowed_peers_group":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"workspaces":[]}]
|
||||||
1
docker/db/datas_alpr/compute_resource.json
Normal file
1
docker/db/datas_alpr/compute_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas_alpr/data_resource.json
Normal file
1
docker/db/datas_alpr/data_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas_alpr/peer.json
Normal file
1
docker/db/datas_alpr/peer.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"c0cece97-7730-4c2a-8c20-a30944564106","failed_execution":null,"abstractobject":{"update_date":{"$date":"2025-03-27T09:13:13.230Z"},"access_mode":0,"id":"c0cece97-7730-4c2a-8c20-a30944564106","name":"local","is_draft":false,"creation_date":{"$date":"2025-03-27T09:13:13.230Z"}},"url":"http://localhost:8000","wallet_address":"my-wallet","public_key":"-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAw2pdG6wMtuLcP0+k1LFvIb0DQo/oHW2uNJaEJK74plXqp4ztz2dR\nb+RQHFLeLuqk4i/zc3b4K3fKPXSlwnVPJCwzPrnyT8jYGOZVlWlETiV9xeJhu6s/\nBh6g1PWz75XjjwV50iv/CEiLNBT23f/3J44wrQzygqNQCiQSALdxWLAEl4l5kHSa\n9oMyV70/Uql94/ayMARZsHgp9ZvqQKbkZPw6yzVMfCBxQozlNlo315OHevudhnhp\nDRjN5I7zWmqYt6rbXJJC7Y3Izdvzn7QI88RqjSRST5I/7Kz3ndCqrOnI+OQUE5NT\nREyQebphvQfTDTKlRPXkdyktdK2DH28Zj6ZF3yjQvN35Q4zhOzlq77dO5IhhopI7\nct8dZH1T1nYkvdyCA/EVMtQsASmBOitH0Y0ACoXQK5Kb6nm/TcM/9ZSJUNiEMuy5\ngBZ3YKE9oa4cpTpPXwcA+S/cU7HPNnQAsvD3iJi8GTW9uJs84pn4/WhpQqmXd4rv\nhKWECCN3fHy01fUs/U0PaSj2jDY/kQVeXoikNMzPUjdZd9m816TIBh3v3aVXCH/0\niTHHAxctvDgMRb2fpvRJ/wwnYjFG9RpamVFDMvC9NffuYzWAA9IRIY4cqgerfHrV\nZ2HHiPTDDvDAIsvImXZc/h7mXN6m3RCQ4Qywy993wd9gUdgg/qnynHcCAwEAAQ==\n-----END RSA PUBLIC KEY-----\n","state":1}]
|
||||||
1
docker/db/datas_alpr/processing_resource.json
Normal file
1
docker/db/datas_alpr/processing_resource.json
Normal file
File diff suppressed because one or more lines are too long
1
docker/db/datas_alpr/storage_resource.json
Normal file
1
docker/db/datas_alpr/storage_resource.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[{"_id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"04bc70b5-8d7b-44e6-9015-fadfa0fb102d","name":"IRT risk database","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT risk database.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"env":[{"attr":"source","readonly":true}],"resourceinstance":{"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[{"resourcepartnership":{"namespace":"default","peer_groups":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"pricing_profiles":[{"pricing":{"price":50,"currency":"EUR","buying_strategy":0,"time_pricing_strategy":0}}]}}]},"source":"/mnt/vol","local":false,"security_level":"public","size":50,"size_type":3,"redundancy":"RAID5","throughput":"r:200,w:150"}]},"storage_type":5,"acronym":"DC_myDC"},{"_id":"e726020a-b68e-4abc-ab36-c3640ea3f557","abstractinstanciatedresource":{"abstractresource":{"type":"storage","abstractobject":{"id":"e726020a-b68e-4abc-ab36-c3640ea3f557","name":"IRT local file storage","is_draft":false,"creator_id":"c0cece97-7730-4c2a-8c20-a30944564106","creation_date":"2021-09-30T14:00:00.000Z","update_date":"2021-09-30T14:00:00.000Z","updater_id":"c0cece97-7730-4c2a-8c20-a30944564106","access_mode":1},"logo":"https://cloud.o-forge.io/core/deperecated-oc-catalog/raw/branch/main/scripts/local_imgs/IRT local file storage.png","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.","short_description":"S3 compliant IRT file storage","owners":[{"name":"IRT"}]},"instances":[{"resourceinstance":{"env":[{"attr":"source","readonly":true}],"abstractobject":{"id":"7fdccb9c-7090-40a5-bacd-7435bc56c90d","name":"IRT local file storage Marseille"},"location":{"latitude":50.62925,"longitude":3.057256},"country":250,"partnerships":[{"resourcepartnership":{"namespace":"default","peer_groups":{"c0cece97-7730-4c2a-8c20-a30944564106":["*"]},"pricing_profiles":[{"pricing":{"price":50,"currency":"EUR","buying_strategy":0,"time_pricing_strategy":0}}]}}]},"source":"/mnt/vol","local":true,"security_level":"public","size":500,"size_type":0,"encryption":true,"redundancy":"RAID5S","throughput":"r:300,w:350"}]},"storage_type":5,"acronym":"DC_myDC"}]
|
||||||
1
docker/db/datas_alpr/workflow.json
Normal file
1
docker/db/datas_alpr/workflow.json
Normal file
File diff suppressed because one or more lines are too long
@@ -1,88 +0,0 @@
|
|||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
|
||||||
traefik:
|
|
||||||
image: traefik:latest
|
|
||||||
command:
|
|
||||||
- "--api.insecure=true"
|
|
||||||
- "--providers.docker=true"
|
|
||||||
- "--entrypoints.web.address=:80"
|
|
||||||
ports:
|
|
||||||
- "80:80"
|
|
||||||
- "8080:8080"
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
|
|
||||||
mongo:
|
|
||||||
image: mongo:latest
|
|
||||||
ports:
|
|
||||||
- "27017:27017"
|
|
||||||
volumes:
|
|
||||||
- mongo-data:/data/db
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.mongo.rule=PathPrefix(`/mongo`)"
|
|
||||||
- "traefik.http.services.mongo.loadbalancer.server.port=27017"
|
|
||||||
|
|
||||||
nats:
|
|
||||||
image: nats:latest
|
|
||||||
ports:
|
|
||||||
- "4222:4222"
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.nats.rule=PathPrefix(`/nats`)"
|
|
||||||
- "traefik.http.services.nats.loadbalancer.server.port=4222"
|
|
||||||
|
|
||||||
zinc:
|
|
||||||
image: public.ecr.aws/zinclabs/zincsearch:latest
|
|
||||||
ports:
|
|
||||||
- "4080:4080"
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.zinc.rule=PathPrefix(`/zinc`)"
|
|
||||||
- "traefik.http.services.zinc.loadbalancer.server.port=4080"
|
|
||||||
|
|
||||||
dex:
|
|
||||||
image: quay.io/dexidp/dex:latest
|
|
||||||
ports:
|
|
||||||
- "5556:5556"
|
|
||||||
volumes:
|
|
||||||
- ./dex/config.yaml:/etc/dex/cfg/config.yaml
|
|
||||||
command: ["dex", "serve", "/etc/dex/cfg/config.yaml"]
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.dex.rule=PathPrefix(`/dex`)"
|
|
||||||
- "traefik.http.services.dex.loadbalancer.server.port=5556"
|
|
||||||
|
|
||||||
ldap:
|
|
||||||
image: bitnami/openldap
|
|
||||||
ports:
|
|
||||||
- "389:389"
|
|
||||||
environment:
|
|
||||||
- LDAP_ADMIN_USERNAME=admin
|
|
||||||
- LDAP_ADMIN_PASSWORD=adminpassword
|
|
||||||
- LDAP_USERS=user01,user02
|
|
||||||
- LDAP_PASSWORDS=password1,password2
|
|
||||||
|
|
||||||
grafana:
|
|
||||||
image: grafana/grafana:latest
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
environment:
|
|
||||||
GF_SECURITY_ADMIN_PASSWORD: "admin"
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.grafana.rule=PathPrefix(`/grafana`)"
|
|
||||||
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
|
||||||
|
|
||||||
loki:
|
|
||||||
image: grafana/loki:latest
|
|
||||||
ports:
|
|
||||||
- "3100:3100"
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.loki.rule=PathPrefix(`/loki`)"
|
|
||||||
- "traefik.http.services.loki.loadbalancer.server.port=3100"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
mongo-data:
|
|
||||||
56
docker/start-demo.sh
Executable file
56
docker/start-demo.sh
Executable file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
server=$(grep 'server:' ~/.kube/config | awk '{print $2}')
|
||||||
|
|
||||||
|
host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||||
|
port=6443
|
||||||
|
ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
|
||||||
|
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
|
||||||
|
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
|
||||||
|
|
||||||
|
HOST=${2:-"http://localhost:8000"}
|
||||||
|
docker network create oc | true
|
||||||
|
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
cd ./tools && docker compose -f ./docker-compose.dev.yml down --force-recreate -d && docker compose -f ./docker-compose.traefik.yml down --force-recreate -d
|
||||||
|
docker compose -f ./docker-compose.dev.yml up --force-recreate -d && docker compose -f ./docker-compose.traefik.yml up --force-recreate -d && cd ..
|
||||||
|
|
||||||
|
|
||||||
|
cd ./db && ./add.sh && cd ..
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
REPOS=(
|
||||||
|
"oc-auth"
|
||||||
|
"oc-catalog"
|
||||||
|
"oc-datacenter"
|
||||||
|
"oc-monitord"
|
||||||
|
"oc-peer"
|
||||||
|
"oc-shared"
|
||||||
|
"oc-scheduler"
|
||||||
|
"oc-schedulerd"
|
||||||
|
"oc-workflow"
|
||||||
|
"oc-workspace"
|
||||||
|
"oc-front"
|
||||||
|
)
|
||||||
|
for i in "${REPOS[@]}"
|
||||||
|
do
|
||||||
|
echo "Building $i"
|
||||||
|
docker kill $i | true
|
||||||
|
docker rm $i | true
|
||||||
|
cd ./$i
|
||||||
|
cat <<EOT > ./env.env
|
||||||
|
KUBERNETES_SERVICE_HOST=$host
|
||||||
|
KUBE_CA="$ca"
|
||||||
|
KUBE_CERT="$cert"
|
||||||
|
KUBE_DATA="$key"
|
||||||
|
EOT
|
||||||
|
|
||||||
|
|
||||||
|
docker build . -t $i --build-arg=HOST=$HOST --build-arg=KUBERNETES_SERVICE_HOST=$host \
|
||||||
|
--build-arg=KUBERNETES_SERVICE_PORT=$port --build-arg=KUBE_CA=$ca --build-arg=KUBE_CERT=$cert \
|
||||||
|
--build-arg=KUBE_DATA=$key && docker compose up -d
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
|
||||||
|
cd ./oc-deploy/docker/tools && docker compose -f ./docker-compose.dev.yml up hydra-client --force-recreate -d
|
||||||
50
docker/start.sh
Executable file
50
docker/start.sh
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
server=$(grep 'server:' ~/.kube/config | awk '{print $2}')
|
||||||
|
|
||||||
|
host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
|
||||||
|
port=6443
|
||||||
|
ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
|
||||||
|
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
|
||||||
|
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
|
||||||
|
|
||||||
|
export HOST=${HOST:-"http://localhost:8000"}
|
||||||
|
docker network create oc | true
|
||||||
|
|
||||||
|
docker compose down
|
||||||
|
cd ./tools && docker compose -f ./docker-compose.dev.yml up --force-recreate -d
|
||||||
|
docker compose -f ./docker-compose.traefik.yml up --force-recreate -d && cd ..
|
||||||
|
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
REPOS=(
|
||||||
|
"oc-auth"
|
||||||
|
"oc-catalog"
|
||||||
|
"oc-datacenter"
|
||||||
|
"oc-monitord"
|
||||||
|
"oc-peer"
|
||||||
|
"oc-shared"
|
||||||
|
"oc-scheduler"
|
||||||
|
"oc-schedulerd"
|
||||||
|
"oc-workflow"
|
||||||
|
"oc-workspace"
|
||||||
|
"oc-front"
|
||||||
|
)
|
||||||
|
for i in "${REPOS[@]}"
|
||||||
|
do
|
||||||
|
echo "Building $i"
|
||||||
|
docker kill $i | true
|
||||||
|
docker rm $i | true
|
||||||
|
cd ./$i
|
||||||
|
cat > ./env.env <<EOF
|
||||||
|
KUBERNETES_SERVICE_HOST=$hostdocker
|
||||||
|
KUBERNETES_SERVICE_PORT=$port
|
||||||
|
KUBE_CA="$ca"
|
||||||
|
KUBE_CERT="$cert"
|
||||||
|
KUBE_DATA="$key"
|
||||||
|
EOF
|
||||||
|
make run-docker
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
|
||||||
|
cd ./oc-deploy/docker/tools && docker compose -f ./docker-compose.dev.yml up hydra-client --force-recreate -d
|
||||||
50
docker/stop.sh
Executable file
50
docker/stop.sh
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
docker network delete oc | true
|
||||||
|
|
||||||
|
docker compose -f ./tools/docker-compose.traefik.yml down
|
||||||
|
|
||||||
|
TOOLS=(
|
||||||
|
"mongo"
|
||||||
|
"mongo-express"
|
||||||
|
"nats"
|
||||||
|
"loki"
|
||||||
|
"grafana"
|
||||||
|
"hydra-client"
|
||||||
|
"hydra"
|
||||||
|
"keto"
|
||||||
|
"ldap"
|
||||||
|
)
|
||||||
|
|
||||||
|
for i in "${TOOLS[@]}"
|
||||||
|
do
|
||||||
|
echo "kill $i"
|
||||||
|
docker kill $i | true
|
||||||
|
docker rm $i | true
|
||||||
|
done
|
||||||
|
|
||||||
|
docker volume rm tools_oc-data
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
REPOS=(
|
||||||
|
"oc-auth"
|
||||||
|
"oc-catalog"
|
||||||
|
"oc-datacenter"
|
||||||
|
"oc-monitord"
|
||||||
|
"oc-peer"
|
||||||
|
"oc-shared"
|
||||||
|
"oc-scheduler"
|
||||||
|
"oc-schedulerd"
|
||||||
|
"oc-workflow"
|
||||||
|
"oc-workspace"
|
||||||
|
"oc-front"
|
||||||
|
)
|
||||||
|
for i in "${REPOS[@]}"
|
||||||
|
do
|
||||||
|
echo "Kill $i"
|
||||||
|
cd ./$i
|
||||||
|
docker kill $i | true
|
||||||
|
docker rm $i | true
|
||||||
|
make purge | true
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
8
docker/tools/conf/grafana_data_source.yml
Normal file
8
docker/tools/conf/grafana_data_source.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
datasources:
|
||||||
|
- name: Loki
|
||||||
|
type: loki
|
||||||
|
access: proxy
|
||||||
|
url: http://loki:3100
|
||||||
|
isDefault: true
|
||||||
|
jsonData:
|
||||||
|
httpMethod: POST
|
||||||
163
docker/tools/docker-compose.dev.yml
Normal file
163
docker/tools/docker-compose.dev.yml
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
version: '3.4'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mongo:
|
||||||
|
image: 'mongo:latest'
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
ports:
|
||||||
|
- 27017:27017
|
||||||
|
container_name: mongo
|
||||||
|
volumes:
|
||||||
|
- oc-data:/data/db
|
||||||
|
- oc-data:/data/configdb
|
||||||
|
|
||||||
|
mongo-express:
|
||||||
|
image: "mongo-express:latest"
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
- mongo
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
ports:
|
||||||
|
- 8081:8081
|
||||||
|
environment:
|
||||||
|
- ME_CONFIG_BASICAUTH_USERNAME=test
|
||||||
|
- ME_CONFIG_BASICAUTH_PASSWORD=test
|
||||||
|
nats:
|
||||||
|
image: 'nats:latest'
|
||||||
|
container_name: nats
|
||||||
|
ports:
|
||||||
|
- 4222:4222
|
||||||
|
command:
|
||||||
|
- "--debug"
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
loki:
|
||||||
|
image: 'grafana/loki'
|
||||||
|
container_name: loki
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.loki.entrypoints=web"
|
||||||
|
- "traefik.http.routers.loki.rule=PathPrefix(`/tools/loki`)"
|
||||||
|
- "traefik.http.services.loki.loadbalancer.server.port=3100"
|
||||||
|
- "traefik.http.middlewares.loki-stripprefix.stripprefix.prefixes=/tools/loki"
|
||||||
|
- "traefik.http.routers.loki.middlewares=loki-stripprefix"
|
||||||
|
- "traefik.http.middlewares.loki.forwardauth.address=http://oc-auth:8080/oc/forward"
|
||||||
|
ports :
|
||||||
|
- "3100:3100"
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
grafana:
|
||||||
|
image: 'grafana/grafana'
|
||||||
|
container_name: grafana
|
||||||
|
ports:
|
||||||
|
- '3000:3000'
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.grafana.entrypoints=web"
|
||||||
|
- "traefik.http.routers.grafana.rule=PathPrefix(`/tools/grafana`)"
|
||||||
|
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
||||||
|
- "traefik.http.middlewares.grafana-stripprefix.stripprefix.prefixes=/tools/grafana"
|
||||||
|
- "traefik.http.routers.grafana.middlewares=grafana-stripprefix"
|
||||||
|
- "traefik.http.middlewares.grafana.forwardauth.address=http://oc-auth:8080/oc/forward"
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
volumes:
|
||||||
|
- ./conf/grafana_data_source.yml:/etc/grafana/provisioning/datasources/datasource.yml
|
||||||
|
environment:
|
||||||
|
- GF_SECURITY_ADMIN_PASSWORD=pfnirt # Change this to anything but admin to not have a password change page at startup
|
||||||
|
- GF_SECURITY_ADMIN_USER=admin
|
||||||
|
- GF_SECURITY_DISABLE_INITIAL_ADMIN_PASSWORD_CHANGE=true
|
||||||
|
hydra:
|
||||||
|
container_name: hydra
|
||||||
|
image: oryd/hydra:v2.2.0
|
||||||
|
environment:
|
||||||
|
SECRETS_SYSTEM: oc-auth-got-secret
|
||||||
|
LOG_LEAK_SENSITIVE_VALUES: true
|
||||||
|
# OAUTH2_TOKEN_HOOK_URL: http://oc-auth:8080/oc/claims
|
||||||
|
URLS_SELF_ISSUER: http://hydra:4444
|
||||||
|
URLS_SELF_PUBLIC: http://hydra:4444
|
||||||
|
WEBFINGER_OIDC_DISCOVERY_SUPPORTED_SCOPES: profile,email,phone,roles
|
||||||
|
WEBFINGER_OIDC_DISCOVERY_SUPPORTED_CLAIMS: name,family_name,given_name,nickname,email,phone_number
|
||||||
|
DSN: memory
|
||||||
|
command: serve all --dev
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
ports:
|
||||||
|
- "4444:4444"
|
||||||
|
- "4445:4445"
|
||||||
|
deploy:
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
ldap:
|
||||||
|
image: pgarrett/ldap-alpine
|
||||||
|
container_name: ldap
|
||||||
|
volumes:
|
||||||
|
- "./ldap.ldif:/ldif/ldap.ldif"
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
ports:
|
||||||
|
- "390:389"
|
||||||
|
deploy:
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
keto:
|
||||||
|
image: oryd/keto:v0.7.0-alpha.1-sqlite
|
||||||
|
ports:
|
||||||
|
- "4466:4466"
|
||||||
|
- "4467:4467"
|
||||||
|
command: serve -c /home/ory/keto.yml
|
||||||
|
restart: on-failure
|
||||||
|
volumes:
|
||||||
|
- type: bind
|
||||||
|
source: .
|
||||||
|
target: /home/ory
|
||||||
|
container_name: keto
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
|
||||||
|
hydra-client:
|
||||||
|
image: oryd/hydra:v2.2.0
|
||||||
|
container_name: hydra-client
|
||||||
|
environment:
|
||||||
|
HYDRA_ADMIN_URL: http://hydra:4445
|
||||||
|
ORY_SDK_URL: http://hydra:4445
|
||||||
|
command:
|
||||||
|
- create
|
||||||
|
- oauth2-client
|
||||||
|
- --skip-tls-verify
|
||||||
|
- --name
|
||||||
|
- test-client
|
||||||
|
- --secret
|
||||||
|
- oc-auth-got-secret
|
||||||
|
- --response-type
|
||||||
|
- id_token,token,code
|
||||||
|
- --grant-type
|
||||||
|
- implicit,refresh_token,authorization_code,client_credentials
|
||||||
|
- --scope
|
||||||
|
- openid,profile,email,roles
|
||||||
|
- --token-endpoint-auth-method
|
||||||
|
- client_secret_post
|
||||||
|
- --redirect-uri
|
||||||
|
- http://localhost:3000
|
||||||
|
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
deploy:
|
||||||
|
restart_policy:
|
||||||
|
condition: none
|
||||||
|
depends_on:
|
||||||
|
- hydra
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://hydra:4445"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
oc-data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
oc:
|
||||||
|
external: true
|
||||||
26
docker/tools/docker-compose.traefik.yml
Normal file
26
docker/tools/docker-compose.traefik.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
version: '3.9'
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
image: traefik:v3.6
|
||||||
|
container_name: traefik
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- oc
|
||||||
|
command:
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
- "--entrypoints.web.address=:8000"
|
||||||
|
user: root
|
||||||
|
ports:
|
||||||
|
- "8000:8000" # Expose Traefik on port 8000
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
oc-data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
oc:
|
||||||
|
external: true
|
||||||
18
docker/tools/keto.yml
Normal file
18
docker/tools/keto.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
version: v0.6.0-alpha.1
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: debug
|
||||||
|
|
||||||
|
namespaces:
|
||||||
|
- id: 0
|
||||||
|
name: open-cloud
|
||||||
|
|
||||||
|
dsn: memory
|
||||||
|
|
||||||
|
serve:
|
||||||
|
read:
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 4466
|
||||||
|
write:
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 4467
|
||||||
24
docker/tools/ldap.ldif
Normal file
24
docker/tools/ldap.ldif
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
dn: uid=admin,ou=Users,dc=example,dc=com
|
||||||
|
objectClass: inetOrgPerson
|
||||||
|
cn: Admin
|
||||||
|
sn: Istrator
|
||||||
|
uid: admin
|
||||||
|
userPassword: admin
|
||||||
|
mail: admin@example.com
|
||||||
|
ou: Users
|
||||||
|
|
||||||
|
dn: ou=AppRoles,dc=example,dc=com
|
||||||
|
objectClass: organizationalunit
|
||||||
|
ou: AppRoles
|
||||||
|
description: AppRoles
|
||||||
|
|
||||||
|
dn: ou=App1,ou=AppRoles,dc=example,dc=com
|
||||||
|
objectClass: organizationalunit
|
||||||
|
ou: App1
|
||||||
|
description: App1
|
||||||
|
|
||||||
|
dn: cn=traveler,ou=App1,ou=AppRoles,dc=example,dc=com
|
||||||
|
objectClass: groupofnames
|
||||||
|
cn: traveler
|
||||||
|
description: traveler
|
||||||
|
member: uid=admin,ou=Users,dc=example,dc=com
|
||||||
5
env.env
Normal file
5
env.env
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
KUBERNETES_SERVICE_HOST=127.0.0.1
|
||||||
|
KUBERNETES_SERVICE_PORT=6443
|
||||||
|
KUBE_CA=""
|
||||||
|
KUBE_CERT=""
|
||||||
|
KUBE_DATA=""
|
||||||
0
envs/cluster-1.env
Normal file
0
envs/cluster-1.env
Normal file
0
envs/cluster-2.env
Normal file
0
envs/cluster-2.env
Normal file
@@ -1,5 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-catalog
|
|
||||||
description: A Helm chart for deploying the oc-catalog application
|
|
||||||
version: 0.1.0
|
|
||||||
appVersion: "1.0"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-oc-catalog
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ .Chart.Name }}
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: {{ .Values.service.port }}
|
|
||||||
targetPort: {{ .Values.service.targetPort }}
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-oc-catalog
|
|
||||||
labels:
|
|
||||||
app: oc-catalog
|
|
||||||
spec:
|
|
||||||
serviceName: "{{ .Release.Name }}-oc-catalog"
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: oc-catalog
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: oc-catalog
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: oc-catalog
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
env:
|
|
||||||
- name: MONGO_DATABASE
|
|
||||||
value: "DC_myDC"
|
|
||||||
- name: MONGO_URI
|
|
||||||
value: "mongodb://mongo:27017"
|
|
||||||
imagePullSecrets:
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
{{- range .Values.imagePullSecrets }}
|
|
||||||
- name: {{ .name }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: registry.dev.svc.cluster.local:5000/oc-catalog
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
||||||
port: 8087
|
|
||||||
targetPort: 8080
|
|
||||||
|
|
||||||
mongo:
|
|
||||||
database: DC_myDC
|
|
||||||
uri: mongodb://mongo:27017
|
|
||||||
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: regcred
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*.orig
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
||||||
.vscode/
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
dependencies:
|
|
||||||
- name: oc-mongo
|
|
||||||
repository: file://../oc-mongo
|
|
||||||
version: 0.1.0
|
|
||||||
- name: oc-mongo-express
|
|
||||||
repository: file://../oc-mongo-express
|
|
||||||
version: 0.1.0
|
|
||||||
- name: oc-catalog
|
|
||||||
repository: file://../oc-catalog
|
|
||||||
version: 0.1.0
|
|
||||||
digest: sha256:036af8acf7fe0a73f039776d13f63aeb7530e7a8b0febb49fd5e8415ac6672c6
|
|
||||||
generated: "2024-08-27T14:34:41.6038407+02:00"
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-deploy
|
|
||||||
description: A Helm chart to deploy oc-mongo, oc-mongo-express, and oc-catalog together
|
|
||||||
version: 0.1.0
|
|
||||||
dependencies:
|
|
||||||
- name: oc-mongo
|
|
||||||
version: 0.1.0
|
|
||||||
repository: "file://../oc-mongo"
|
|
||||||
- name: oc-mongo-express
|
|
||||||
version: 0.1.0
|
|
||||||
repository: "file://../oc-mongo-express"
|
|
||||||
- name: oc-catalog
|
|
||||||
version: 0.1.0
|
|
||||||
repository: "file://../oc-catalog"
|
|
||||||
Binary file not shown.
@@ -1,5 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-catalog
|
|
||||||
description: A Helm chart for deploying the oc-catalog application
|
|
||||||
version: 0.1.0
|
|
||||||
appVersion: "1.0"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: oc-catalog
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: {{ .Chart.Name }}
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: {{ .Values.service.port }}
|
|
||||||
targetPort: {{ .Values.service.targetPort }}
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-oc-catalog
|
|
||||||
labels:
|
|
||||||
app: oc-catalog
|
|
||||||
spec:
|
|
||||||
serviceName: "oc-catalog"
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: oc-catalog
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: oc-catalog
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: oc-catalog
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
ports:
|
|
||||||
- containerPort: 8080
|
|
||||||
env:
|
|
||||||
- name: MONGO_DATABASE
|
|
||||||
value: "DC_myDC"
|
|
||||||
- name: MONGO_URI
|
|
||||||
value: "mongodb://{{ .Release.Name }}-mongo:27017"
|
|
||||||
imagePullSecrets:
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
{{- range .Values.imagePullSecrets }}
|
|
||||||
- name: {{ .name }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: registry.dev.svc.cluster.local:5000/oc-catalog
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
||||||
port: 8087
|
|
||||||
targetPort: 8080
|
|
||||||
|
|
||||||
mongo:
|
|
||||||
database: DC_myDC
|
|
||||||
uri: mongodb://oc-deploy-mongo:27017
|
|
||||||
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: regcred
|
|
||||||
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-mongo-express
|
|
||||||
description: A Helm chart for deploying mongo-express
|
|
||||||
version: 0.1.0
|
|
||||||
appVersion: "1.0"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: mongo-express
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mongo-express
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: {{ .Values.service.port }}
|
|
||||||
targetPort: {{ .Values.service.targetPort }}
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo-express
|
|
||||||
labels:
|
|
||||||
app: mongo-express
|
|
||||||
spec:
|
|
||||||
serviceName: "mongo-express"
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: mongo-express
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mongo-express
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: mongo-express
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
ports:
|
|
||||||
- containerPort: {{ .Values.service.targetPort }}
|
|
||||||
env:
|
|
||||||
- name: ME_CONFIG_BASICAUTH_USERNAME
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: mongo-secret
|
|
||||||
key: {{ .Values.secret.usernameKey }}
|
|
||||||
- name: ME_CONFIG_BASICAUTH_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: mongo-secret
|
|
||||||
key: {{ .Values.secret.passwordKey }}
|
|
||||||
imagePullSecrets:
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
{{- range .Values.imagePullSecrets }}
|
|
||||||
- name: {{ .name }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: mongo-express
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
service:
|
|
||||||
port: 8081
|
|
||||||
targetPort: 8081
|
|
||||||
type: NodePort
|
|
||||||
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: my-registry-key
|
|
||||||
|
|
||||||
secret:
|
|
||||||
usernameKey: mongo-username
|
|
||||||
passwordKey: mongo-password
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-mongo
|
|
||||||
description: A Helm chart for deploying the oc-mongo component
|
|
||||||
version: 0.1.0
|
|
||||||
appVersion: "1.0"
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: {{ .Values.persistence.name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- {{ .Values.persistence.accessMode }}
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.size }}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo-secret
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
username: {{ .Values.secret.username }}
|
|
||||||
password: {{ .Values.secret.password }}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: mongo
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mongo
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: {{ .Values.service.port }}
|
|
||||||
targetPort: {{ .Values.service.port }}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
serviceName: "mongo"
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: mongo
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: mongo
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
ports:
|
|
||||||
- containerPort: 27017
|
|
||||||
volumeMounts:
|
|
||||||
- name: mongo-persistent-storage
|
|
||||||
mountPath: /data/db
|
|
||||||
- name: mongo-persistent-storage
|
|
||||||
mountPath: /data/configdb
|
|
||||||
volumes:
|
|
||||||
- name: mongo-persistent-storage
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.name }}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: mongo
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
service:
|
|
||||||
port: 27017
|
|
||||||
|
|
||||||
persistence:
|
|
||||||
name: mongo-pvc-helm
|
|
||||||
enabled: true
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
size: 1Gi
|
|
||||||
|
|
||||||
secret:
|
|
||||||
username: dGVzdA== # base64 encoding of 'test'
|
|
||||||
password: dGVzdA== # base64 encoding of 'test'
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
oc-mongo:
|
|
||||||
replicaCount: 1
|
|
||||||
image:
|
|
||||||
repository: registry.dev.svc.cluster.local:5000/mongo
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
service:
|
|
||||||
port: 27017
|
|
||||||
persistence:
|
|
||||||
name: mongo-pvc-helm
|
|
||||||
enabled: true
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
size: 1Gi
|
|
||||||
secret:
|
|
||||||
username: dGVzdA== # base64 encoding of 'test'
|
|
||||||
password: dGVzdA== # base64 encoding of 'test'
|
|
||||||
|
|
||||||
oc-mongo-express:
|
|
||||||
replicaCount: 1
|
|
||||||
image:
|
|
||||||
repository: registry.dev.svc.cluster.local:5000/mongo-express
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
service:
|
|
||||||
port: 8081
|
|
||||||
targetPort: 8081
|
|
||||||
type: NodePort
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: regcred
|
|
||||||
secret:
|
|
||||||
usernameKey: mongo-username
|
|
||||||
passwordKey: mongo-password
|
|
||||||
|
|
||||||
oc-catalog:
|
|
||||||
replicaCount: 1
|
|
||||||
image:
|
|
||||||
repository: registry.dev.svc.cluster.local:5000/oc-catalog
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
service:
|
|
||||||
type: NodePort
|
|
||||||
port: 8087
|
|
||||||
targetPort: 8080
|
|
||||||
mongo:
|
|
||||||
database: DC_myDC
|
|
||||||
uri: mongodb://oc-catalog-mongo:27017
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: regcred
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-mongo-express
|
|
||||||
description: A Helm chart for deploying mongo-express
|
|
||||||
version: 0.1.0
|
|
||||||
appVersion: "1.0"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo-express
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mongo-express
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: {{ .Values.service.port }}
|
|
||||||
targetPort: {{ .Values.service.targetPort }}
|
|
||||||
type: {{ .Values.service.type }}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo-express
|
|
||||||
labels:
|
|
||||||
app: mongo-express
|
|
||||||
spec:
|
|
||||||
serviceName: "{{ .Release.Name }}-mongo-express"
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: mongo-express
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mongo-express
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: mongo-express
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
ports:
|
|
||||||
- containerPort: {{ .Values.service.targetPort }}
|
|
||||||
env:
|
|
||||||
- name: ME_CONFIG_BASICAUTH_USERNAME
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: mongo-secret
|
|
||||||
key: {{ .Values.secret.usernameKey }}
|
|
||||||
- name: ME_CONFIG_BASICAUTH_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: mongo-secret
|
|
||||||
key: {{ .Values.secret.passwordKey }}
|
|
||||||
imagePullSecrets:
|
|
||||||
{{- if .Values.imagePullSecrets }}
|
|
||||||
{{- range .Values.imagePullSecrets }}
|
|
||||||
- name: {{ .name }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: mongo-express
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
service:
|
|
||||||
port: 8081
|
|
||||||
targetPort: 8081
|
|
||||||
type: NodePort
|
|
||||||
|
|
||||||
imagePullSecrets:
|
|
||||||
- name: my-registry-key
|
|
||||||
|
|
||||||
secret:
|
|
||||||
usernameKey: mongo-username
|
|
||||||
passwordKey: mongo-password
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: oc-mongo
|
|
||||||
description: A Helm chart for deploying the oc-mongo component
|
|
||||||
version: 0.1.0
|
|
||||||
appVersion: "1.0"
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: {{ .Values.persistence.name }}
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- {{ .Values.persistence.accessMode }}
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: {{ .Values.persistence.size }}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo-secret
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
username: {{ .Values.secret.username }}
|
|
||||||
password: {{ .Values.secret.password }}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: mongo
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
app: mongo
|
|
||||||
ports:
|
|
||||||
- protocol: TCP
|
|
||||||
port: {{ .Values.service.port }}
|
|
||||||
targetPort: {{ .Values.service.port }}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-mongo
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
serviceName: "{{ .Release.Name }}-mongo"
|
|
||||||
replicas: {{ .Values.replicaCount }}
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: mongo
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: mongo
|
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
|
||||||
ports:
|
|
||||||
- containerPort: 27017
|
|
||||||
volumeMounts:
|
|
||||||
- name: mongo-persistent-storage
|
|
||||||
mountPath: /data/db
|
|
||||||
- name: mongo-persistent-storage
|
|
||||||
mountPath: /data/configdb
|
|
||||||
volumes:
|
|
||||||
- name: mongo-persistent-storage
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: {{ .Values.persistence.name }}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
replicaCount: 1
|
|
||||||
|
|
||||||
image:
|
|
||||||
repository: mongo
|
|
||||||
tag: latest
|
|
||||||
pullPolicy: IfNotPresent
|
|
||||||
|
|
||||||
service:
|
|
||||||
port: 27017
|
|
||||||
|
|
||||||
persistence:
|
|
||||||
name: mongo-pvc-helm
|
|
||||||
enabled: true
|
|
||||||
accessMode: ReadWriteOnce
|
|
||||||
size: 1Gi
|
|
||||||
|
|
||||||
secret:
|
|
||||||
username: dGVzdA== # base64 encoding of 'test'
|
|
||||||
password: dGVzdA== # base64 encoding of 'test'
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# Patterns to ignore when building packages.
|
|
||||||
# This supports shell glob matching, relative path matching, and
|
|
||||||
# negation (prefixed with !). Only one pattern per line.
|
|
||||||
.DS_Store
|
|
||||||
# Common VCS dirs
|
|
||||||
.git/
|
|
||||||
.gitignore
|
|
||||||
.bzr/
|
|
||||||
.bzrignore
|
|
||||||
.hg/
|
|
||||||
.hgignore
|
|
||||||
.svn/
|
|
||||||
# Common backup files
|
|
||||||
*.swp
|
|
||||||
*.bak
|
|
||||||
*.tmp
|
|
||||||
*.orig
|
|
||||||
*~
|
|
||||||
# Various IDEs
|
|
||||||
.project
|
|
||||||
.idea/
|
|
||||||
*.tmproj
|
|
||||||
.vscode/
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
apiVersion: v2
|
|
||||||
name: occhart
|
|
||||||
description: A Helm chart for Kubernetes
|
|
||||||
|
|
||||||
# A chart can be either an 'application' or a 'library' chart.
|
|
||||||
#
|
|
||||||
# Application charts are a collection of templates that can be packaged into versioned archives
|
|
||||||
# to be deployed.
|
|
||||||
#
|
|
||||||
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
|
||||||
# a dependency of application charts to inject those utilities and functions into the rendering
|
|
||||||
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
|
||||||
type: application
|
|
||||||
|
|
||||||
# This is the chart version. This version number should be incremented each time you make changes
|
|
||||||
# to the chart and its templates, including the app version.
|
|
||||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
|
||||||
version: 0.1.0
|
|
||||||
|
|
||||||
# This is the version number of the application being deployed. This version number should be
|
|
||||||
# incremented each time you make changes to the application. Versions are not expected to
|
|
||||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
|
||||||
# It is recommended to use it with quotes.
|
|
||||||
appVersion: "1.16.0"
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: dex
|
|
||||||
labels:
|
|
||||||
app: dex
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: dex
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: dex
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: dex
|
|
||||||
image: quay.io/dexidp/dex:v2.27.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 5556
|
|
||||||
args:
|
|
||||||
- serve
|
|
||||||
- /etc/dex/cfg/config.yaml
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /etc/dex/cfg
|
|
||||||
name: config
|
|
||||||
volumes:
|
|
||||||
- name: config
|
|
||||||
configMap:
|
|
||||||
name: dex-config
|
|
||||||
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: dex
|
|
||||||
labels:
|
|
||||||
app: dex
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 5556
|
|
||||||
selector:
|
|
||||||
app: dex
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: grafana
|
|
||||||
labels:
|
|
||||||
app: grafana
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: grafana
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: grafana
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: grafana
|
|
||||||
image: grafana/grafana:7.5.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: grafana
|
|
||||||
labels:
|
|
||||||
app: grafana
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 3000
|
|
||||||
selector:
|
|
||||||
app: grafana
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: ldap
|
|
||||||
labels:
|
|
||||||
app: ldap
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: ldap
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: ldap
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: ldap
|
|
||||||
image: osixia/openldap:1.5.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 389
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: ldap
|
|
||||||
labels:
|
|
||||||
app: ldap
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 389
|
|
||||||
selector:
|
|
||||||
app: ldap
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: loki
|
|
||||||
labels:
|
|
||||||
app: loki
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: loki
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: loki
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: loki
|
|
||||||
image: grafana/loki:2.2.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 3100
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: loki
|
|
||||||
labels:
|
|
||||||
app: loki
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 3100
|
|
||||||
selector:
|
|
||||||
app: loki
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: mongo
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: mongo
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: mongo
|
|
||||||
image: mongo:4.4
|
|
||||||
ports:
|
|
||||||
- containerPort: 27017
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: mongo
|
|
||||||
labels:
|
|
||||||
app: mongo
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 27017
|
|
||||||
selector:
|
|
||||||
app: mongo
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: nats
|
|
||||||
labels:
|
|
||||||
app: nats
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: nats
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: nats
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: nats
|
|
||||||
image: nats:2.1.9
|
|
||||||
ports:
|
|
||||||
- containerPort: 4222
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: nats
|
|
||||||
labels:
|
|
||||||
app: nats
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 4222
|
|
||||||
selector:
|
|
||||||
app: nats
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: traefik
|
|
||||||
labels:
|
|
||||||
app: traefik
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: traefik
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: traefik
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: traefik
|
|
||||||
image: traefik:v2.4
|
|
||||||
ports:
|
|
||||||
- name: web
|
|
||||||
containerPort: 80
|
|
||||||
- name: admin
|
|
||||||
containerPort: 8080
|
|
||||||
args:
|
|
||||||
- --entrypoints.web.address=:80
|
|
||||||
- --entrypoints.websecure.address=:443
|
|
||||||
- --providers.kubernetescrd
|
|
||||||
- --api
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /etc/traefik
|
|
||||||
name: traefik-config
|
|
||||||
volumes:
|
|
||||||
- name: traefik-config
|
|
||||||
configMap:
|
|
||||||
name: traefik-config
|
|
||||||
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: traefik-ingress
|
|
||||||
annotations:
|
|
||||||
traefik.ingress.kubernetes.io/router.entrypoints: web
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: <your-domain>
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /front
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: front-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- path: /back1
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: back1-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- path: /back2
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: back2-service
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
- path: /mongo
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: mongo
|
|
||||||
port:
|
|
||||||
number: 27017
|
|
||||||
- path: /nats
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: nats
|
|
||||||
port:
|
|
||||||
number: 4222
|
|
||||||
- path: /zinc
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: zinc
|
|
||||||
port:
|
|
||||||
number: 4080
|
|
||||||
- path: /dex
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: dex
|
|
||||||
port:
|
|
||||||
number: 5556
|
|
||||||
- path: /ldap
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: ldap
|
|
||||||
port:
|
|
||||||
number: 389
|
|
||||||
- path: /grafana
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: grafana
|
|
||||||
port:
|
|
||||||
number: 3000
|
|
||||||
- path: /loki
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: loki
|
|
||||||
port:
|
|
||||||
number: 3100
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: traefik
|
|
||||||
labels:
|
|
||||||
app: traefik
|
|
||||||
spec:
|
|
||||||
type: LoadBalancer
|
|
||||||
ports:
|
|
||||||
- port: 80
|
|
||||||
name: web
|
|
||||||
targetPort: 80
|
|
||||||
- port: 8080
|
|
||||||
name: admin
|
|
||||||
targetPort: 8080
|
|
||||||
selector:
|
|
||||||
app: traefik
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: zinc
|
|
||||||
labels:
|
|
||||||
app: zinc
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: zinc
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: zinc
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: zinc
|
|
||||||
image: public.ecr.aws/zinclabs/zinc:latest
|
|
||||||
ports:
|
|
||||||
- containerPort: 4080
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: zinc
|
|
||||||
labels:
|
|
||||||
app: zinc
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 4080
|
|
||||||
selector:
|
|
||||||
app: zinc
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
1. Get the application URL by running these commands:
|
|
||||||
{{- if .Values.ingress.enabled }}
|
|
||||||
{{- range $host := .Values.ingress.hosts }}
|
|
||||||
{{- range .paths }}
|
|
||||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- else if contains "NodePort" .Values.service.type }}
|
|
||||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "occhart.fullname" . }})
|
|
||||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
|
||||||
echo http://$NODE_IP:$NODE_PORT
|
|
||||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
|
||||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
|
||||||
You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "occhart.fullname" . }}'
|
|
||||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "occhart.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
|
||||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
|
||||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
|
||||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "occhart.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
|
||||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
|
||||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
|
||||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
|
||||||
{{- end }}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user