raijin-server 0.3.4__tar.gz → 0.3.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {raijin_server-0.3.4/src/raijin_server.egg-info → raijin_server-0.3.7}/PKG-INFO +1 -1
- {raijin_server-0.3.4 → raijin_server-0.3.7}/setup.cfg +1 -1
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/__init__.py +1 -1
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/cli.py +6 -25
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/healthchecks.py +1 -55
- raijin_server-0.3.7/src/raijin_server/minio_utils.py +562 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/__init__.py +4 -6
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/full_install.py +11 -19
- raijin_server-0.3.7/src/raijin_server/modules/harbor.py +669 -0
- raijin_server-0.3.7/src/raijin_server/modules/secrets.py +589 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/velero.py +49 -2
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/validators.py +1 -1
- {raijin_server-0.3.4 → raijin_server-0.3.7/src/raijin_server.egg-info}/PKG-INFO +1 -1
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/SOURCES.txt +2 -3
- raijin_server-0.3.4/src/raijin_server/modules/apokolips_demo.py +0 -414
- raijin_server-0.3.4/src/raijin_server/modules/observability_dashboards.py +0 -233
- raijin_server-0.3.4/src/raijin_server/modules/observability_ingress.py +0 -246
- raijin_server-0.3.4/src/raijin_server/modules/secrets.py +0 -293
- {raijin_server-0.3.4 → raijin_server-0.3.7}/LICENSE +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/README.md +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/pyproject.toml +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/config.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/module_manager.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/bootstrap.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/calico.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/cert_manager.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/essentials.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/firewall.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/grafana.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/hardening.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/harness.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/internal_dns.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/istio.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/kafka.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/kong.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/kubernetes.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/loki.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/metallb.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/minio.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/network.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/prometheus.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/sanitize.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/ssh_hardening.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/traefik.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/vpn.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/vpn_client.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/__init__.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/checklist.sh +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/install.sh +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/log_size_metric.sh +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/pre-deploy-check.sh +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/utils.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/dependency_links.txt +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/entry_points.txt +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/requires.txt +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/top_level.txt +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/tests/test_full_install_sequence.py +0 -0
- {raijin_server-0.3.4 → raijin_server-0.3.7}/tests/test_registry.py +0 -0
|
@@ -17,7 +17,6 @@ from rich.table import Table
|
|
|
17
17
|
|
|
18
18
|
from raijin_server import __version__
|
|
19
19
|
from raijin_server.modules import (
|
|
20
|
-
apokolips_demo,
|
|
21
20
|
bootstrap,
|
|
22
21
|
calico,
|
|
23
22
|
cert_manager,
|
|
@@ -25,6 +24,7 @@ from raijin_server.modules import (
|
|
|
25
24
|
firewall,
|
|
26
25
|
full_install,
|
|
27
26
|
grafana,
|
|
27
|
+
harbor,
|
|
28
28
|
harness,
|
|
29
29
|
hardening,
|
|
30
30
|
internal_dns,
|
|
@@ -36,8 +36,6 @@ from raijin_server.modules import (
|
|
|
36
36
|
metallb,
|
|
37
37
|
minio,
|
|
38
38
|
network,
|
|
39
|
-
observability_dashboards,
|
|
40
|
-
observability_ingress,
|
|
41
39
|
prometheus,
|
|
42
40
|
secrets,
|
|
43
41
|
sanitize,
|
|
@@ -99,11 +97,10 @@ MODULES: Dict[str, Callable[[ExecutionContext], None]] = {
|
|
|
99
97
|
"minio": minio.run,
|
|
100
98
|
"prometheus": prometheus.run,
|
|
101
99
|
"grafana": grafana.run,
|
|
102
|
-
|
|
103
|
-
"observability_dashboards": observability_dashboards.run,
|
|
104
|
-
"apokolips_demo": apokolips_demo.run,
|
|
100
|
+
|
|
105
101
|
"secrets": secrets.run,
|
|
106
102
|
"loki": loki.run,
|
|
103
|
+
"harbor": harbor.run,
|
|
107
104
|
"harness": harness.run,
|
|
108
105
|
"velero": velero.run,
|
|
109
106
|
"kafka": kafka.run,
|
|
@@ -136,11 +133,10 @@ MODULE_DESCRIPTIONS: Dict[str, str] = {
|
|
|
136
133
|
"minio": "Objeto storage S3-compat via Helm",
|
|
137
134
|
"prometheus": "Stack kube-prometheus",
|
|
138
135
|
"grafana": "Dashboards e datasource Prometheus",
|
|
139
|
-
|
|
140
|
-
"
|
|
141
|
-
"apokolips_demo": "Landing page Apokolips para testar ingress externo",
|
|
142
|
-
"secrets": "Instala sealed-secrets e external-secrets via Helm",
|
|
136
|
+
|
|
137
|
+
"secrets": "Secrets management (Vault + External Secrets Operator)",
|
|
143
138
|
"loki": "Logs centralizados Loki",
|
|
139
|
+
"harbor": "Container registry privado com vulnerability scanning",
|
|
144
140
|
"harness": "Delegate Harness via Helm",
|
|
145
141
|
"velero": "Backup/restore de clusters",
|
|
146
142
|
"kafka": "Cluster Kafka via OCI Helm",
|
|
@@ -555,21 +551,6 @@ def grafana(ctx: typer.Context) -> None:
|
|
|
555
551
|
_run_module(ctx, "grafana")
|
|
556
552
|
|
|
557
553
|
|
|
558
|
-
@app.command(name="apokolips-demo")
|
|
559
|
-
def apokolips_demo_cmd(ctx: typer.Context) -> None:
|
|
560
|
-
_run_module(ctx, "apokolips_demo")
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
@app.command(name="observability-ingress")
|
|
564
|
-
def observability_ingress_cmd(ctx: typer.Context) -> None:
|
|
565
|
-
_run_module(ctx, "observability_ingress")
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
@app.command(name="observability-dashboards")
|
|
569
|
-
def observability_dashboards_cmd(ctx: typer.Context) -> None:
|
|
570
|
-
_run_module(ctx, "observability_dashboards")
|
|
571
|
-
|
|
572
|
-
|
|
573
554
|
@app.command()
|
|
574
555
|
def loki(ctx: typer.Context) -> None:
|
|
575
556
|
_run_module(ctx, "loki")
|
|
@@ -359,60 +359,6 @@ def verify_secrets(ctx: ExecutionContext) -> bool:
|
|
|
359
359
|
return sealed_ok and eso_ok
|
|
360
360
|
|
|
361
361
|
|
|
362
|
-
def verify_apokolips_demo(ctx: ExecutionContext) -> bool:
|
|
363
|
-
"""Health check especifico para a landing page Apokolips."""
|
|
364
|
-
namespace = "apokolips-demo"
|
|
365
|
-
logger.info("Verificando health check: apokolips-demo")
|
|
366
|
-
typer.secho("\n=== Health Check: Apokolips Demo ===", fg=typer.colors.CYAN)
|
|
367
|
-
|
|
368
|
-
pods_ok = check_k8s_pods_in_namespace(namespace, ctx, timeout=120)
|
|
369
|
-
if not pods_ok:
|
|
370
|
-
return False
|
|
371
|
-
if ctx.dry_run:
|
|
372
|
-
return True
|
|
373
|
-
|
|
374
|
-
try:
|
|
375
|
-
import json
|
|
376
|
-
|
|
377
|
-
result = subprocess.run(
|
|
378
|
-
[
|
|
379
|
-
"kubectl",
|
|
380
|
-
"get",
|
|
381
|
-
"ingress",
|
|
382
|
-
"apokolips-demo",
|
|
383
|
-
"-n",
|
|
384
|
-
namespace,
|
|
385
|
-
"-o",
|
|
386
|
-
"json",
|
|
387
|
-
],
|
|
388
|
-
capture_output=True,
|
|
389
|
-
text=True,
|
|
390
|
-
timeout=10,
|
|
391
|
-
)
|
|
392
|
-
if result.returncode != 0:
|
|
393
|
-
typer.secho(" ✗ Nao foi possivel consultar o ingress", fg=typer.colors.YELLOW)
|
|
394
|
-
logger.warning("kubectl get ingress retornou codigo != 0 para apokolips-demo")
|
|
395
|
-
return False
|
|
396
|
-
|
|
397
|
-
data = json.loads(result.stdout)
|
|
398
|
-
ingress_data = data.get("status", {}).get("loadBalancer", {}).get("ingress", [])
|
|
399
|
-
address = ""
|
|
400
|
-
if ingress_data:
|
|
401
|
-
entry = ingress_data[0]
|
|
402
|
-
address = entry.get("ip") or entry.get("hostname", "")
|
|
403
|
-
|
|
404
|
-
if address:
|
|
405
|
-
typer.secho(f" ✓ LoadBalancer publicado ({address})", fg=typer.colors.GREEN)
|
|
406
|
-
return True
|
|
407
|
-
|
|
408
|
-
typer.secho(" ✗ LoadBalancer ainda sem IP/hostname", fg=typer.colors.YELLOW)
|
|
409
|
-
return False
|
|
410
|
-
except Exception as exc:
|
|
411
|
-
typer.secho(f" ✗ Erro ao verificar ingress: {exc}", fg=typer.colors.YELLOW)
|
|
412
|
-
logger.error(f"Erro verificando ingress apokolips-demo: {exc}")
|
|
413
|
-
return False
|
|
414
|
-
|
|
415
|
-
|
|
416
362
|
# Mapeamento de modulos para funcoes de health check
|
|
417
363
|
HEALTH_CHECKS = {
|
|
418
364
|
"essentials": verify_essentials,
|
|
@@ -429,7 +375,7 @@ HEALTH_CHECKS = {
|
|
|
429
375
|
"kafka": lambda ctx: verify_helm_chart("kafka", "kafka", ctx),
|
|
430
376
|
"cert_manager": verify_cert_manager,
|
|
431
377
|
"secrets": verify_secrets,
|
|
432
|
-
|
|
378
|
+
|
|
433
379
|
}
|
|
434
380
|
|
|
435
381
|
|