Como administrador ou desenvolvedor do Code Stream, você pode usar o Code Stream e o VMware Tanzu Kubernetes Grid Integrated Edition (anteriormente conhecido como VMware Enterprise PKS) para automatizar a implantação dos seus aplicativos de software em um cluster Kubernetes. Esse caso de uso menciona outros métodos possíveis para automatizar a liberação do aplicativo.
Neste caso de uso, você criará um pipeline que inclui dois estágios e usará o Jenkins para criar e implantar o aplicativo.
- O primeiro estágio é para desenvolvimento. Ele usa o Jenkins para extrair o código de uma ramificação no repositório GitHub, depois o compila, testa e publica.
- O segundo estágio é para implantação. Ele executa uma tarefa de operação do usuário que requer a aprovação de usuários principais antes que o pipeline possa implantar o aplicativo no cluster do Kubernetes.
Ao usar um endpoint API do Kubernetes no espaço de trabalho do pipeline, o Code Stream cria os recursos do Kubernetes necessários, como ConfigMap, Segredo e Pod, para executar a tarefa de integração contínua (CI) ou personalizada. O Code Stream se comunica com o contêiner usando a NodePort.
Para compartilhar os dados em todas as execuções do pipeline, você deve fornecer uma reivindicação de volume persistente, e o Code Stream montará a reivindicação de volume persistente no contêiner para armazenar os dados e a usará nas execuções seguintes do pipeline.
O espaço de trabalho do pipeline do Code Stream é compatível com o Docker e o Kubernetes para tarefas de integração contínua e personalizadas.
Para obter mais informações sobre a configuração do espaço de trabalho, consulte Como configurar o espaço de trabalho do pipeline.
As ferramentas de desenvolvimento, instâncias de implantação e o arquivo YAML de pipeline devem estar disponíveis para que o pipeline possa compilar, testar, publicar e implantar o aplicativo. O pipeline implantará o aplicativo em instâncias de desenvolvimento e produção de clusters do Kubernetes.
Outros métodos que automatizam a liberação do aplicativo:
- Em vez de construir seu aplicativo usando o Jenkins, você pode usar a capacidade de compilação nativa do Code Stream e um host de compilação Docker.
- Em vez de implantar seu aplicativo em um cluster Kubernetes, você pode implantá-lo em um cluster Amazon Web Services (AWS).
Para obter mais informações sobre como usar o recurso de compilação nativo do Code Stream e um host do Docker, consulte:
Pré-requisitos
- Verifique se o código do aplicativo a ser implantado reside em um repositório GitHub em funcionamento.
- Verifique se há uma instância de trabalho Jenkins ativa.
- Verifique se há um servidor de e-mail ativo.
- No Code Stream, crie um endpoint de e-mail que se conecte ao servidor de e-mail.
- Configure dois clusters do Kubernetes no Amazon Web Services (AWS), para desenvolvimento e produção, onde o pipeline implantará o aplicativo.
- Verifique se o repositório GitHub contém o código YAML para o pipeline e, como alternativa, um arquivo YAML que defina os metadados e as especificações do ambiente.
Procedimento
Resultados
Parabéns! Você automatizou a implantação do seu aplicativo de software no cluster do Kubernetes.
Exemplo: Exemplo de YAML de pipeline que implanta um aplicativo em um cluster do Kubernetes
Para o tipo de pipeline usado nesse exemplo, o YAML deve ser semelhante ao seguinte código:
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
O que Fazer Depois
Para implantar o aplicativo de software no cluster de produção do Kubernetes, execute as etapas novamente e selecione o cluster de produção.
Para saber mais sobre a integração do Code Stream com o Jenkins, consulte Como integrar o Code Stream ao Jenkins.