Como administrador o desarrollador de Code Stream, puede utilizar Code Stream y VMware Tanzu Kubernetes Grid Integrated Edition (anteriormente denominado VMware Enterprise PKS) para automatizar la implementación de las aplicaciones de software en un clúster de Kubernetes. En este caso práctico se mencionan otros métodos que se pueden utilizar para automatizar el lanzamiento de aplicaciones.
En este caso práctico, creará una canalización compuesta por dos etapas y utilizará Jenkins para compilar e implementar la aplicación.
- La primera etapa se centra en el desarrollo. En ella, se usa Jenkins para extraer el código de una rama del repositorio de GitHub y, a continuación, este se compila, prueba y publica.
- La segunda etapa se centra en la implementación. En ella, se ejecuta una tarea de operación de usuario que requiere la aprobación de los usuarios principales para que la canalización pueda implementar la aplicación en el clúster de Kubernetes.
Cuando se utiliza un endpoint de API de Kubernetes en el área de trabajo de la canalización, Code Stream crea los recursos de Kubernetes necesarios, como ConfigMap, Secret y Pod, para ejecutar la tarea de integración continua (continuous integration, CI) o la tarea personalizada. Code Stream se comunica con el contenedor mediante NodePort.
Para compartir datos entre ejecuciones de canalización, debe proporcionar una notificación de volumen persistente, y Code Stream montará la notificación de volumen persistente en el contenedor para almacenar los datos y utilizarla para ejecuciones de canalización posteriores.
El área de trabajo de canalización de Code Stream admite Docker y Kubernetes para tareas de integración continua y tareas personalizadas.
Para obtener más información sobre la configuración del área de trabajo, consulte Configurar el área de trabajo de la canalización.
Las herramientas de desarrollo, las instancias de implementación y el archivo YAML de la canalización deben estar disponibles para que dicha canalización pueda compilar, probar, publicar e implementar la aplicación. La canalización implementará la aplicación en las instancias de desarrollo y producción de los clústeres de Kubernetes.
Estos son otros métodos que automatizan el lanzamiento de la aplicación:
- En lugar de usar Jenkins para compilar la aplicación, puede utilizar la capacidad de compilación nativa de Code Stream y un host de compilación de Docker.
- En lugar de implementar la aplicación en un clúster de Kubernetes, puede implementarla en un clúster de Amazon Web Services (AWS).
Para obtener más información sobre cómo usar la capacidad de compilación nativa de Code Stream y un host de Docker, consulte:
Requisitos previos
- Compruebe que el código de la aplicación que se va a implementar resida en un repositorio de GitHub en funcionamiento.
- Compruebe que tiene una instancia de Jenkins en funcionamiento.
- Compruebe que tiene un servidor de correo electrónico en funcionamiento.
- En Code Stream, cree un endpoint de correo electrónico que se conecte al servidor de correo electrónico.
- Configure dos clústeres de Kubernetes en Amazon Web Services (AWS), uno de desarrollo y otro de producción, donde la canalización va a implementar la aplicación.
- Compruebe que el repositorio de GitHub contiene el código YAML de la canalización y, opcionalmente, un archivo YAML donde se definen los metadatos y las especificaciones del entorno.
Procedimiento
Resultados
Enhorabuena. Automatizó la implementación de la aplicación de software en el clúster de Kubernetes.
Ejemplo: YAML de canalización de ejemplo que implementa una aplicación en un clúster de Kubernetes
El YAML del tipo de canalización utilizado en este ejemplo es similar al siguiente código:
apiVersion: v1 kind: Namespace metadata: name: ${input.GIT_BRANCH_NAME} namespace: ${input.GIT_BRANCH_NAME} --- apiVersion: v1 data: .dockercfg: eyJzeW1waG9ueS10YW5nby1iZXRhMi5qZnJvZy5pbyI6eyJ1c2VybmFtZSI6InRhbmdvLWJldGEyIiwicGFzc3dvcmQiOiJhRGstcmVOLW1UQi1IejciLCJlbWFpbCI6InRhbmdvLWJldGEyQHZtd2FyZS5jb20iLCJhdXRoIjoiZEdGdVoyOHRZbVYwWVRJNllVUnJMWEpsVGkxdFZFSXRTSG8zIn19 kind: Secret metadata: name: jfrog namespace: ${input.GIT_BRANCH_NAME} type: kubernetes.io/dockercfg --- apiVersion: v1 kind: Service metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: ports: - port: 80 selector: app: codestream tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: selector: matchLabels: app: codestream tier: frontend strategy: type: Recreate template: metadata: labels: app: codestream tier: frontend spec: containers: - name: codestream image: cas.jfrog.io/codestream:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: codestream imagePullSecrets: - name: jfrog
Qué hacer a continuación
Para implementar la aplicación de software en el clúster de Kubernetes de producción, vuelva a realizar los pasos y seleccione el clúster de producción.
Para obtener más información sobre cómo integrar Code Stream con Jenkins, consulte Cómo se integra Code Stream con Jenkins.