Últimos cambios a partir de revisión
This commit is contained in:
@@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Administración declarativa de Objetos en Kubernetes usando Ficheros de Configuración
|
title: Administración declarativa de Objetos en Kubernetes usando archivos de Configuración
|
||||||
content_type: task
|
content_type: task
|
||||||
weight: 10
|
weight: 10
|
||||||
---
|
---
|
||||||
|
|
||||||
<!-- overview -->
|
<!-- overview -->
|
||||||
Objetos en Kubernetes pueden ser creados, actualizados y eliminados utilizando
|
Objetos en Kubernetes pueden ser creados, actualizados y eliminados utilizando
|
||||||
ficheros de configuración almacenados en un directorio. Usando el comando
|
archivos de configuración almacenados en un directorio. Usando el comando
|
||||||
`kubectl apply` podrá crearlos o actualizarlos de manera recursiva según sea necesario.
|
`kubectl apply` podrá crearlos o actualizarlos de manera recursiva según sea necesario.
|
||||||
Este método retiene cualquier escritura realizada contra objetos activos en el
|
Este método retiene cualquier escritura realizada contra objetos activos en el
|
||||||
sistema sin unirlos de regreso a los ficheros de configuración. `kubectl diff` le
|
sistema sin unirlos de regreso a los archivos de configuración. `kubectl diff` le
|
||||||
permite visualizar de manera previa los cambios que `apply` realizará.
|
permite visualizar de manera previa los cambios que `apply` realizará.
|
||||||
|
|
||||||
## {{% heading "prerequisites" %}}
|
## {{% heading "prerequisites" %}}
|
||||||
@@ -36,11 +36,11 @@ para una discusión de las ventajas y desventajas de cada modo distinto de admin
|
|||||||
## Visión general
|
## Visión general
|
||||||
|
|
||||||
La configuración de objetos declarativa requiere una comprensión firme de la
|
La configuración de objetos declarativa requiere una comprensión firme de la
|
||||||
definición y configuración de objetos de Kubernetes. Lea y complete los siguientes
|
definición y configuración de objetos de Kubernetes. Si aún no lo ha hecho, lea
|
||||||
documentos si aún no lo ha hecho:
|
y complete los siguientes documentos:
|
||||||
|
|
||||||
* [Administració n de Objetos de Kubernetes usando comandos imperativos](/docs/tasks/manage-kubernetes-objects/imperative-command/)
|
* [Administración de Objetos de Kubernetes usando comandos imperativos](/docs/tasks/manage-kubernetes-objects/imperative-command/)
|
||||||
* [Administración imperativa de los Objetos de Kubernetes usando ficheros de Configuración](/docs/tasks/manage-kubernetes-objects/imperative-config/)
|
* [Administración imperativa de los Objetos de Kubernetes usando archivos de Configuración](/docs/tasks/manage-kubernetes-objects/imperative-config/)
|
||||||
|
|
||||||
{{< comment >}}
|
{{< comment >}}
|
||||||
TODO(lmurillo): Update the links above to the spanish versions of these documents once the
|
TODO(lmurillo): Update the links above to the spanish versions of these documents once the
|
||||||
@@ -49,21 +49,21 @@ localizations become available
|
|||||||
|
|
||||||
A continuación la definición de términos usados en este documento:
|
A continuación la definición de términos usados en este documento:
|
||||||
|
|
||||||
- *fichero de configuración de objeto / fichero de configuración*: Un fichero en el
|
- *archivo de configuración de objeto / archivo de configuración*: Un archivo en el
|
||||||
que se define la configuración de un objeto de Kubernetes. Este tema muestra como
|
que se define la configuración de un objeto de Kubernetes. Este tema muestra como
|
||||||
utilizar ficheros de configuración con `kubectl apply`. Los ficheros de configuración
|
utilizar archivos de configuración con `kubectl apply`. Los archivos de configuración
|
||||||
por lo general se almacenan en un sistema de control de versiones, como Git.
|
por lo general se almacenan en un sistema de control de versiones, como Git.
|
||||||
- *configuración activa de objeto / configuración activa*: Los valores de configuración
|
- *configuración activa de objeto / configuración activa*: Los valores de configuración
|
||||||
activos de un objeto, según estén siendo observados por el Clúster. Esta configuración
|
activos de un objeto, según estén siendo observados por el Clúster. Esta configuración
|
||||||
se almacena en el sistema de almacenamiento de Kubernetes, usualmente etcd.
|
se almacena en el sistema de almacenamiento de Kubernetes, usualmente etcd.
|
||||||
- *escritor de configuración declarativo / escritor declarativo*: Una persona o
|
- *escritor de configuración declarativo / escritor declarativo*: Una persona o
|
||||||
componente de software que actualiza a un objeto activo. Los escritores activos a
|
componente de software que actualiza a un objeto activo. Los escritores activos a
|
||||||
los que se refiere este tema aplican cambios a los ficheros de configuración de objetos
|
los que se refiere este tema aplican cambios a los archivos de configuración de objetos
|
||||||
y ejecutan `kubectl apply` para aplicarlos.
|
y ejecutan `kubectl apply` para aplicarlos.
|
||||||
|
|
||||||
## Como crear objetos
|
## Como crear objetos
|
||||||
|
|
||||||
Utilice `kubectl apply` para crear todos los objetos definidos en los ficheros
|
Utilice `kubectl apply` para crear todos los objetos definidos en los archivos
|
||||||
de configuración existentes en un directorio específico, con excepción de aquellos que
|
de configuración existentes en un directorio específico, con excepción de aquellos que
|
||||||
ya existen:
|
ya existen:
|
||||||
|
|
||||||
@@ -72,14 +72,14 @@ kubectl apply -f <directorio>/
|
|||||||
```
|
```
|
||||||
|
|
||||||
Esto definirá la anotación `kubectl.kubernetes.io/last-applied-configuration: '{...}'`
|
Esto definirá la anotación `kubectl.kubernetes.io/last-applied-configuration: '{...}'`
|
||||||
en cada objeto. Esta anotación contiene el contenido del fichero de configuración
|
en cada objeto. Esta anotación contiene el contenido del archivo de configuración
|
||||||
utilizado para la creación del objeto.
|
utilizado para la creación del objeto.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
Agregue la opción `-R` para procesar un directorio de manera recursiva.
|
Agregue la opción `-R` para procesar un directorio de manera recursiva.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
El siguiente es un ejemplo de fichero de configuración para un objeto:
|
El siguiente es un ejemplo de archivo de configuración para un objeto:
|
||||||
|
|
||||||
{{< codenew file="application/simple_deployment.yaml" >}}
|
{{< codenew file="application/simple_deployment.yaml" >}}
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yam
|
|||||||
```
|
```
|
||||||
|
|
||||||
La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration`
|
La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration`
|
||||||
fue escrita a la configuración activa, y es consistente con los contenidos del fichero
|
fue escrita a la configuración activa, y es consistente con los contenidos del archivo
|
||||||
de configuración:
|
de configuración:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -162,7 +162,7 @@ aún cuando esos objetos ya existan en la configuración activa. Con este enfoqu
|
|||||||
lo siguiente:
|
lo siguiente:
|
||||||
|
|
||||||
1. Definir los campos que aparecerán en la configuración activa.
|
1. Definir los campos que aparecerán en la configuración activa.
|
||||||
2. Eliminar aquellos campos eliminados en el fichero de configuración, de la configuración activa.
|
2. Eliminar aquellos campos eliminados en el archivo de configuración, de la configuración activa.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl diff -f <directorio>/
|
kubectl diff -f <directorio>/
|
||||||
@@ -173,7 +173,7 @@ kubectl apply -f <directorio>/
|
|||||||
Agregue la opción `-R` para procesar directorios de manera recursiva.
|
Agregue la opción `-R` para procesar directorios de manera recursiva.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
Este es un ejemplo de fichero de configuración:
|
Este es un ejemplo de archivo de configuración:
|
||||||
|
|
||||||
{{< codenew file="application/simple_deployment.yaml" >}}
|
{{< codenew file="application/simple_deployment.yaml" >}}
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ kubectl apply -f https://k8s.io/examples/application/simple_deployment.yaml
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
Con el propósito de ilustrar, el comando anterior se refiere a un único fichero
|
Con el propósito de ilustrar, el comando anterior se refiere a un único archivo
|
||||||
de configuración en vez de un directorio.
|
de configuración en vez de un directorio.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
@@ -195,7 +195,7 @@ kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yam
|
|||||||
```
|
```
|
||||||
|
|
||||||
La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration`
|
La salida le demostrará que la anotación `kubectl.kubernetes.io/last-applied-configuration`
|
||||||
fue escrita a la configuración activa, y es consistente con los contenidos del fichero
|
fue escrita a la configuración activa, y es consistente con los contenidos del archivo
|
||||||
de configuración:
|
de configuración:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -291,12 +291,12 @@ spec:
|
|||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Actualice el fichero de configuración `simple_deployment.yaml` para cambiar el campo `image`
|
Actualice el archivo de configuración `simple_deployment.yaml` para cambiar el campo `image`
|
||||||
de `nginx:1.14.2` a `nginx:1.16.1`, y elimine el campo `minReadySeconds`:
|
de `nginx:1.14.2` a `nginx:1.16.1`, y elimine el campo `minReadySeconds`:
|
||||||
|
|
||||||
{{< codenew file="application/update_deployment.yaml" >}}
|
{{< codenew file="application/update_deployment.yaml" >}}
|
||||||
|
|
||||||
Aplique los cambios realizados al fichero de configuración:
|
Aplique los cambios realizados al archivo de configuración:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl diff -f https://k8s.io/examples/application/update_deployment.yaml
|
kubectl diff -f https://k8s.io/examples/application/update_deployment.yaml
|
||||||
@@ -312,7 +312,7 @@ kubectl get -f https://k8s.io/examples/application/update_deployment.yaml -o yam
|
|||||||
La salida le mostrará los siguienes cambios hechos a la configuración activa:
|
La salida le mostrará los siguienes cambios hechos a la configuración activa:
|
||||||
|
|
||||||
* El campo `replicas` retiene el valor de 2 definido por `kubectl scale`.
|
* El campo `replicas` retiene el valor de 2 definido por `kubectl scale`.
|
||||||
Esto es posible ya que el campo fue omitido en el fichero de configuración.
|
Esto es posible ya que el campo fue omitido en el archivo de configuración.
|
||||||
* El campo `image` ha sido actualizado de `nginx:1.16.1` a `nginx:1.14.2`.
|
* El campo `image` ha sido actualizado de `nginx:1.16.1` a `nginx:1.14.2`.
|
||||||
* La anotación `last-applied-configuration` ha sido actualizada con la nueva imagen.
|
* La anotación `last-applied-configuration` ha sido actualizada con la nueva imagen.
|
||||||
* El campo `minReadySeconds` ha sido despejado.
|
* El campo `minReadySeconds` ha sido despejado.
|
||||||
@@ -360,24 +360,24 @@ spec:
|
|||||||
```
|
```
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
No es soportado combinar `kubectl apply` con los comandos de configuración imperativa de objetos
|
No se puede combinar `kubectl apply` con comandos de configuración imperativa de objetos
|
||||||
`create` y `replace`. Esto se debe a que `create`
|
como `create` y `replace`. Esto se debe a que `create`
|
||||||
y `replace` no retienen la anotación `kubectl.kubernetes.io/last-applied-configuration`
|
y `replace` no retienen la anotación `kubectl.kubernetes.io/last-applied-configuration`
|
||||||
que `kubectl apply` utiliza para calcular los cambios por realizar.
|
que `kubectl apply` utiliza para calcular los cambios por realizar.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
## Como eliminar objetos
|
## Como eliminar objetos
|
||||||
|
|
||||||
Hay dos diferentes opciones para eliminar objetos gestionados por `kubectl apply`.
|
Hay dos opciones diferentes para eliminar objetos gestionados por `kubectl apply`.
|
||||||
|
|
||||||
### Manera recomendada: `kubectl delete -f <fichero>`
|
### Manera recomendada: `kubectl delete -f <archivo>`
|
||||||
|
|
||||||
Eliminar objetos de manera manual utilizando el comando imperativo es la opción
|
Eliminar objetos de manera manual utilizando el comando imperativo es la opción
|
||||||
recomendada, ya que es más explícito en relación a lo que será eliminado, y es
|
recomendada, ya que es más explícito en relación a lo que será eliminado, y es
|
||||||
menos probable que resulte en algo siendo eliminado sin la intención del usuario.
|
menos probable que resulte en algo siendo eliminado sin la intención del usuario.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl delete -f <fichero>
|
kubectl delete -f <archivo>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Manera alternativa: `kubectl apply -f <directorio/> --prune -l etiqueta=deseada`
|
### Manera alternativa: `kubectl apply -f <directorio/> --prune -l etiqueta=deseada`
|
||||||
@@ -397,8 +397,8 @@ no intencionalmente.
|
|||||||
Como una alternativa a `kubectl delete`, puede usar `kubectl apply`para identificar objetos por ser
|
Como una alternativa a `kubectl delete`, puede usar `kubectl apply`para identificar objetos por ser
|
||||||
eliminados, luego de que sus archivos de configuración han sido eliminados del directorio. El commando `apply` con `--prune`
|
eliminados, luego de que sus archivos de configuración han sido eliminados del directorio. El commando `apply` con `--prune`
|
||||||
consulta a la API del servidor por todos los objetos que coincidan con un grupo de etiquetas, e intenta relacionar
|
consulta a la API del servidor por todos los objetos que coincidan con un grupo de etiquetas, e intenta relacionar
|
||||||
la configuración obtenida de los objetos activos contra los objetos según sus ficheros de configuración.
|
la configuración obtenida de los objetos activos contra los objetos según sus archivos de configuración.
|
||||||
Si un objeto coincide con la consulta, y no tiene un fichero de configuración en el directorio, pero si
|
Si un objeto coincide con la consulta, y no tiene un archivo de configuración en el directorio, pero si
|
||||||
tiene una anotación `last-applied-configuration`, entonces será eliminado.
|
tiene una anotación `last-applied-configuration`, entonces será eliminado.
|
||||||
|
|
||||||
{{< comment >}}
|
{{< comment >}}
|
||||||
@@ -411,7 +411,7 @@ kubectl apply -f <directorio/> --prune -l <etiquetas>
|
|||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
`apply` con `--prune` debería de ser ejecutado únicamente en contra del directorio
|
`apply` con `--prune` debería de ser ejecutado únicamente en contra del directorio
|
||||||
raíz que contiene los ficheros de configuración. Ejecutarlo en contra de sub-directorios
|
raíz que contiene los archivos de configuración. Ejecutarlo en contra de sub-directorios
|
||||||
podría causar que objetos sean eliminados no intencionalmente, si son retornados en la
|
podría causar que objetos sean eliminados no intencionalmente, si son retornados en la
|
||||||
consulta por selección de etiqueta usando `-l <etiquetas>` y no existen en el subdirectorio.
|
consulta por selección de etiqueta usando `-l <etiquetas>` y no existen en el subdirectorio.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
@@ -421,7 +421,7 @@ consulta por selección de etiqueta usando `-l <etiquetas>` y no existen en el s
|
|||||||
Puede usar `kubectl get` con `-o yaml` para ver la configuración de objetos activos:
|
Puede usar `kubectl get` con `-o yaml` para ver la configuración de objetos activos:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl get -f <fichero|url> -o yaml
|
kubectl get -f <archivo|url> -o yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
## Como son las diferencias calculadas y unidas por apply
|
## Como son las diferencias calculadas y unidas por apply
|
||||||
@@ -435,7 +435,7 @@ específicos en un objeto sin tener que leer el objeto primero.
|
|||||||
Cuando `kubectl apply` actualiza la configuración activa para un objeto, lo hace enviando
|
Cuando `kubectl apply` actualiza la configuración activa para un objeto, lo hace enviando
|
||||||
una solicitud de patch al servidor de API. El patch define actualizaciones para campos
|
una solicitud de patch al servidor de API. El patch define actualizaciones para campos
|
||||||
específicos en la configuración del objeto activo. El comando `kubectl apply` calcula esta solicitud
|
específicos en la configuración del objeto activo. El comando `kubectl apply` calcula esta solicitud
|
||||||
de patch usando el fichero de configuración, la configuración activa, y la anotación `last-applied-configuration`
|
de patch usando el archivo de configuración, la configuración activa, y la anotación `last-applied-configuration`
|
||||||
almacenada en la configuración activa.
|
almacenada en la configuración activa.
|
||||||
|
|
||||||
### Calculando la unión de un patch
|
### Calculando la unión de un patch
|
||||||
@@ -445,10 +445,10 @@ El comando `kubectl apply` escribe los contenidos de la configuración a la anot
|
|||||||
que han sido eliminados de la configuración y deben ser limpiados. Los siguientes pasos
|
que han sido eliminados de la configuración y deben ser limpiados. Los siguientes pasos
|
||||||
son usados para calcular que campos deben ser eliminados o definidos:
|
son usados para calcular que campos deben ser eliminados o definidos:
|
||||||
|
|
||||||
1. Calculo de campos por eliminar. Estos son los campos presentes en `last-applied-configuration` pero ausentes en el fichero de configuración.
|
1. Calculo de campos por eliminar. Estos son los campos presentes en `last-applied-configuration` pero ausentes en el archivo de configuración.
|
||||||
2. Calculo de campos por agregar o definir. Estos son los campos presentes en el fichero de configuración, con valores inconsistentes con la configuración activa.
|
2. Calculo de campos por agregar o definir. Estos son los campos presentes en el archivo de configuración, con valores inconsistentes con la configuración activa.
|
||||||
|
|
||||||
A continuación un ejemplo. Suponga que este es el fichero de configuración para un objeto de tipo Deployment:
|
A continuación un ejemplo. Suponga que este es el archivo de configuración para un objeto de tipo Deployment:
|
||||||
|
|
||||||
{{< codenew file="application/update_deployment.yaml" >}}
|
{{< codenew file="application/update_deployment.yaml" >}}
|
||||||
|
|
||||||
@@ -495,18 +495,18 @@ spec:
|
|||||||
Estos son los cálculos de unión que serían realizados por `kubectl apply`:
|
Estos son los cálculos de unión que serían realizados por `kubectl apply`:
|
||||||
|
|
||||||
1. Calcular los campos por eliminar, leyendo los valores de `last-applied-configuration`
|
1. Calcular los campos por eliminar, leyendo los valores de `last-applied-configuration`
|
||||||
y comparándolos con los valores en el fichero de configuración.
|
y comparándolos con los valores en el archivo de configuración.
|
||||||
Limpiar los campos definidos en null de manera explícita en el fichero de configuración
|
Limpiar los campos definidos en null de manera explícita en el archivo de configuración
|
||||||
sin tomar en cuenta si se encuentran presentes en la anotación `last-applied-configuration`.
|
sin tomar en cuenta si se encuentran presentes en la anotación `last-applied-configuration`.
|
||||||
En este ejemplo, `minReadySeconds` aparece en la anotación
|
En este ejemplo, `minReadySeconds` aparece en la anotación
|
||||||
`last-applied-configuration` pero no aparece en el fichero de configuración.
|
`last-applied-configuration` pero no aparece en el archivo de configuración.
|
||||||
**Acción:** Limpiar `minReadySeconds` de la configuración activa.
|
**Acción:** Limpiar `minReadySeconds` de la configuración activa.
|
||||||
2. Calcular los campos por ser definidos, al leer los valores del firecho de configuración
|
2. Calcular los campos por ser definidos, al leer los valores del firecho de configuración
|
||||||
y compararlos con los valores en la configuración activa. En este ejemplo, el valor `image`
|
y compararlos con los valores en la configuración activa. En este ejemplo, el valor `image`
|
||||||
en el fichero de configuración, no coincide con el valor en la configuración activa.
|
en el archivo de configuración, no coincide con el valor en la configuración activa.
|
||||||
**Acción:** Definir el campo `image` en la configuración activa.
|
**Acción:** Definir el campo `image` en la configuración activa.
|
||||||
3. Definir el valor de la anotación `last-applied-configuration` para que sea consistente
|
3. Definir el valor de la anotación `last-applied-configuration` para que sea consistente
|
||||||
con el fichero de configuración.
|
con el archivo de configuración.
|
||||||
4. Unir los resultados de 1, 2 y 3, en una única solicitud de patch para enviar al API server.
|
4. Unir los resultados de 1, 2 y 3, en una única solicitud de patch para enviar al API server.
|
||||||
|
|
||||||
Esta es la configuración activa como resultado de esta unión:
|
Esta es la configuración activa como resultado de esta unión:
|
||||||
@@ -554,7 +554,7 @@ spec:
|
|||||||
|
|
||||||
### Como se unen los diferentes tipos de campos
|
### Como se unen los diferentes tipos de campos
|
||||||
|
|
||||||
La manera en la que los campos en un fichero de configuración son unidos con la
|
La manera en la que los campos en un archivo de configuración son unidos con la
|
||||||
configuración activa depende del tipo de campo. Existen varios tipos de campos:
|
configuración activa depende del tipo de campo. Existen varios tipos de campos:
|
||||||
|
|
||||||
- *primitivo*: Campos de cadena de texto (string), enteros (integer), o lógicos (boolean).
|
- *primitivo*: Campos de cadena de texto (string), enteros (integer), o lógicos (boolean).
|
||||||
@@ -581,9 +581,9 @@ Campos primitivos son limpiados o reemplazados.
|
|||||||
`-` determina que "no aplica" debido a que el valor no es utilizado.
|
`-` determina que "no aplica" debido a que el valor no es utilizado.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
| Campo en el fichero de configuración | Campo en la configuración activa | Campo en last-applied-configuration | Acción |
|
| Campo en el archivo de configuración | Campo en la configuración activa | Campo en last-applied-configuration | Acción |
|
||||||
|---------------------------------------|------------------------------------|-------------------------------------|--------------------------------------------------------------|
|
|---------------------------------------|------------------------------------|-------------------------------------|--------------------------------------------------------------|
|
||||||
| Si | Si | - | Define el valor en el fichero de configuración como activo. |
|
| Si | Si | - | Define el valor en el archivo de configuración como activo. |
|
||||||
| Si | No | - | Define el valor a la configuración local. |
|
| Si | No | - | Define el valor a la configuración local. |
|
||||||
| No | - | Si | Elimina de la configuración activa. |
|
| No | - | Si | Elimina de la configuración activa. |
|
||||||
| No | - | No | No hacer nada. Mantiene el valor activo. |
|
| No | - | No | No hacer nada. Mantiene el valor activo. |
|
||||||
@@ -596,7 +596,7 @@ Los campos que conjúntamente representan un mapa, son unidos al comparar cada u
|
|||||||
`-` determina que "no aplica" debido a que el valor no es utilizado.
|
`-` determina que "no aplica" debido a que el valor no es utilizado.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
| Propiedad en fichero de configuración | Propiedad en configuración activa | Campo en last-applied-configuration | Acción |
|
| Propiedad en archivo de configuración | Propiedad en configuración activa | Campo en last-applied-configuration | Acción |
|
||||||
|---------------------------------------|-----------------------------------|-------------------------------------|------------------------------------------|
|
|---------------------------------------|-----------------------------------|-------------------------------------|------------------------------------------|
|
||||||
| Si | Si | - | Comparar valores de sub-propiedades. |
|
| Si | Si | - | Comparar valores de sub-propiedades. |
|
||||||
| Si | No | - | Usar configuracón local. |
|
| Si | No | - | Usar configuracón local. |
|
||||||
@@ -620,16 +620,16 @@ Esto preserva el orden de los elementos.
|
|||||||
|
|
||||||
|
|
||||||
**Ejemplo:** Usndo `kubectl apply` para actualizar el campo `args` de un Contenedor en un Pod.
|
**Ejemplo:** Usndo `kubectl apply` para actualizar el campo `args` de un Contenedor en un Pod.
|
||||||
Esto define el valor de `args` en la configuración activa, al valor en el fichero de configuración.
|
Esto define el valor de `args` en la configuración activa, al valor en el archivo de configuración.
|
||||||
Cualquier elemento de `args` que haya sido previamente agregado a la configuración activa se perderá.
|
Cualquier elemento de `args` que haya sido previamente agregado a la configuración activa se perderá.
|
||||||
El orden de los elementos definidos en `args` en el fichero de configuración, serán conservados
|
El orden de los elementos definidos en `args` en el archivo de configuración, serán conservados
|
||||||
en la configuración activa.
|
en la configuración activa.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# valor en last-applied-configuration
|
# valor en last-applied-configuration
|
||||||
args: ["a", "b"]
|
args: ["a", "b"]
|
||||||
|
|
||||||
# valores en fichero de configuración
|
# valores en archivo de configuración
|
||||||
args: ["a", "c"]
|
args: ["a", "c"]
|
||||||
|
|
||||||
# configuración activa
|
# configuración activa
|
||||||
@@ -639,7 +639,7 @@ en la configuración activa.
|
|||||||
args: ["a", "c"]
|
args: ["a", "c"]
|
||||||
```
|
```
|
||||||
|
|
||||||
**Explicación:** La unión utilizó los valores del fichero de configuración para definir los nuevos valores de la lista.
|
**Explicación:** La unión utilizó los valores del archivo de configuración para definir los nuevos valores de la lista.
|
||||||
|
|
||||||
#### Unir elementos individuales en una lista de elementos complejos
|
#### Unir elementos individuales en una lista de elementos complejos
|
||||||
|
|
||||||
@@ -665,7 +665,7 @@ Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por l
|
|||||||
- name: nginx-helper-b # llave: nginx-helper-b; será conservado
|
- name: nginx-helper-b # llave: nginx-helper-b; será conservado
|
||||||
image: helper:1.3
|
image: helper:1.3
|
||||||
|
|
||||||
# valor en fichero de configuración
|
# valor en archivo de configuración
|
||||||
containers:
|
containers:
|
||||||
- name: nginx
|
- name: nginx
|
||||||
image: nginx:1.16
|
image: nginx:1.16
|
||||||
@@ -703,16 +703,16 @@ Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por l
|
|||||||
**Explicación:**
|
**Explicación:**
|
||||||
|
|
||||||
- El contenedor llamado "nginx-helper-a" fué eliminado al no aparecer ningún
|
- El contenedor llamado "nginx-helper-a" fué eliminado al no aparecer ningún
|
||||||
contenedor llamado "nginx-helper-a" en el fichero de configuración.
|
contenedor llamado "nginx-helper-a" en el archivo de configuración.
|
||||||
- El contenedor llamado "nginx-helper-b" mantiene los cambios a `args`
|
- El contenedor llamado "nginx-helper-b" mantiene los cambios a `args`
|
||||||
existentes en la configuración activa. `kubectl apply` pudo identificar que
|
existentes en la configuración activa. `kubectl apply` pudo identificar que
|
||||||
el contenedor "nginx-helper-b" en la configuración activa es el mismo
|
el contenedor "nginx-helper-b" en la configuración activa es el mismo
|
||||||
"nginx-helper-b" que aparece en el fichero de configuración, aún teniendo diferentes
|
"nginx-helper-b" que aparece en el archivo de configuración, aún teniendo diferentes
|
||||||
valores en los campos (no existe `args` en el fichero de configuración). Esto sucede
|
valores en los campos (no existe `args` en el archivo de configuración). Esto sucede
|
||||||
debido a que el valor del campo `patchMergeKey` (name) es idéntico en ambos.
|
debido a que el valor del campo `patchMergeKey` (name) es idéntico en ambos.
|
||||||
- El contenedor llamado "nginx-helper-c" fue agregado ya que no existe ningún contenedor
|
- El contenedor llamado "nginx-helper-c" fue agregado ya que no existe ningún contenedor
|
||||||
con ese nombre en la configuración activa, pero si existe uno con ese nombre
|
con ese nombre en la configuración activa, pero si existe uno con ese nombre
|
||||||
en el fichero de configuración.
|
en el archivo de configuración.
|
||||||
- El contendor llamado "nginx-helper-d" fue conservado debido a que no aparece
|
- El contendor llamado "nginx-helper-d" fue conservado debido a que no aparece
|
||||||
ningún elemento con ese nombre en last-applied-configuration.
|
ningún elemento con ese nombre en last-applied-configuration.
|
||||||
|
|
||||||
@@ -721,10 +721,9 @@ Esto une la lista como si fuese un mapa donde cada elemento utiliza `name` por l
|
|||||||
A partir de Kubernetes 1.5, el unir listas de elementos primitivos no es soportado.
|
A partir de Kubernetes 1.5, el unir listas de elementos primitivos no es soportado.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
La escogencia de estrategia por selecciones para un campo en particular, es controlada
|
La etiqueta `patchStrategy` en [types.go](https://github.com/kubernetes/api/blob/d04500c8c3dda9c980b668c57abc2ca61efcf5c4/core/v1/types.go#L2748) es la que
|
||||||
por la etiqueta `patchStrategy` en [types.go](https://github.com/kubernetes/api/blob/d04500c8c3dda9c980b668c57abc2ca61efcf5c4/core/v1/types.go#L2748)
|
determina cual de las estrategias aplica para cualquier campo en particular.
|
||||||
Si no se especifica `patchStrategy` para un campo de tipo lista, entonces el campo
|
Para campos de tipo lista, el campo será reemplazado cuando no exista una especificación de `patchStrategy`.
|
||||||
es reemplazado.
|
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
{{< comment >}}
|
{{< comment >}}
|
||||||
@@ -743,7 +742,7 @@ is lost.
|
|||||||
El Servidor de API define algunos campos a sus valores por defecto si no son especificados
|
El Servidor de API define algunos campos a sus valores por defecto si no son especificados
|
||||||
al momento de crear un objeto.
|
al momento de crear un objeto.
|
||||||
|
|
||||||
Aquí puede ver un fichero de configuración para un Deployment. Este fichero no especifica
|
Aquí puede ver un archivo de configuración para un Deployment. Este archivo no especifica
|
||||||
el campo `strategy`:
|
el campo `strategy`:
|
||||||
|
|
||||||
{{< codenew file="application/simple_deployment.yaml" >}}
|
{{< codenew file="application/simple_deployment.yaml" >}}
|
||||||
@@ -760,8 +759,8 @@ Despliegue la configuración activa usando `kubectl get`:
|
|||||||
kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yaml
|
kubectl get -f https://k8s.io/examples/application/simple_deployment.yaml -o yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
La salida demuestra que el API Server definió varios campos con los valores por defecto
|
La salida muestra que el servidor de API definió varios campos con los valores por defecto
|
||||||
en la configuración activa. Estos campos no fueron especificados en el fichero de
|
en la configuración activa. Estos campos no fueron especificados en el archivo de
|
||||||
configuración.
|
configuración.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -801,14 +800,14 @@ spec:
|
|||||||
# ...
|
# ...
|
||||||
```
|
```
|
||||||
|
|
||||||
En una solicitud de patch, los campos definidos a valores por defecto no son re-definidos exceptuando
|
En una solicitud de patch, los campos definidos a valores por defecto no son redefinidos a excepción
|
||||||
cuando hayan sido limpiados de manera explícita como parte de la solicitud de patch. Esto puede
|
de cuando hayan sido limpiados de manera explícita como parte de la solicitud de patch. Esto puede
|
||||||
causar comportamientos no esperados para campos cuyo valor por defecto es basado en los valores
|
causar comportamientos no esperados para campos cuyo valor por defecto es basado en los valores
|
||||||
de otros campos. Cuando el otro campo ha cambiado, el valor por defecto de ellos no será actualizado
|
de otros campos. Cuando el otro campo ha cambiado, el valor por defecto de ellos no será actualizado
|
||||||
de no ser que sean limpiados de manera explícita.
|
de no ser que sean limpiados de manera explícita.
|
||||||
|
|
||||||
Por esta razón, se recomienda que algunos campos que reciben un valor por defecto del
|
Por esta razón, se recomienda que algunos campos que reciben un valor por defecto del
|
||||||
servidor sean definidos de manera explícita en los ficheros de configuración, aun cuando
|
servidor sean definidos de manera explícita en los archivos de configuración, aun cuando
|
||||||
el valor definido sea idéntico al valor por defecto. Esto facilita la identificación
|
el valor definido sea idéntico al valor por defecto. Esto facilita la identificación
|
||||||
de valores conflictivos que podrían no ser revertidos a valores por defecto por parte
|
de valores conflictivos que podrían no ser revertidos a valores por defecto por parte
|
||||||
del servidor.
|
del servidor.
|
||||||
@@ -829,7 +828,7 @@ spec:
|
|||||||
ports:
|
ports:
|
||||||
- containerPort: 80
|
- containerPort: 80
|
||||||
|
|
||||||
# fichero de configuración
|
# archivo de configuración
|
||||||
spec:
|
spec:
|
||||||
strategy:
|
strategy:
|
||||||
type: Recreate # valor actualizado
|
type: Recreate # valor actualizado
|
||||||
@@ -888,12 +887,12 @@ spec:
|
|||||||
agrega los valores por defecto a `strategy.rollingUpdate`.
|
agrega los valores por defecto a `strategy.rollingUpdate`.
|
||||||
3. El usuario cambia `strategy.type` a `Recreate`. Los valores de `strategy.rollingUpdate`
|
3. El usuario cambia `strategy.type` a `Recreate`. Los valores de `strategy.rollingUpdate`
|
||||||
se mantienen en su configuración por defecto, sin embargo el servidor espera que se limpien.
|
se mantienen en su configuración por defecto, sin embargo el servidor espera que se limpien.
|
||||||
Si los valores de `strategy.rollingUpdate` hubiesen sido definidos inicialmente en el fichero
|
Si los valores de `strategy.rollingUpdate` hubiesen sido definidos inicialmente en el archivo
|
||||||
de configuración, hubiese sido más claro que requerían ser eliminados.
|
de configuración, hubiese sido más claro que requerían ser eliminados.
|
||||||
4. Apply fallará debido a que `strategy.rollingUpdate` no fue eliminado. El campo `strategy.rollingupdate`
|
4. Apply fallará debido a que `strategy.rollingUpdate` no fue eliminado. El campo `strategy.rollingupdate`
|
||||||
no puede estar definido, si el valor de `strategy.type` es `Recreate`.
|
no puede estar definido, si el valor de `strategy.type` es `Recreate`.
|
||||||
|
|
||||||
Recomendación: Estos campos deberían de ser definidos de manera explícita en el fichero de configuración:
|
Recomendación: Estos campos deberían de ser definidos de manera explícita en el archivo de configuración:
|
||||||
|
|
||||||
- Etiquetas de Selectors y PodTemplate en cargas de trabajo como Deployment, StatefulSet, Job, DaemonSet,
|
- Etiquetas de Selectors y PodTemplate en cargas de trabajo como Deployment, StatefulSet, Job, DaemonSet,
|
||||||
ReplicaSet, y ReplicationController
|
ReplicaSet, y ReplicationController
|
||||||
@@ -901,31 +900,31 @@ Recomendación: Estos campos deberían de ser definidos de manera explícita en
|
|||||||
|
|
||||||
### Como limpiar campos definidos a valores por defecto por el servidor, o definidos por otros escritores
|
### Como limpiar campos definidos a valores por defecto por el servidor, o definidos por otros escritores
|
||||||
|
|
||||||
Campos que no aparecen en el fichero de configuración pueden ser limpiados si se define su valor
|
Campos que no aparecen en el archivo de configuración pueden ser limpiados si se define su valor
|
||||||
a `null` y luego se aplica el fichero de configuración.
|
a `null` y luego se aplica el archivo de configuración.
|
||||||
Para los campos definidos a valores por defecto por el servidor, esto provoca el re establecimiento
|
Para los campos definidos a valores por defecto por el servidor, esto provoca que se reestablezca
|
||||||
a sus valores por defecto.
|
a sus valores por defecto.
|
||||||
|
|
||||||
## Como cambiar al propietario de un campo entre un fichero de configuración y un escritor imperativo
|
## Como cambiar al propietario de un campo entre un archivo de configuración y un escritor imperativo
|
||||||
|
|
||||||
Estos son los únicos métodos que debe usar para cambiar un campo individual de un objeto:
|
Estos son los únicos métodos que debe usar para cambiar un campo individual de un objeto:
|
||||||
|
|
||||||
- Usando `kubectl apply`.
|
- Usando `kubectl apply`.
|
||||||
- Escribiendo de manera directa a la configuración activa sin modificar el fichero de configuración:
|
- Escribiendo de manera directa a la configuración activa sin modificar el archivo de configuración:
|
||||||
por ejemplo, usando `kubectl scale`.
|
por ejemplo, usando `kubectl scale`.
|
||||||
|
|
||||||
### Cambiando al propietario de un campo de un escritor imperativo a un fichero de configuración
|
### Cambiando al propietario de un campo de un escritor imperativo a un archivo de configuración
|
||||||
|
|
||||||
Añada el campo al fichero de configuración, y no realice nuevas actualizaciones a la configuración
|
Añada el campo al archivo de configuración, y no realice nuevas actualizaciones a la configuración
|
||||||
activa que no sucedan por medio de `kubectl apply`.
|
activa que no sucedan por medio de `kubectl apply`.
|
||||||
|
|
||||||
### Cambiando al propietario de un fichero de configuración a un escritor imperativo
|
### Cambiando al propietario de un archivo de configuración a un escritor imperativo
|
||||||
|
|
||||||
A partir de Kubernetes 1.5, el cambiar un campo que ha sido definido por medio de un
|
A partir de Kubernetes 1.5, el cambiar un campo que ha sido definido por medio de un
|
||||||
fichero de configuración para que sea modificado por un escritor imperativo requiere
|
archivo de configuración para que sea modificado por un escritor imperativo requiere
|
||||||
pasos manuales:
|
pasos manuales:
|
||||||
|
|
||||||
- Eliminar el campo del fichero de configuración.
|
- Eliminar el campo del archivo de configuración.
|
||||||
- Eliminar el campo de la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto activo.
|
- Eliminar el campo de la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto activo.
|
||||||
|
|
||||||
## Cambiando los métodos de gestión
|
## Cambiando los métodos de gestión
|
||||||
@@ -950,17 +949,17 @@ fields to the annotation, and instead. Then add this bullet point.
|
|||||||
El migrar de gestión imperativa utilizando comandos a la gestión declarativa de objetos
|
El migrar de gestión imperativa utilizando comandos a la gestión declarativa de objetos
|
||||||
requiere varios pasos manuales:
|
requiere varios pasos manuales:
|
||||||
|
|
||||||
1. Exporte el objeto activo a un fichero local de configuración:
|
1. Exporte el objeto activo a un archivo local de configuración:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl get <tipo>/<nombre> -o yaml > <tipo>_<nombre>.yaml
|
kubectl get <tipo>/<nombre> -o yaml > <tipo>_<nombre>.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
1. Elimine de manera manual el campo `status` del fichero de configuración.
|
1. Elimine de manera manual el campo `status` del archivo de configuración.
|
||||||
|
|
||||||
{{< note >}}
|
{{< note >}}
|
||||||
Este paso es opcional, ya que `kubectl apply` no actualiza el campo `status`
|
Este paso es opcional, ya que `kubectl apply` no actualiza el campo `status`
|
||||||
aunque este presente en el fichero de configuración.
|
aunque este presente en el archivo de configuración.
|
||||||
{{< /note >}}
|
{{< /note >}}
|
||||||
|
|
||||||
1. Defina la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto:
|
1. Defina la anotación `kubectl.kubernetes.io/last-applied-configuration` en el objeto:
|
||||||
@@ -988,7 +987,7 @@ TODO(pwittrock): Why doesn't export remove the status field? Seems like it shou
|
|||||||
## Definiendo los selectores para el controlador y las etiquetas de PodTemplate
|
## Definiendo los selectores para el controlador y las etiquetas de PodTemplate
|
||||||
|
|
||||||
{{< warning >}}
|
{{< warning >}}
|
||||||
Actualizar selectores en controladores se desaconseja encarecidamente.
|
Se desaconseja encarecidamente actualizar los selectores en controladores.
|
||||||
{{< /warning >}}
|
{{< /warning >}}
|
||||||
|
|
||||||
La forma recomendada es definir una etiqueta única e inmutable para PodTemplate usada
|
La forma recomendada es definir una etiqueta única e inmutable para PodTemplate usada
|
||||||
|
|||||||
Reference in New Issue
Block a user