raijin-server 0.2.27__tar.gz → 0.2.28__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.

Potentially problematic release.


This version of raijin-server might be problematic. Click here for more details.

Files changed (54) hide show
  1. {raijin_server-0.2.27/src/raijin_server.egg-info → raijin_server-0.2.28}/PKG-INFO +1 -1
  2. {raijin_server-0.2.27 → raijin_server-0.2.28}/setup.cfg +1 -1
  3. raijin_server-0.2.28/src/raijin_server/__init__.py +5 -0
  4. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/kong.py +95 -25
  5. {raijin_server-0.2.27 → raijin_server-0.2.28/src/raijin_server.egg-info}/PKG-INFO +1 -1
  6. raijin_server-0.2.27/src/raijin_server/__init__.py +0 -5
  7. {raijin_server-0.2.27 → raijin_server-0.2.28}/LICENSE +0 -0
  8. {raijin_server-0.2.27 → raijin_server-0.2.28}/README.md +0 -0
  9. {raijin_server-0.2.27 → raijin_server-0.2.28}/pyproject.toml +0 -0
  10. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/cli.py +0 -0
  11. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/config.py +0 -0
  12. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/healthchecks.py +0 -0
  13. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/module_manager.py +0 -0
  14. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/__init__.py +0 -0
  15. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/apokolips_demo.py +0 -0
  16. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/bootstrap.py +0 -0
  17. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/calico.py +0 -0
  18. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/cert_manager.py +0 -0
  19. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/essentials.py +0 -0
  20. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/firewall.py +0 -0
  21. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/full_install.py +0 -0
  22. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/grafana.py +0 -0
  23. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/hardening.py +0 -0
  24. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/harness.py +0 -0
  25. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/istio.py +0 -0
  26. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/kafka.py +0 -0
  27. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/kubernetes.py +0 -0
  28. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/loki.py +0 -0
  29. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/metallb.py +0 -0
  30. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/minio.py +0 -0
  31. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/network.py +0 -0
  32. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/observability_dashboards.py +0 -0
  33. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/observability_ingress.py +0 -0
  34. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/prometheus.py +0 -0
  35. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/sanitize.py +0 -0
  36. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/secrets.py +0 -0
  37. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/ssh_hardening.py +0 -0
  38. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/traefik.py +0 -0
  39. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/velero.py +0 -0
  40. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/modules/vpn.py +0 -0
  41. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/scripts/__init__.py +0 -0
  42. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/scripts/checklist.sh +0 -0
  43. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/scripts/install.sh +0 -0
  44. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/scripts/log_size_metric.sh +0 -0
  45. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/scripts/pre-deploy-check.sh +0 -0
  46. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/utils.py +0 -0
  47. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server/validators.py +0 -0
  48. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server.egg-info/SOURCES.txt +0 -0
  49. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server.egg-info/dependency_links.txt +0 -0
  50. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server.egg-info/entry_points.txt +0 -0
  51. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server.egg-info/requires.txt +0 -0
  52. {raijin_server-0.2.27 → raijin_server-0.2.28}/src/raijin_server.egg-info/top_level.txt +0 -0
  53. {raijin_server-0.2.27 → raijin_server-0.2.28}/tests/test_full_install_sequence.py +0 -0
  54. {raijin_server-0.2.27 → raijin_server-0.2.28}/tests/test_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: raijin-server
3
- Version: 0.2.27
3
+ Version: 0.2.28
4
4
  Summary: CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  Home-page: https://example.com/raijin-server
6
6
  Author: Equipe Raijin
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = raijin-server
3
- version = 0.2.27
3
+ version = 0.2.28
4
4
  description = CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -0,0 +1,5 @@
1
+ """Pacote principal do CLI Raijin Server."""
2
+
3
+ __version__ = "0.2.28"
4
+
5
+ __all__ = ["__version__"]
@@ -52,7 +52,7 @@ def _check_existing_kong(ctx: ExecutionContext) -> bool:
52
52
 
53
53
 
54
54
  def _check_orphan_crds(ctx: ExecutionContext) -> list[str]:
