En tant qu'administrateur ou développeur Automation Pipelines, vous pouvez utiliser Automation Pipelines et VMware Tanzu Kubernetes Grid Integrated Edition (anciennement VMware Enterprise PKS) pour automatiser le déploiement de vos applications logicielles sur un cluster Kubernetes. Ce cas d'utilisation mentionne d'autres méthodes que vous pouvez utiliser pour automatiser la version de votre application.
Dans ce cas d'utilisation, vous allez créer un pipeline comportant deux étapes, et utiliser Jenkins pour créer et déployer votre application.
- La première étape concerne le développement. Elle utilise Jenkins pour extraire votre code d'une branche de votre référentiel GitHub, puis pour le créer, le tester et le publier.
- La seconde étape concerne le déploiement. Elle exécute une tâche d'opération utilisateur qui nécessite l'approbation des utilisateurs clés pour que le pipeline puisse déployer votre application sur votre cluster Kubernetes.
Lors de l'utilisation d'un point de terminaison d'API Kubernetes dans l'espace de travail de pipeline, Automation Pipelines crée les ressources Kubernetes nécessaires, telles que ConfigMap, Secret et Pod, pour exécuter la tâche d'intégration continue (CI) ou la tâche personnalisée. Automation Pipelines communique avec le conteneur à l'aide du port de nœud.
Pour partager des données entre des exécutions de pipeline, vous devez fournir une réclamation de volume persistant, et Automation Pipelines montera la réclamation de volume persistant sur le conteneur pour stocker les données et l'utilisera pour les exécutions de pipeline suivantes.
L'espace de travail de pipeline Automation Pipelines prend en charge Docker et Kubernetes pour les tâches d'intégration continue et les tâches personnalisées.
Pour plus d'informations sur la configuration de l'espace de travail, consultez Configuration de l'espace de travail de pipeline.
Les outils de développement, les instances de déploiement et le fichier YAML du pipeline doivent être disponibles afin que votre pipeline puisse créer, tester, publier et déployer votre application. Le pipeline déploiera votre application sur des instances de développement et de production de clusters Kubernetes.
Autres méthodes qui automatisent la publication de votre application :
- Au lieu d'utiliser Jenkins pour créer votre application, vous pouvez utiliser la fonctionnalité de build native Automation Pipelines et un hôte de build Docker.
- Au lieu de déployer votre application sur un cluster Kubernetes, vous pouvez la déployer sur un cluster Amazon Web Services (AWS).
Pour plus d'informations sur l'utilisation de la fonctionnalité de build native Automation Pipelines et d'un hôte Docker, reportez-vous à :
Conditions préalables
- Vérifiez que le code d'application à déployer réside dans un référentiel GitHub opérationnel.
- Vérifiez que vous disposez d'une instance opérationnelle de Jenkins.
- Assurez-vous que vous disposez d'un serveur de messagerie opérationnel.
- Dans Automation Pipelines, créez un point de terminaison de messagerie qui se connecte à votre serveur de messagerie.
- À des fins de développement et de production, configurez deux clusters Kubernetes sur Amazon Web Services (AWS) où votre pipeline déploiera votre application.
- Vérifiez que le référentiel GitHub contient le code YAML de votre pipeline ou un fichier YAML qui définit les métadonnées et les spécifications de votre environnement.
Procédure
Résultats
Félicitations ! Vous avez automatisé le déploiement de votre application logicielle sur votre cluster Kubernetes.
Exemple : Exemple de pipeline YAML déployant une application sur un cluster Kubernetes
Pour le type de pipeline utilisé dans cet exemple, le fichier YAML ressemble au code suivant :
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: pipelines namespace: ${input.GIT_BRANCH_NAME} labels: app: pipelines spec: ports: - port: 80 selector: app: pipelines tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: pipelines namespace: ${input.GIT_BRANCH_NAME} labels: app: pipelines spec: selector: matchLabels: app: pipelines tier: frontend strategy: type: Recreate template: metadata: labels: app: pipelines tier: frontend spec: containers: - name: pipelines image: cas.jfrog.io/pipelines:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: pipelines imagePullSecrets: - name: jfrog
Que faire ensuite
Pour déployer votre application logicielle sur votre cluster Kubernetes de production, effectuez à nouveau la procédure et sélectionnez votre cluster de production.
Pour plus d'informations sur l'intégration de Automation Pipelines à Jenkins, reportez-vous à la section Intégration de Automation Pipelines à Jenkins.