En tant qu'administrateur ou développeur Code Stream, vous pouvez utiliser Code Stream 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, Code Stream 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. Code Stream 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 Code Stream 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 Code Stream 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 Code Stream 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 Code Stream 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 Code Stream, 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: 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
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 Code Stream à Jenkins, reportez-vous à la section Intégration de Code Stream à Jenkins.