55
- """Detecta CRDs orfaos do Kong (sem ownership do Helm)."""
55
+ """Detecta CRDs do Kong que existem sem ownership do Helm."""
56
56
  result = run_cmd(
57
57
  ["kubectl", "get", "crd", "-o", "name"],
58
58
  ctx,
@@ -72,19 +72,71 @@ def _check_orphan_crds(ctx: ExecutionContext) -> list[str]:
72
72
  return kong_crds
73
73
 
74
74
 
75
- def _cleanup_orphan_crds(ctx: ExecutionContext, crds: list[str]) -> None:
76
- """Remove CRDs orfaos do Kong."""
77
- typer.echo(f"Removendo {len(crds)} CRDs orfaos do Kong...")
75
+ def _adopt_crds_for_helm(ctx: ExecutionContext, crds: list[str]) -> bool:
76
+ """Adiciona labels do Helm aos CRDs existentes para permitir adocao."""
77
+ typer.echo(f"Adicionando labels Helm a {len(crds)} CRDs existentes...")
78
78
 
79
79
  for crd in crds:
80
+ # Adiciona label managed-by
80
81
  run_cmd(
81
- ["kubectl", "delete", "crd", crd, "--ignore-not-found"],
82
+ ["kubectl", "label", "crd", crd, "app.kubernetes.io/managed-by=Helm", "--overwrite"],
83
+ ctx,
84
+ check=False,
85
+ )
86
+ # Adiciona annotations de release
87
+ run_cmd(
88
+ ["kubectl", "annotate", "crd", crd, "meta.helm.sh/release-name=kong", "--overwrite"],
89
+ ctx,
90
+ check=False,
91
+ )
92
+ run_cmd(
93
+ ["kubectl", "annotate", "crd", crd, "meta.helm.sh/release-namespace=kong", "--overwrite"],
82
94
  ctx,
83
95
  check=False,
84
96
  )
85
97
 
86
- time.sleep(3)
87
- typer.secho(" CRDs orfaos removidos.", fg=typer.colors.GREEN)
98
+ typer.secho(" ✓ CRDs preparados para adocao pelo Helm.", fg=typer.colors.GREEN)
99
+ return True
100
+
101
+
102
+ def _cleanup_orphan_crds(ctx: ExecutionContext, crds: list[str]) -> bool:
103
+ """Remove CRDs do Kong completamente."""
104
+ typer.echo(f"Removendo {len(crds)} CRDs do Kong...")
105
+
106
+ for crd in crds:
107
+ run_cmd(
108
+ ["kubectl", "delete", "crd", crd, "--ignore-not-found", "--wait=true"],
109
+ ctx,
110
+ check=False,
111
+ )
112
+
113
+ # Aguarda e verifica se foram realmente removidos
114
+ typer.echo(" Aguardando remocao completa dos CRDs...")
115
+ max_attempts = 10
116
+ for attempt in range(max_attempts):
117
+ time.sleep(2)
118
+ remaining = _check_orphan_crds(ctx)
119
+ if not remaining:
120
+ typer.secho(" ✓ CRDs removidos com sucesso.", fg=typer.colors.GREEN)
121
+ return True
122
+
123
+ if attempt < max_attempts - 1:
124
+ typer.echo(f" Ainda restam {len(remaining)} CRDs. Tentando remover novamente...")
125
+ for crd in remaining:
126
+ run_cmd(
127
+ ["kubectl", "delete", "crd", crd, "--ignore-not-found", "--wait=true", "--timeout=30s"],
128
+ ctx,
129
+ check=False,
130
+ )
131
+
132
+ remaining = _check_orphan_crds(ctx)
133
+ if remaining:
134
+ typer.secho(f" ⚠️ {len(remaining)} CRDs ainda existem:", fg=typer.colors.YELLOW)
135
+ for crd in remaining[:5]:
136
+ typer.echo(f" - {crd}")
137
+ return False
138
+
139
+ return True
88
140
 
89
141
 
90
142
  def _uninstall_kong(ctx: ExecutionContext) -> None:
@@ -158,29 +210,42 @@ def run(ctx: ExecutionContext) -> None:
158
210
  if cleanup:
159
211
  _uninstall_kong(ctx)
160
212
 
161
- # Verificar CRDs orfaos (sem ownership do Helm)
162
- orphan_crds = _check_orphan_crds(ctx)
163
- if orphan_crds:
213
+ # Verificar CRDs existentes do Kong (sem ownership do Helm)
214
+ existing_crds = _check_orphan_crds(ctx)
215
+ skip_crds = False
216
+
217
+ if existing_crds:
164
218
  typer.secho(
165
- f"\n⚠️ Detectados {len(orphan_crds)} CRDs orfaos do Kong (sem ownership do Helm):",
219
+ f"\n⚠️ Detectados {len(existing_crds)} CRDs do Kong sem labels do Helm:",
166
220
  fg=typer.colors.YELLOW,
167
221
  )
168
- for crd in orphan_crds[:5]:
222
+ for crd in existing_crds[:5]:
169
223
  typer.echo(f" - {crd}")
170
- if len(orphan_crds) > 5:
171
- typer.echo(f" ... e mais {len(orphan_crds) - 5}")
224
+ if len(existing_crds) > 5:
225
+ typer.echo(f" ... e mais {len(existing_crds) - 5}")
172
226
 
173
- cleanup_crds = typer.confirm(
174
- "\nRemover CRDs orfaos para permitir instalacao limpa?",
175
- default=True,
176
- )
177
- if cleanup_crds:
178
- _cleanup_orphan_crds(ctx, orphan_crds)
227
+ typer.echo("\nOpcoes:")
228
+ typer.echo(" 1. Adotar CRDs existentes (adicionar labels Helm) - RECOMENDADO")
229
+ typer.echo(" 2. Deletar CRDs e deixar Helm recriar")
230
+ typer.echo(" 3. Ignorar CRDs (usar --skip-crds)")
231
+ typer.echo(" 4. Cancelar instalacao")
232
+
233
+ choice = typer.prompt("Escolha", default="1")
234
+
235
+ if choice == "1":
236
+ _adopt_crds_for_helm(ctx, existing_crds)
237
+ elif choice == "2":
238
+ cleanup_success = _cleanup_orphan_crds(ctx, existing_crds)
239
+ if not cleanup_success:
240
+ if not typer.confirm("CRDs ainda existem. Continuar mesmo assim?", default=False):
241
+ typer.secho("Instalacao cancelada.", fg=typer.colors.RED)
242
+ return
243
+ elif choice == "3":
244
+ skip_crds = True
245
+ typer.secho("Helm não gerenciará os CRDs existentes.", fg=typer.colors.YELLOW)
179
246
  else:
180
- typer.secho(
181
- "AVISO: A instalacao pode falhar devido aos CRDs orfaos.",
182
- fg=typer.colors.YELLOW,
183
- )
247
+ typer.secho("Instalacao cancelada.", fg=typer.colors.RED)
248
+ return
184
249
 
185
250
  # Detectar dependencias
186
251
  has_metallb = _check_metallb_installed(ctx)
@@ -273,6 +338,11 @@ podAnnotations:
273
338
 
274
339
  run_cmd(["kubectl", "create", "namespace", "kong"], ctx, check=False)
275
340
 
341
+ # Monta args extras para o helm
342
+ extra_args = ["-f", str(values_path)]
343
+ if skip_crds:
344
+ extra_args.append("--skip-crds")
345
+
276
346
  helm_upgrade_install(
277
347
  release="kong",
278
348
  chart="kong",
@@ -281,7 +351,7 @@ podAnnotations:
281
351
  repo_url="https://charts.konghq.com",
282
352
  ctx=ctx,
283
353
  values=[],
284
- extra_args=["-f", str(values_path)],
354
+ extra_args=extra_args,
285
355
  )
286
356
 
287
357
  # Aguarda pods ficarem prontos
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: raijin-server
3
- Version: 0.2.27
3
+ Version: 0.2.28
4
4
  Summary: CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  Home-page: https://example.com/raijin-server
6
6
  Author: Equipe Raijin
@@ -1,5 +0,0 @@
1
- """Pacote principal do CLI Raijin Server."""
2
-
3
- __version__ = "0.2.27"
4
-
5
- __all__ = ["__version__"]
File without changes
File without changes