Als Automation Pipelines-beheerder of -ontwikkelaar kunt u Automation Pipelines en VMware Tanzu Kubernetes Grid Integrated Edition (voorheen VMware Enterprise PKS genoemd) gebruiken om de implementatie van uw softwareapplicaties naar een Kubernetes-cluster te automatiseren. Dit toepassingsvoorbeeld vermeldt andere methoden die u kunt gebruiken om de release van uw applicatie te automatiseren.
In dit toepassingsvoorbeeld maakt u een pijplijn die twee fasen bevat en gebruikt u Jenkins om uw applicatie te bouwen en te implementeren.
- De eerste fase is voor ontwikkeling. Deze gebruikt Jenkins om uw code uit een tak in uw GitHub-opslagplaats te halen en deze vervolgens te bouwen, te testen en te publiceren.
- De tweede fase is voor de implementatie. Er wordt een gebruikersbewerkingstaak uitgevoerd die moet worden goedgekeurd door belangrijke gebruikers voordat de pijplijn uw applicatie naar uw Kubernetes-cluster kan implementeren.
Wanneer u een Kubernetes API-eindpunt in de pijplijnwerkplek gebruikt, maakt Automation Pipelines de nodige Kubernetes-resources zoals ConfigMap, Geheim en Pod om de taak voor continue integratie (CI) of de aangepaste taak uit te voeren. Automation Pipelines communiceert met de container via de NodePort.
Als u gegevens wilt delen tussen pijplijnuitvoeringen, moet u een permanente volumeclaim opgeven, en Automation Pipelines koppelt de permanente volumeclaim aan de container om de gegevens op te slaan en deze te gebruiken voor volgende pijplijnuitvoeringen.
De Automation Pipelines-pijplijnwerkplek ondersteunt Docker en Kubernetes voor taken voor continue integratie en aangepaste taken.
Zie De pijplijnwerkplek configureren voor meer informatie over het configureren van de werkplek.
De ontwikkelingstools, implementatie-instanties en het YAML-bestand van de pijplijn moeten beschikbaar zijn zodat uw pijplijn uw applicatie kan bouwen, testen, publiceren en implementeren. De pijplijn implementeert uw applicatie naar ontwikkelings- en productie-instanties van Kubernetes-clusters.
Andere methoden die de release van uw applicatie automatiseren:
- In plaats van uw applicatie met Jenkins te bouwen kunt u de systeemeigen bouwmogelijkheid van Automation Pipelines en een Docker-buildhost gebruiken.
- In plaats van uw applicatie in een Kubernetes-cluster te implementeren kunt u deze ook implementeren in een Amazon Web Services-cluster (AWS).
Zie voor meer informatie over het gebruik van de systeemeigen bouwmogelijkheid vanAutomation Pipelines en een Docker-host:
Voorwaarden
- Controleer of de applicatiecode die moet worden geïmplementeerd, zich in een werkende GitHub-opslagplaats bevindt.
- Controleer of u over een werkende instantie van Jenkins beschikt.
- Controleer of u over een werkende e-mailserver beschikt.
- Maak in Automation Pipelines een e-mail-eindpunt dat verbinding maakt met uw e-mailserver.
- Stel twee Kubernetes-clusters in op Amazon Web Services (AWS) voor ontwikkeling en productie, waar uw-pijplijn uw applicatie zal implementeren.
- Controleer of de GitHub-opslagplaats de YAML-code voor uw pijplijn bevat of een YAML-bestand waarmee de metagegevens en specificaties voor uw omgeving worden gedefinieerd.
Procedure
resultaten
Gefeliciteerd! U heeft de implementatie van uw softwareapplicatie op uw Kubernetes-cluster geautomatiseerd.
Voorbeeld: Voorbeeld van een pijplijn-YAML die een applicatie implementeert op een Kubernetes-cluster
Voor het type pijplijn dat in dit voorbeeld wordt gebruikt, lijkt de YAML op de volgende code:
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
Volgende stappen
Als u uw softwareapplicatie wilt implementeren op uw Kubernetes-cluster voor productie, voert u de stappen opnieuw uit en selecteert u uw productiecluster.
Voor meer informatie over het integreren van Automation Pipelines met Jenkins, raadpleegt u Hoe integreer ik Automation Pipelines met Jenkins?.