Factoring out common components when kustomizing kubernetes manifests
Estoy usando kustomize binario para crear archivos yaml de implementación de kubernetes específicos.
{Version:kustomize/v3.8.1 GitCommit:0b359d0ef0272e6545eda0e99aacd63aef99c4d0 BuildDate:2020-07-16T00:58:46Z GoOs:linux GoArch:amd64}
Aquí está mi estructura de directorio:
overlays
├── parser
│ ├── dev
│ │ └── nonsec
│ │ ├── dev-patches-parsers-tests.yaml
│ │ ├── dev-patches-parsers.yaml
│ │ └── kustomization.yaml
│ ├── prod
│ │ ├── nonsec
│ │ │ ├── kustomization.yaml
│ │ │ ├── prod-patches-parsers-tests.yaml
│ │ │ └── prod-patches-parsers.yaml
│ │ ├── sec
│ │ │ ├── kustomization.yaml
│ │ │ ├── prod-patches-parsers-sec-tests.yaml
│ │ │ ├── prod-patches-parsers-sec.yaml
│ │ │ ├── prod-patches-parsers-tests.yaml
│ │ │ └── prod-patches-parsers.yaml
│ │ └── v3r
│ │ └── empty.txt
│ ├── stage
│ └── suit
Observe que los overlays/parser/prod/nonsec y /overlays/parser/prod/sec contienen dos conjuntos de archivos de parche idénticos. Quiero tener en cuenta los archivos comunes y empujarlos a un nivel bajo el prod - No quiero copias de los mismos parches en varios dirs. Quiero que no segundos y sec construya para usar el mismo conjunto de púas prod pero no sé cómo hacerlo con kustomize. He intentado ponerlos en el dir arriba, pero kustomize no permite ninguna referencia a los archivos de parche en los directorios anteriores - que es lo que necesito hacer.
¿Cómo puedo evitar la duplicación de estos archivos prod-patches*.yaml en múltiples dirs?!
Aquí está mi kustomización no ssec. Yaml
# Use this as the base code
resources:
- ../../../../base
# Decorate the base code with the following components
components:
- ../../../../components/common-all
- ../../../../components/common-prod
- ../../../../components/parser
# Then finally, patch the results from above with this:
patchesStrategicMerge:
- prod-patches-parsers.yaml
- prod-patches-parsers-tests.yaml
Y esta es mi sec kustomization. Yaml:
# Use this as the base code
resources:
- ../../../../base
# Decorate the base code with the following components
components:
- ../../../../components/common-all
- ../../../../components/common-prod
- ../../../../components/parser
# Then finally, patch the results from above with this:
patchesStrategicMerge:
- prod-patches-parsers.yaml
- prod-patches-parsers-tests.yaml
- prod-patches-parsers-sec.yaml
- prod-patches-parsers-sec-tests.yaml
Pregunta hecha hace 3 años, 5 meses, 5 días - Por scriptsorcererf493
3 Respuestas:
-
Podrías hacer lo siguiente:
overlays ├── parser │ ├── dev │ │ └── nonsec │ │ ├── dev-patches-parsers-tests.yaml │ │ ├── dev-patches-parsers.yaml │ │ └── kustomization.yaml │ ├── prod │ │ ├── kustomization.yaml │ │ ├── prod-patches-parsers-tests.yaml │ │ ├── prod-patches-parsers.yaml │ │ ├── nonsec │ │ │ └── kustomization.yaml │ │ ├── sec │ │ │ ├── kustomization.yaml │ │ │ ├── prod-patches-parsers-sec-tests.yaml │ │ │ └── prod-patches-parsers-sec.yaml │ │ └── v3r │ │ └── empty.txt
con
overlays/parser/prod/kustomization.yaml
:resources: - ../../../../base - ../../../../components/common-all - ../../../../components/common-prod - ../../../../components/parser patchesStrategicMerge: - prod-patches-parsers.yaml - prod-patches-parsers-tests.yaml
overlays/parser/prod/nonsec/kustomization.yaml
:resources: - ../
overlays/parser/prod/sec/kustomization.yaml
:resources: - ../ patchesStrategicMerge: - prod-patches-parsers.yaml - prod-patches-parsers-tests.yaml
La estructura general del directorio es un poco compleja y es posible que desee simplificarlo o aplanarlo.
Respondida el Dec 17, 2020 a las 23:16 - por codejuggernaut
Votos positivos: 0 | Votos negativos: 0 -
Para evitar la duplicación de los archivos
prod-patches<strong>.yaml
en múltiples directorios, puedes utilizar los recursos compartidos en kustomize. Aquí te muestro cómo puedes organizar tus archivos para lograrlo:- Crea un nuevo directorio en el nivel `overlays/parser` llamado `base` (o cualquier otro nombre que prefieras).
- Mueve los archivos comunes `prod-patches-parsers.yaml` y `prod-patches-parsers-tests.yaml` a este nuevo directorio `base`.
- Dentro de los directorios `nonsec` y `sec`, modifica los archivos `kustomization.yaml` de la siguiente manera:
En el directorio
nonsec
:yaml resources:
- ../../../base
- dev-patches-parsers.yaml
- dev-patches-parsers-tests.yaml
En el directorio
sec
:yaml resources:
- ../../../base
- prod-patches-parsers-sec.yaml
- prod-patches-parsers-sec-tests.yaml
- prod-patches-parsers.yaml
- prod-patches-parsers-tests.yaml
De esta manera, los archivos comunes estarán en el directorio
base
y serán referenciados desde los directoriosnonsec
ysec
, evitando la duplicación de los mismos.Después de realizar estos cambios, puedes ajustar tus recursos en
kustomization.yaml
para asegurarte de estar referenciando los archivos de la ubicación correcta.Con esta organización, los archivos
prod-patches-parsers</strong>.yaml
serán compartidos y utilizados por ambos directoriosnonsec
ysec
, eliminando la duplicación innecesaria de código.Respondida el Dec 18, 2020 a las 23:15 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Paso 1: Crea un directorio de parches comunes
Crea un directorio llamado
common-patches
dentro del directoriooverlays/parser/
. Mueve los archivos de parche duplicados (prod-patches-parsers.yaml
yprod-patches-parsers-tests.yaml
) a este directorio nuevo.Paso 2: Modifica los archivos de kustomización
En los archivos
kustomization.yaml
deoverlays/parser/prod/nonsec
yoverlays/parser/prod/sec
, reemplaza las referencias a los archivos de parche duplicados con la siguiente referencia:patchesStrategicMerge:
- ../../common-patches/prod-patches-parsers.yaml
- ../../common-patches/prod-patches-parsers-tests.yaml
Paso 3: Modifica el archivo
kustomization.yaml
del directorio raízAgrega el directorio
common-patches
a la ruta de búsqueda de parches en el archivokustomization.yaml
del directorio raíz (overlays/parser/
). Esto permitirá que los parches comunes sean aplicados tanto por las implementaciones nosec como por las sec.patchesStrategicMerge:
- ../../common-patches/prod-patches-parsers-sec.yaml
- ../../common-patches/prod-patches-parsers-sec-tests.yaml
Estructura de directorio final:
overlays ├── parser │ ├── common-patches │ │ ├── prod-patches-parsers.yaml │ │ ├── prod-patches-parsers-tests.yaml │ ├── dev │ │ └── nonsec │ │ ├── dev-patches-parsers-tests.yaml │ │ └── dev-patches-parsers.yaml │ │ └── kustomization.yaml │ ├── prod │ │ ├── nonsec │ │ │ └── kustomization.yaml │ │ ├── sec │ │ │ └── kustomization.yaml │ │ └── v3r │ │ └── empty.txt │ ├── stage │ └── suit
Beneficios de esta solución:
Evita la duplicación de archivos de parche. Mantiene la modularidad y la reutilización. * Simplifica el mantenimiento y las actualizaciones.
Respondida el Dec 18, 2020 a las 23:27 - por Gemini
Votos positivos: 0 | Votos negativos: 0