From df79294b9926fcd85a3749410b1ba9249cf696c1 Mon Sep 17 00:00:00 2001
From: "Brayan Munoz V." <61812255+BrayanMnz@users.noreply.github.com>
Date: Fri, 9 Aug 2024 17:51:45 -0400
Subject: [PATCH 1/3] Translate chapter-4 into Spanish
Creating the README-es.md that contains the translation into spanish of the chapter 4.
---
chapter-4/README-es.md | 250 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 250 insertions(+)
create mode 100644 chapter-4/README-es.md
diff --git a/chapter-4/README-es.md b/chapter-4/README-es.md
new file mode 100644
index 0000000..9ac4fa6
--- /dev/null
+++ b/chapter-4/README-es.md
@@ -0,0 +1,250 @@
+# Environment Pipelines
+
+---
+_🌍 Available in_: [English](README.md) | [中文 (Chinese)](README-zh.md) | [日本語 (Japanese)](README-ja.md)
+> **Nota:** Presentado por la fantástica comunidad de [ 🌟 contribuidores](https://github.com/salaboy/platforms-on-k8s/graphs/contributors) cloud-native!
+---
+
+En este breve tutorial, configuraremos el Pipeline de nuestro entorno de ensayo utilizando [ArgoCD](https://argo-cd.readthedocs.io/en/stable/). Configuraremos el ambiente para que contenga una instancia de la `Aplicación para Conferencias`.
+
+Definiremos la configuración del ambiente de ensayo utilizando un repositorio de Git. El [directorio `argo-cd/staging`](argo-cd/staging/) contiene la definición de un Helm chart que puede ser sincronizado con multiples clusters de Kubernetes.
+
+## Prerequisites and installation
+
+- Necesitamos un Clúster de Kubernetes. En este tutorial, utilizaremos Kubernetes [KinD](https://kind.sigs.k8s.io/)
+- Instala ArgoCD en tu Clúster, [sigue estas instrucciones](https://argo-cd.readthedocs.io/en/stable/getting_started/), opcionalmente puedes instalar el CLI de `argocd`
+- You can fork/copy [this repository](http://github.com/salaboy/platforms-on-k8s/) como si quisieras cambiar la configuración de la aplicación, necesitarás tener accesos de escritura al repositorio.. Utilizaremos el directorio `chapter-4/argo-cd/staging/`
+
+[Crea un Cluster KinD, tal y como hicimos en el capítulo 2](../chapter-2/README-es.md#creando-un-cl%C3%BAster-local-con-kubernetes-kind).
+
+Una vez que el clúster esté en funcionamiento con el controlador nginx-ingress, vamos a instalar ArgoCD en el clúster:
+
+```shell
+kubectl create namespace argocd
+kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
+```
+
+Deberías ver algo como lo siguiente:
+
+```shell
+> kubectl create namespace argocd
+kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
+namespace/argocd created
+customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
+customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io created
+customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
+serviceaccount/argocd-application-controller created
+serviceaccount/argocd-applicationset-controller created
+serviceaccount/argocd-dex-server created
+serviceaccount/argocd-notifications-controller created
+serviceaccount/argocd-redis created
+serviceaccount/argocd-repo-server created
+serviceaccount/argocd-server created
+role.rbac.authorization.k8s.io/argocd-application-controller created
+role.rbac.authorization.k8s.io/argocd-applicationset-controller created
+role.rbac.authorization.k8s.io/argocd-dex-server created
+role.rbac.authorization.k8s.io/argocd-notifications-controller created
+role.rbac.authorization.k8s.io/argocd-server created
+clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
+clusterrole.rbac.authorization.k8s.io/argocd-server created
+rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
+rolebinding.rbac.authorization.k8s.io/argocd-applicationset-controller created
+rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
+rolebinding.rbac.authorization.k8s.io/argocd-notifications-controller created
+rolebinding.rbac.authorization.k8s.io/argocd-redis created
+rolebinding.rbac.authorization.k8s.io/argocd-server created
+clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
+clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
+configmap/argocd-cm created
+configmap/argocd-cmd-params-cm created
+configmap/argocd-gpg-keys-cm created
+configmap/argocd-notifications-cm created
+configmap/argocd-rbac-cm created
+configmap/argocd-ssh-known-hosts-cm created
+configmap/argocd-tls-certs-cm created
+secret/argocd-notifications-secret created
+secret/argocd-secret created
+service/argocd-applicationset-controller created
+service/argocd-dex-server created
+service/argocd-metrics created
+service/argocd-notifications-controller-metrics created
+service/argocd-redis created
+service/argocd-repo-server created
+service/argocd-server created
+service/argocd-server-metrics created
+deployment.apps/argocd-applicationset-controller created
+deployment.apps/argocd-dex-server created
+deployment.apps/argocd-notifications-controller created
+deployment.apps/argocd-redis created
+deployment.apps/argocd-repo-server created
+deployment.apps/argocd-server created
+statefulset.apps/argocd-application-controller created
+networkpolicy.networking.k8s.io/argocd-application-controller-network-policy created
+networkpolicy.networking.k8s.io/argocd-applicationset-controller-network-policy created
+networkpolicy.networking.k8s.io/argocd-dex-server-network-policy created
+networkpolicy.networking.k8s.io/argocd-notifications-controller-network-policy created
+networkpolicy.networking.k8s.io/argocd-redis-network-policy created
+networkpolicy.networking.k8s.io/argocd-repo-server-network-policy created
+networkpolicy.networking.k8s.io/argocd-server-network-policy created
+```
+
+Puedes acceder la interfaz de usuario de ArgoCD utilizando `port-forward`, en una **nueva terminal** ejecuta:
+
+```shell
+kubectl port-forward svc/argocd-server -n argocd 8080:443
+```
+
+**Nota**: Debes esperar que los pods de ArgoCD hayan iniciado. La primera vez que hagas esto, tomará más tiempo porque necesita obtener las imagenes de los contenedores desde Internet.
+
+Puedes acceder a la interfaz de usuario, apuntando tu navegador a [http://localhost:8080](http://localhost:8080)
+
+
+
+**Nota**: Por defecto la instalación funciona utilizando HTTP y no HTTPS, Por lo tanto, necesitas aceptar la advertencia (Presiona el botón "Advanced" en Chrome) y procede (**Proceed to localhost (unsafe)**).
+
+
+
+Eso debería llevarte a la página de inicio de sesión:
+
+
+
+El usuario es `admin`, y para obtener la contraseña para el Dashboard de ArgoCD ejecutamos:
+
+```shell
+kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
+```
+
+Una vez dentro, deberías ver la pantalla de inicio de sesión, vacía:
+
+
+
+Ahora, vamos a configurar nuestro ambiente de ensayo.
+
+
+# Configurando nuestra aplicación para el ambiente de ensayo
+
+Para este tutorial, utilizaremos un solo namespace para representar nuestro Ambiente de Ensayo. Con ArgoCD no hay límites, y nuestro ambiente de ensayo podría ser un Clúster de Kubernetes totalmente diferente.
+
+Primero, creemos el namespace para nuestro Ambiente de Ensayo:
+
+```shell
+kubectl create ns staging
+```
+
+Deberías ver algo como lo siguiente:
+
+```shell
+> kubectl create ns staging
+namespace/staging created
+```
+
+Nota: Alternativamente, puedes usar la opción para crear de manera automática un namespace en la creación de la aplicación ArgoCD.
+
+Una vez tenemos ArgoCD instalado, podemos acceder a la interfaz de usuario para configurar el proyecto.
+
+
+
+Presiona el botón **"+ New App"** y utiliza los siguientes detalles para configurar el proyecto:
+
+
+
+Estas son los parámetros de entrada utilizados para crear la aplicación:
+
+- Application Name: "staging-environment"
+- Project: "default"
+- Sync Policy: "Automatic"
+- Source Repository: [https://github.com/salaboy/platforms-on-k8s](https://github.com/salaboy/platforms-on-k8s) (here you can point to your fork)
+- Revision: "HEAD"
+- Path: "chapter-4/argo-cd/staging/"
+- Cluster: "https://kubernetes.default.svc"
+- Namespace: "staging"
+
+
+
+Los demás valores permanecerán con sus valores predeterminados y presione **Create** en la parte superior
+
+Una vez la aplicación sea creada, automáticamente sincronizará los cambios, dado que seleccionamos el modo **Automatic** mode.
+
+
+
+Puedes expandir la aplicación haciendo click en ella para ver la vista completa de todos los recursos que están siendo creados:
+
+
+
+Si estás ejecutando en un ambiente local, siempre puedes acceder a la aplicación usando `port-forward`, en una **nueva terminal** ejecuta:
+
+```shell
+kubectl port-forward svc/frontend -n staging 8081:80
+```
+
+Espera que los pods de la aplicación estén en funcionamiento y puedes acceder a la aplicación apuntanto tu navegador a [http://localhost:8081](http://localhost:8081).
+
+
+
+
+Como siempre, puedes monitorear el estado de los pods y servicios utilizando `kubectl`. Para verificar si los pods de la aplicación están listos, puedes ejecutar:
+
+```shell
+kubectl get pods -n staging
+```
+
+Deberías ver algo como lo siguiente:
+
+```shell
+> kubectl get pods -n staging
+NAME READY STATUS RESTARTS AGE
+stating-environment-agenda-service-deployment-6c9cbb9695-xj99z 1/1 Running 5 (6m ago) 8m4s
+stating-environment-c4p-service-deployment-69d485ffd8-q96z4 1/1 Running 5 (5m52s ago) 8m4s
+stating-environment-frontend-deployment-cd76bdc8c-58vzr 1/1 Running 5 (6m3s ago) 8m4s
+stating-environment-kafka-0 1/1 Running 0 8m4s
+stating-environment-notifications-service-deployment-5c9b5bzb5p 1/1 Running 5 (6m13s ago) 8m4s
+stating-environment-postgresql-0 1/1 Running 0 8m4s
+stating-environment-redis-master-0 1/1 Running 0 8m4s
+```
+
+**Nota**: Unos cuantos reinicios está bien OK (columna RESTARTS), dado que algunos servicios deben esperar que la infraestructura correspondiente esté en funcionamiento (Redis, PostgreSQL, Kafka) para ellos también entrar en funcionamiento sin ningún problema.
+
+## Cambiando la configuración de la Aplicación en el ambiente de ensayo
+
+Para actualizar la versión de las configuraciones de tus servicios, puedes actualizar los archivos ubicados en el archivo [Chart.yaml](argo-cd/staging/Chart.yaml) o [values.yaml](argo-cd/staging/values.yaml) ubicado dentro del directorio [staging](staging/).
+
+Para este ejemplo, puedes cambiar la configuración de la aplicación, actulizando los detalles y parámetros de la aplicación de ArgoCD.
+
+Si bien no harás esto con tus aplicaciones, simplemente estamos simulando un cambio en el repositorio de GitHub donde se encuentra definido nuestro Ambiente de Ensayo.
+
+
+
+Continúa editando los detalles y parámetros de la aplicación, selecciona `values-debug-enabled.yaml` para el archivo de valores que queremos utilizar con esta aplicación. Este archivo establece el indicador (flag) de depuración en el servicio de la interfaz de usuario y nos simula cambiar el archivo `values.yaml`que utilizamos para la primera instalación.
+
+
+
+Debido a que hemos estado utilizando port-forwarding, es posible que necesites ejecutar este comando nuevamente:
+
+```shell
+kubectl port-forward svc/frontend -n staging 8081:80
+```
+
+Esto se debe a que el Servicio de la Interfaz de Usuario será reemplazado por la nueva versión configurada, por lo tanto el redireccionamiento de puerto (port-forwarding) necesita reiniciarse para que apunte al nuevo pod del servicio.
+
+Una vez la Interfaz de Usuario esté en funcionamiento, deberías ver la pestaña de Debug en la sección de Back Office:
+![](imgs/app-debug.png)
+
+## Limpiando los cambios
+
+Si quieres deshacerte del Clúster KinD que hemos creado para este tutorial, puedes ejecutar:
+
+```shell
+kind delete clusters dev
+```
+
+## Siguientes Pasos
+
+ArgoCD es solo un proyecto para implementar GitOps, ¿puedes replicar este tuorial utilizando FluxCD? ¿Cuál prefieres? ¿Tu organización está actualmente utilizando una herramienta de GitOps? ¿Qué se necesitaría para implementar el esqueleto móvil de la Aplicación de Conferencia en un clúster de Kubernetes utilizando esa herramienta?
+
+¿Puedes crear otro ambiente, digamos un `production-environment` y describir el flujo que se necesitaría seguir un nuevo despliegue del `notifications-service` desde el Ambiente de Ensayo al Ambiente de Producción? ¿Dónde almacenarías la configuración del Ambiente de Producción?
+
+## Resumen y Contribución
+
+En este tutorial, creamos nuestro **Ambiente de Ensayo** utilizando una aplicación ArgoCD. Esto nos permitió sincronizar la configuración ubicada dentro de un repositorio de GitHub con nuestro clúster de Kubernetes en ejecución en KinD. Si realizas cambios en el contenido del repositorio de GitHub y actualizas la aplicación de ArgoCD, este notará que nuestro ambiente no está sincronizado. Si utilizamos una estrategia de sincronización automatizada, ArgoCD ejecutará el paso de sincronización automáticamente cada vez que note que se han producido cambios en la configuración. Para obtener más información, consulta el [sitio web del proyecto](https://argo-cd.readthedocs.io/en/stable/) o [mi blog](https://www.salaboy.com).
+
+Do you want to improve this tutorial? Create an issue, drop me a message on [Twitter](https://twitter.com/salaboy), or send a Pull Request.
From 1eebe77cf55013e24990e14250ba0b13675b0b9b Mon Sep 17 00:00:00 2001
From: "Brayan Munoz V." <61812255+BrayanMnz@users.noreply.github.com>
Date: Fri, 9 Aug 2024 17:54:10 -0400
Subject: [PATCH 2/3] Adding reference to Spanish version in English version.
Adding the link to the Spanish version at the header of English version.
---
chapter-4/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chapter-4/README.md b/chapter-4/README.md
index b493d36..1908a13 100644
--- a/chapter-4/README.md
+++ b/chapter-4/README.md
@@ -1,7 +1,7 @@
# Environment Pipelines
---
-_🌍 Available in_: [English](README.md) | [中文 (Chinese)](README-zh.md) | [日本語 (Japanese)](README-ja.md)
+_🌍 Available in_: [English](README.md) | [中文 (Chinese)](README-zh.md) | [日本語 (Japanese)](README-ja.md) | [Español (Spanish)](README-es.md)
> **Note:** Brought to you by the fantastic cloud-native community's [ 🌟 contributors](https://github.com/salaboy/platforms-on-k8s/graphs/contributors)!
---
From e1742fc9965ab2b72a2c8c6d981632708731aea6 Mon Sep 17 00:00:00 2001
From: "Brayan Munoz V." <61812255+BrayanMnz@users.noreply.github.com>
Date: Fri, 9 Aug 2024 17:54:54 -0400
Subject: [PATCH 3/3] Adding reference to the Spanish version at the Japanes
version.
---
chapter-4/README-ja.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/chapter-4/README-ja.md b/chapter-4/README-ja.md
index a8b2dc6..3b7a141 100644
--- a/chapter-4/README-ja.md
+++ b/chapter-4/README-ja.md
@@ -1,7 +1,7 @@
# 環境パイプライン
---
-_🌍 利用可能な言語_: [English](README.md) | [中文 (Chinese)](README-zh.md) | [日本語 (Japanese)](README-ja.md)
+_🌍 利用可能な言語_: [English](README.md) | [中文 (Chinese)](README-zh.md) | [日本語 (Japanese)](README-ja.md) | [Español (Spanish)](README-es.md)
> **注**: これは素晴らしいクラウドネイティブコミュニティの[🌟貢献者](https://github.com/salaboy/platforms-on-k8s/graphs/contributors)によってもたらされました!
---