raijin-server 0.2.39__py3-none-any.whl → 0.2.41__py3-none-any.whl
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.
- raijin_server/__init__.py +1 -1
- raijin_server/modules/minio.py +112 -46
- {raijin_server-0.2.39.dist-info → raijin_server-0.2.41.dist-info}/METADATA +1 -1
- {raijin_server-0.2.39.dist-info → raijin_server-0.2.41.dist-info}/RECORD +8 -8
- {raijin_server-0.2.39.dist-info → raijin_server-0.2.41.dist-info}/WHEEL +0 -0
- {raijin_server-0.2.39.dist-info → raijin_server-0.2.41.dist-info}/entry_points.txt +0 -0
- {raijin_server-0.2.39.dist-info → raijin_server-0.2.41.dist-info}/licenses/LICENSE +0 -0
- {raijin_server-0.2.39.dist-info → raijin_server-0.2.41.dist-info}/top_level.txt +0 -0
raijin_server/__init__.py
CHANGED
raijin_server/modules/minio.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""Deploy do MinIO via Helm com configuracoes production-ready."""
|
|
2
2
|
|
|
3
|
+
import json
|
|
3
4
|
import secrets
|
|
4
5
|
import socket
|
|
5
6
|
import tempfile
|
|
@@ -15,7 +16,6 @@ LOCAL_PATH_PROVISIONER_URL = (
|
|
|
15
16
|
"https://raw.githubusercontent.com/rancher/local-path-provisioner/"
|
|
16
17
|
"v0.0.30/deploy/local-path-storage.yaml"
|
|
17
18
|
)
|
|
18
|
-
RAIJIN_LOCAL_PATH_SC_NAME = "raijin-local-path"
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
def _detect_node_name(ctx: ExecutionContext) -> str:
|
|
@@ -58,28 +58,6 @@ def _apply_manifest(ctx: ExecutionContext, manifest: str, description: str) -> b
|
|
|
58
58
|
tmp_path.unlink(missing_ok=True)
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
def _create_raijin_local_path_sc(ctx: ExecutionContext) -> bool:
|
|
62
|
-
"""Cria StorageClass com volumeBindingMode=Immediate baseada no local-path."""
|
|
63
|
-
manifest = textwrap.dedent(
|
|
64
|
-
f"""
|
|
65
|
-
apiVersion: storage.k8s.io/v1
|
|
66
|
-
kind: StorageClass
|
|
67
|
-
metadata:
|
|
68
|
-
name: {RAIJIN_LOCAL_PATH_SC_NAME}
|
|
69
|
-
provisioner: rancher.io/local-path
|
|
70
|
-
reclaimPolicy: Delete
|
|
71
|
-
volumeBindingMode: Immediate
|
|
72
|
-
allowVolumeExpansion: true
|
|
73
|
-
parameters:
|
|
74
|
-
type: ""
|
|
75
|
-
"""
|
|
76
|
-
).strip()
|
|
77
|
-
typer.echo(
|
|
78
|
-
f"Criando StorageClass '{RAIJIN_LOCAL_PATH_SC_NAME}' com binding imediato para PVCs do MinIO..."
|
|
79
|
-
)
|
|
80
|
-
return _apply_manifest(ctx, manifest, f"StorageClass {RAIJIN_LOCAL_PATH_SC_NAME}")
|
|
81
|
-
|
|
82
|
-
|
|
83
61
|
def _get_default_storage_class(ctx: ExecutionContext) -> str:
|
|
84
62
|
"""Retorna o nome da StorageClass default do cluster, se existir."""
|
|
85
63
|
result = run_cmd(
|
|
@@ -107,6 +85,102 @@ def _list_storage_classes(ctx: ExecutionContext) -> list:
|
|
|
107
85
|
return []
|
|
108
86
|
|
|
109
87
|
|
|
88
|
+
def _patch_local_path_provisioner_tolerations(ctx: ExecutionContext) -> None:
|
|
89
|
+
"""Adiciona tolerations ao local-path-provisioner para rodar em control-plane."""
|
|
90
|
+
typer.echo(" Configurando tolerations no local-path-provisioner...")
|
|
91
|
+
|
|
92
|
+
# Patch no deployment para tolerar control-plane
|
|
93
|
+
patch_deployment = textwrap.dedent(
|
|
94
|
+
"""
|
|
95
|
+
spec:
|
|
96
|
+
template:
|
|
97
|
+
spec:
|
|
98
|
+
tolerations:
|
|
99
|
+
- key: node-role.kubernetes.io/control-plane
|
|
100
|
+
operator: Exists
|
|
101
|
+
effect: NoSchedule
|
|
102
|
+
- key: node-role.kubernetes.io/master
|
|
103
|
+
operator: Exists
|
|
104
|
+
effect: NoSchedule
|
|
105
|
+
"""
|
|
106
|
+
).strip()
|
|
107
|
+
|
|
108
|
+
result = run_cmd(
|
|
109
|
+
[
|
|
110
|
+
"kubectl", "-n", "local-path-storage", "patch", "deployment",
|
|
111
|
+
"local-path-provisioner", "--patch", patch_deployment,
|
|
112
|
+
],
|
|
113
|
+
ctx,
|
|
114
|
+
check=False,
|
|
115
|
+
)
|
|
116
|
+
if result.returncode == 0:
|
|
117
|
+
typer.secho(" ✓ Deployment patched com tolerations.", fg=typer.colors.GREEN)
|
|
118
|
+
|
|
119
|
+
# Patch no ConfigMap para os helper pods (que criam os dirs no node)
|
|
120
|
+
# O local-path-provisioner usa um ConfigMap com helperPod template
|
|
121
|
+
helper_pod_config = {
|
|
122
|
+
"nodePathMap": [
|
|
123
|
+
{
|
|
124
|
+
"node": "DEFAULT_PATH_FOR_NON_LISTED_NODES",
|
|
125
|
+
"paths": ["/opt/local-path-provisioner"]
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"setupCommand": None,
|
|
129
|
+
"teardownCommand": None,
|
|
130
|
+
"helperPod": {
|
|
131
|
+
"apiVersion": "v1",
|
|
132
|
+
"kind": "Pod",
|
|
133
|
+
"metadata": {},
|
|
134
|
+
"spec": {
|
|
135
|
+
"tolerations": [
|
|
136
|
+
{"key": "node-role.kubernetes.io/control-plane", "operator": "Exists", "effect": "NoSchedule"},
|
|
137
|
+
{"key": "node-role.kubernetes.io/master", "operator": "Exists", "effect": "NoSchedule"}
|
|
138
|
+
],
|
|
139
|
+
"containers": [
|
|
140
|
+
{
|
|
141
|
+
"name": "helper-pod",
|
|
142
|
+
"image": "busybox:stable",
|
|
143
|
+
"imagePullPolicy": "IfNotPresent"
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
# Converte para JSON string para o patch
|
|
151
|
+
config_json_str = json.dumps(helper_pod_config)
|
|
152
|
+
patch_data = json.dumps({"data": {"config.json": config_json_str}})
|
|
153
|
+
|
|
154
|
+
# Aplica via patch no ConfigMap
|
|
155
|
+
result = run_cmd(
|
|
156
|
+
[
|
|
157
|
+
"kubectl", "-n", "local-path-storage", "patch", "configmap",
|
|
158
|
+
"local-path-config", "--type=merge", "-p", patch_data,
|
|
159
|
+
],
|
|
160
|
+
ctx,
|
|
161
|
+
check=False,
|
|
162
|
+
)
|
|
163
|
+
if result.returncode == 0:
|
|
164
|
+
typer.secho(" ✓ ConfigMap patched para helper pods.", fg=typer.colors.GREEN)
|
|
165
|
+
|
|
166
|
+
# Reinicia o deployment para aplicar as mudanças
|
|
167
|
+
run_cmd(
|
|
168
|
+
["kubectl", "-n", "local-path-storage", "rollout", "restart", "deployment/local-path-provisioner"],
|
|
169
|
+
ctx,
|
|
170
|
+
check=False,
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
# Aguarda rollout
|
|
174
|
+
run_cmd(
|
|
175
|
+
[
|
|
176
|
+
"kubectl", "-n", "local-path-storage", "rollout", "status",
|
|
177
|
+
"deployment/local-path-provisioner", "--timeout=60s",
|
|
178
|
+
],
|
|
179
|
+
ctx,
|
|
180
|
+
check=False,
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
|
|
110
184
|
def _install_local_path_provisioner(ctx: ExecutionContext) -> bool:
|
|
111
185
|
"""Instala local-path-provisioner para usar storage local (NVMe/SSD)."""
|
|
112
186
|
typer.echo("Instalando local-path-provisioner para storage local...")
|
|
@@ -120,7 +194,7 @@ def _install_local_path_provisioner(ctx: ExecutionContext) -> bool:
|
|
|
120
194
|
typer.secho(" Falha ao instalar local-path-provisioner.", fg=typer.colors.RED)
|
|
121
195
|
return False
|
|
122
196
|
|
|
123
|
-
# Aguarda deployment ficar pronto
|
|
197
|
+
# Aguarda deployment ficar pronto inicialmente
|
|
124
198
|
typer.echo(" Aguardando local-path-provisioner ficar Ready...")
|
|
125
199
|
run_cmd(
|
|
126
200
|
[
|
|
@@ -131,7 +205,10 @@ def _install_local_path_provisioner(ctx: ExecutionContext) -> bool:
|
|
|
131
205
|
check=False,
|
|
132
206
|
)
|
|
133
207
|
|
|
134
|
-
|
|
208
|
+
# Aplica tolerations para control-plane (single-node clusters)
|
|
209
|
+
_patch_local_path_provisioner_tolerations(ctx)
|
|
210
|
+
|
|
211
|
+
typer.secho(" ✓ local-path-provisioner instalado e configurado.", fg=typer.colors.GREEN)
|
|
135
212
|
return True
|
|
136
213
|
|
|
137
214
|
|
|
@@ -169,29 +246,22 @@ def _ensure_storage_class(ctx: ExecutionContext) -> str:
|
|
|
169
246
|
default_sc = _get_default_storage_class(ctx)
|
|
170
247
|
available = _list_storage_classes(ctx)
|
|
171
248
|
|
|
172
|
-
# Se ja
|
|
173
|
-
if default_sc
|
|
174
|
-
typer.echo(f"StorageClass default detectada: {default_sc}")
|
|
175
|
-
return default_sc
|
|
176
|
-
if RAIJIN_LOCAL_PATH_SC_NAME in available:
|
|
177
|
-
typer.echo(f"StorageClass '{RAIJIN_LOCAL_PATH_SC_NAME}' detectada.")
|
|
178
|
-
_set_default_storage_class(ctx, RAIJIN_LOCAL_PATH_SC_NAME)
|
|
179
|
-
return RAIJIN_LOCAL_PATH_SC_NAME
|
|
180
|
-
|
|
181
|
-
# Se ja existir default diferente de local-path, respeita configuracao do cluster
|
|
182
|
-
if default_sc and default_sc != "local-path":
|
|
249
|
+
# Se ja existir default (qualquer uma), usa ela
|
|
250
|
+
if default_sc:
|
|
183
251
|
typer.echo(f"StorageClass default detectada: {default_sc}")
|
|
252
|
+
# Se for local-path, garante que o provisioner tem tolerations
|
|
253
|
+
if default_sc == "local-path" or "local-path" in available:
|
|
254
|
+
_patch_local_path_provisioner_tolerations(ctx)
|
|
184
255
|
return default_sc
|
|
185
256
|
|
|
186
|
-
# Se local-path estiver disponivel
|
|
187
|
-
if "local-path" in available
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
return RAIJIN_LOCAL_PATH_SC_NAME
|
|
191
|
-
typer.echo("Nao foi possivel criar StorageClass dedicada; usando 'local-path'.")
|
|
257
|
+
# Se local-path estiver disponivel mas nao for default, define como default
|
|
258
|
+
if "local-path" in available:
|
|
259
|
+
typer.echo("StorageClass 'local-path' detectada.")
|
|
260
|
+
_patch_local_path_provisioner_tolerations(ctx)
|
|
192
261
|
_set_default_storage_class(ctx, "local-path")
|
|
193
262
|
return "local-path"
|
|
194
263
|
|
|
264
|
+
# Se houver outras classes disponiveis, pergunta qual usar
|
|
195
265
|
if available:
|
|
196
266
|
typer.echo(f"StorageClasses disponiveis (sem default): {', '.join(available)}")
|
|
197
267
|
choice = typer.prompt(
|
|
@@ -219,10 +289,6 @@ def _ensure_storage_class(ctx: ExecutionContext) -> str:
|
|
|
219
289
|
if not _install_local_path_provisioner(ctx):
|
|
220
290
|
raise typer.Exit(1)
|
|
221
291
|
|
|
222
|
-
if _create_raijin_local_path_sc(ctx):
|
|
223
|
-
_set_default_storage_class(ctx, RAIJIN_LOCAL_PATH_SC_NAME)
|
|
224
|
-
return RAIJIN_LOCAL_PATH_SC_NAME
|
|
225
|
-
|
|
226
292
|
_set_default_storage_class(ctx, "local-path")
|
|
227
293
|
return "local-path"
|
|
228
294
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
raijin_server/__init__.py,sha256=
|
|
1
|
+
raijin_server/__init__.py,sha256=W9tq6k7VO0G-6o3OJv__0gbA0QirZV0MPWTWHqZmaCs,95
|
|
2
2
|
raijin_server/cli.py,sha256=2m7q1znMLbBdnUwN6oOUrCZXEqC2e7SfbjYkymbP4lQ,37884
|
|
3
3
|
raijin_server/config.py,sha256=QNiEVvrbW56XgvNn5-h3bkJm46Xc8mjNqPbvixXD8N0,4829
|
|
4
4
|
raijin_server/healthchecks.py,sha256=lzXdFw6S0hOYbUKbqksh4phb04lXgXdTspP1Dsz4dx8,15401
|
|
@@ -22,7 +22,7 @@ raijin_server/modules/kong.py,sha256=eDSagvEP9_BCs9pZ-pCVs1BDdlYOoJfY5PnUSiTvvgc
|
|
|
22
22
|
raijin_server/modules/kubernetes.py,sha256=9E6zV0zGQWZW92NVpxwYctpi-4JDmi6YzF3tKRI4HlU,13343
|
|
23
23
|
raijin_server/modules/loki.py,sha256=aNiUpnOFppZMXoQwYhn7IoPMzwUz4aHi6pbiqj1PRjc,5022
|
|
24
24
|
raijin_server/modules/metallb.py,sha256=uUuklc_RsQ-W2qDVRMQAxQm9HKGEqso444b1IwBpM6w,8554
|
|
25
|
-
raijin_server/modules/minio.py,sha256=
|
|
25
|
+
raijin_server/modules/minio.py,sha256=_OrtFMoJBDKufh3U7_Cf2X3F9R-KaAfjQm-ok8YPT1U,17230
|
|
26
26
|
raijin_server/modules/network.py,sha256=QRlYdcryCCPAWG3QQ_W7ld9gJgETI7H8gwntOU7UqFE,4818
|
|
27
27
|
raijin_server/modules/observability_dashboards.py,sha256=fVz0WEOQrUTF5rJ__Nu_onyBuwL_exFmysWMmg8AE9w,7319
|
|
28
28
|
raijin_server/modules/observability_ingress.py,sha256=Fh1rlFWueBNHnOkHuoHYyhILmpO-iQXINybSUYbYsHQ,5738
|
|
@@ -38,9 +38,9 @@ raijin_server/scripts/checklist.sh,sha256=j6E0Kmk1EfjLvKK1VpCqzXJAXI_7Bm67LK4ndy
|
|
|
38
38
|
raijin_server/scripts/install.sh,sha256=Y1ickbQ4siQ0NIPs6UgrqUr8WWy7U0LHmaTQbEgavoI,3949
|
|
39
39
|
raijin_server/scripts/log_size_metric.sh,sha256=Iv4SsX8AuCYRou-klYn32mX41xB6j0xJGLBO6riw4rU,1208
|
|
40
40
|
raijin_server/scripts/pre-deploy-check.sh,sha256=XqMo7IMIpwUHF17YEmU0-cVmTDMoCGMBFnmS39FidI4,4912
|
|
41
|
-
raijin_server-0.2.
|
|
42
|
-
raijin_server-0.2.
|
|
43
|
-
raijin_server-0.2.
|
|
44
|
-
raijin_server-0.2.
|
|
45
|
-
raijin_server-0.2.
|
|
46
|
-
raijin_server-0.2.
|
|
41
|
+
raijin_server-0.2.41.dist-info/licenses/LICENSE,sha256=kJsMCjOiRZE0AQNtxWqBa32z9kMAaF4EUxyHj3hKaJo,1105
|
|
42
|
+
raijin_server-0.2.41.dist-info/METADATA,sha256=rMBGEHgnwkEQ4wDLTKXqz7wnCad_yS9n7ynBPReFHhk,22851
|
|
43
|
+
raijin_server-0.2.41.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
44
|
+
raijin_server-0.2.41.dist-info/entry_points.txt,sha256=3ZvxDX4pvcjkIRsXAJ69wIfVmKa78LKo-C3QhqN2KVM,56
|
|
45
|
+
raijin_server-0.2.41.dist-info/top_level.txt,sha256=Yz1xneCRtsZOzbPIcTAcrSxd-1p80pohMXYAZ74dpok,14
|
|
46
|
+
raijin_server-0.2.41.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|