In qualità di amministratore o sviluppatore di Automation Pipelines, è possibile utilizzare Automation Pipelines e VMware Tanzu Kubernetes Grid Integrated Edition (in precedenza denominato VMware Enterprise PKS) per automatizzare la distribuzione delle applicazioni software in un cluster Kubernetes. Questo caso d'uso menziona altri metodi che è possibile utilizzare per automatizzare il rilascio dell'applicazione.
In questo caso d'uso verrà creata una pipeline che include due fasi e si utilizzerà Jenkins per creare e distribuire l'applicazione.
- La prima fase è per lo sviluppo. Si utilizza Jenkins per estrarre il codice da un ramo nel repository GitHub, quindi lo si crea, lo si testa e lo si pubblica.
- La seconda fase è per la distribuzione. Esegue un'attività operazione utente che richiede l'approvazione da parte degli utenti chiave per consentire alla pipeline di distribuire l'applicazione nel cluster Kubernetes.
Quando si utilizza un endpoint API Kubernetes nell'area di lavoro della pipeline, Automation Pipelines crea le risorse Kubernetes necessarie, come ConfigMap, Secret e Pod per eseguire l'attività di integrazione continua (CI) o l'attività personalizzata. Automation Pipelines comunica con il contenitore tramite la NodePort.
Per condividere i dati tra le esecuzioni della pipeline, è necessario fornire una richiesta volume persistente e Automation Pipelines monterà la richiesta volume persistente nel contenitore per archiviare i dati e utilizzarla per le esecuzioni della pipeline successive.
L'area di lavoro della pipeline di Automation Pipelines supporta Docker e Kubernetes per le attività di integrazione continua e le attività personalizzate.
Per ulteriori informazioni sulla configurazione dell'area di lavoro, vedere Configurazione dell'area di lavoro della pipeline.
Affinché una pipeline possa creare, testare, pubblicare e distribuire l'applicazione, devono essere disponibili gli strumenti di sviluppo, le istanze di distribuzione e il file YAML della pipeline. La pipeline distribuirà l'applicazione alle istanze di sviluppo e produzione dei cluster Kubernetes.
Altri metodi che automatizzano il rilascio dell'applicazione:
- Anziché creare l'applicazione utilizzando Jenkins, è possibile utilizzare la funzionalità di creazione nativa di Automation Pipelines e un host di creazione Docker.
- Anziché distribuire l'applicazione in un cluster Kubernetes, è possibile distribuirla in un cluster Amazon Web Services (AWS).
Per ulteriori informazioni sull'utilizzo della funzionalità di creazione nativa di Automation Pipelines e di un host Docker, vedere:
Prerequisiti
- Verificare che il codice dell'applicazione da distribuire si trovi in un repository GitHub funzionante.
- Verificare di disporre di un'istanza di Jenkins funzionante.
- Verificare di disporre di un server e-mail funzionante.
- In Automation Pipelines creare un endpoint e-mail che si connetta al server e-mail.
- Configurare due cluster Kubernetes in Amazon Web Services (AWS), per lo sviluppo e la produzione, in cui la pipeline distribuirà l'applicazione.
- Verificare che il repository GitHub contenga il codice YAML per la propria pipeline e, in alternativa, un file YAML che definisca i metadati e le specifiche per l'ambiente in uso.
Procedura
risultati
Congratulazioni! È stata automatizzata la distribuzione dell'applicazione software al cluster Kubernetes.
Esempio: YAML della pipeline di esempio che distribuisce un'applicazione in un cluster Kubernetes
Per il tipo di pipeline utilizzato in questo esempio, YAML è simile al seguente codice:
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
Operazioni successive
Per distribuire l'applicazione software al cluster Kubernetes di produzione, eseguire di nuovo i passaggi e selezionare il cluster di produzione.
Per ulteriori informazioni sull'integrazione di Automation Pipelines con Jenkins, vedere Come integrare Automation Pipelines con Jenkins.