Als Code Stream-beheerder of -ontwikkelaar kunt u Code Stream 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 Code Stream de nodige Kubernetes-resources zoals ConfigMap, Geheim en Pod om de taak voor continue integratie (CI) of de aangepaste taak uit te voeren. Code Stream communiceert met de container via de NodePort.
Als u gegevens wilt delen tussen pijplijnuitvoeringen, moet u een permanente volumeclaim opgeven, en Code Stream koppelt de permanente volumeclaim aan de container om de gegevens op te slaan en deze te gebruiken voor volgende pijplijnuitvoeringen.
De Code Stream-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 Code Stream 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 van Code Stream 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 Code Stream 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: 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
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 Code Stream met Jenkins, raadpleegt u Hoe integreer ik Code Stream met Jenkins?.