O Jenkins oferece suporte a integração contínua e entrega contínua (CI/CD). Implante o Jenkins em um cluster ACK para obter alta disponibilidade e reduzir custos de O&M. Este tópico explica como implantar o Jenkins e apresenta um exemplo simples de compilação e implantação de aplicativos.
Pré-requisitos
A CLI do Helm está instalada e conectada ao cluster via kubectl. Para obter instruções detalhadas, consulte Instalando o Helm e Conectar-se a um cluster ACK usando kubectl.
Observações de uso
O Jenkins não conta com suporte técnico. Você deve fazer a manutenção por conta própria.
O chart do Helm e as imagens de contêiner do Jenkins estão hospedados fora da China continental, o que pode causar falhas no pull de imagens. Use uma das seguintes soluções:
Assine imagens de origem internacionais pelo Container Registry. Para obter instruções, consulte Sincronizar imagens usando assinatura de artefato.
Crie uma instância do Global Accelerator (GA) para fazer o pull de imagens diretamente pela rede de aceleração global. Para mais detalhes, consulte Acelerar pulls de imagens do ACK entre regiões com o GA.
Etapa 1: Implantar o Jenkins
-
Adicione o repositório Helm do Jenkins.
helm repo add jenkins https://charts.jenkins.io helm repo updateSaída esperada:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "jenkins" chart repository Update Complete. ⎈Happy Helming!⎈ -
Instale o Jenkins.
-
Crie um namespace chamado
cicd.kubectl create ns cicd -
Implante o Jenkins no namespace
cicd.helm -n cicd install jenkins jenkins/jenkins \ --set persistence.storageClass="alicloud-disk-essd" \ --set persistence.size="20Gi" \ --set controller.serviceType="LoadBalancer" \ --set controller.admin.password="<YOUR_SECURE_PASSWORD>"persistence.storageClass: Obrigatório. Classe de armazenamento do volume persistente que armazena o jenkins_home. Defina como"alicloud-disk-available"para selecionar automaticamente um tipo de disco em nuvem disponível.persistence.size: Obrigatório. Tamanho do disco em nuvem. Mínimo: 20 GiB.controller.serviceType: Opcional. Tipo de serviço. Padrão: ClusterIP.controller.admin.password: Opcional. Senha de administrador. Se não definida, o Jenkins gera uma senha aleatória.
Consulte helm-charts para outros parâmetros.
-
Verifique o status do pod do Jenkins e aguarde até que ele atinja o estado Running.
kubectl -n cicd get poSaída esperada:
NAME READY STATUS RESTARTS AGE jenkins-0 2/2 Running 0 3m3s
-
-
Visualize o endereço IP externo do serviço.
Se o tipo de serviço for LoadBalancer, use o endereço IP externo para acessar o painel do Jenkins.
kubectl get -n cicd serviceSaída esperada:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins LoadBalancer 192.168.***.*** 8.222.***.*** 8080:30949/TCP 2d17h jenkins-agent ClusterIP 192.168.***.* <none> 50000/TCP 2d17h
(Opcional) Etapa 2: Criar um pipeline
Crie um pipeline de exemplo chamado first-pipeline. O Jenkins inicia dinamicamente um pod slave para cada compilação e o libera após a conclusão. Consulte a documentação do Jenkins para opções de configuração.
Faça logon no Jenkins. No painel de navegação à esquerda, clique em New Item.
Na seção Enter an item name, insira first-pipeline, selecione Pipeline e clique em OK.
Clique na aba Pipeline, selecione o modelo Hello World e clique em Save.
No painel de navegação à esquerda, clique em Build Now.
No painel de navegação à esquerda, clique em Build History. Clique em 1# > Console Output para visualizar os resultados da compilação.
Perguntas frequentes
Como recuperar a senha padrão do Jenkins?
Se você não especificou uma senha durante a implantação, recupere a senha padrão:
kubectl -n cicd exec -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo