Como definir o Jenkins no Google Kubernetes Engine

Neste tutorial, mostramos como configurar o Jenkins no GKE para ajudar a orquestrar o pipeline de entrega de software.

Objetivos

  • Criar um cluster do Kubernetes com o GKE.
  • Instalar o Jenkins usando o Helm.
  • Conectar ao Jenkins.

Custos

Neste tutorial, há componentes do Google Cloud Platform que são cobrados, entre eles:

  • Compute Engine
  • Google Kubernetes Engine
  • Cloud Build

Use a Calculadora de preços para gerar uma estimativa de custo com base no uso previsto. Novos usuários do GCP podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. Selecione ou crie um projeto do GCP.

    Acessar a página Gerenciar recursos

  3. Verifique se o faturamento foi ativado para o projeto.

    Saiba como ativar o faturamento

  4. Ativar Compute Engine, GKE e Cloud Build APIs.

    Ativar as APIs

Preparar o ambiente

Primeiro, prepare o ambiente de implantação.

  1. Ative o Cloud Shell. Com ele, é possível acessar a linha de comando no Console do GCP. O Cloud Shell também inclui o SDK do Cloud e outras ferramentas necessárias para o desenvolvimento no GCP. O provisionamento do Cloud Shell pode levar vários minutos.

    Ativar o Cloud Shell

    Após a conclusão do processo, você verá a seguinte saída:

    Welcome to Cloud Shell! For help, visit https://cloud.google.com/cloud-shell/help.
    
  2. Defina a zona padrão do Compute Engine como us-east1-d:

    gcloud config set compute/zone us-east1-d
    
  3. Clone o código de amostra ou faça o download do arquivo ZIP.

    git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
    

    O repositório Git contém os manifestos Kubernetes usados para implantar o Jenkins. Os manifestos e as respectivas configurações estão descritos em Como configurar o Jenkins para o GKE.

  4. Acesse o diretório do código de amostra:

    cd continuous-deployment-on-kubernetes
    

Criar um cluster do Kubernetes

Use o GKE para criar e gerenciar o cluster do Kubernetes.

  1. Provisione um cluster do Kubernetes usando o GKE. Essa etapa pode levar vários minutos para ser concluída.

    gcloud container clusters create jenkins-cd \
      --machine-type n1-standard-2 --num-nodes 2 \
      --scopes "https://www.googleapis.com/auth/projecthosting,cloud-platform"
    

    Com os escopos extras, o Jenkins tem acesso ao Cloud Source Repositories e ao Container Registry.

  2. Confirme se o cluster está em execução.

    gcloud container clusters list
    

    Procure RUNNING na coluna STATUS.

    NAME        LOCATION    MASTER_VERSION  MASTER_IP    MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
    jenkins-cd  us-east1-d  1.9.7-gke.3     35.231.8.57  n1-standard-2  1.9.7-gke.3   2          RUNNING
    
  3. Confirme se você consegue se conectar ao cluster.

    kubectl cluster-info
    

    Em caso afirmativo, os URLs do componente Kubernetes serão exibidos.

    Kubernetes master is running at https://130.211.178.38
    GLBCDefaultBackend is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/default-http-backend
    Heapster is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/heapster
    KubeDNS is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kube-dns
    kubernetes-dashboard is running at https://130.211.178.38/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
    

Como instalar o Helm

Use o Helm para implantar o Jenkins no repositório.

  1. Faça o download e a instalação do binário do Helm:

    wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
    
  2. Descompacte o arquivo no sistema local:

    tar zxfv helm-v2.9.1-linux-amd64.tar.gz
    cp linux-amd64/helm .
    
  3. Adicione a si mesmo como administrador de clusters no RBAC do cluster para conceder permissões ao Jenkins no cluster:

    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin \
            --user=$(gcloud config get-value account)
    
  4. Conceda ao Tiller, o servidor do Helm, o papel de cluster-admin do cluster:

    kubectl create serviceaccount tiller --namespace kube-system
    kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin \
        --serviceaccount=kube-system:tiller
    
  5. Inicialize o Helm. Isso garante a instalação correta do Tiller no cluster.

    ./helm init --service-account=tiller
    ./helm repo update
    
  6. Verifique se o Helm está instalado corretamente. Para isso, execute o seguinte comando:

    ./helm version
    

    Tanto o cliente quanto o servidor terão as versões v2.9.1:

    Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
    

Instalar o Jenkins

Use um arquivo de valores personalizado para configurar a instalação do Jenkins. Para saber detalhes sobre a configuração, veja o arquivo jenkins/values.yaml.

  1. Use a CLI do Helm para implantar o gráfico com o conjunto de configurações:

    ./helm install -n cd stable/jenkins -f jenkins/values.yaml --version 0.16.6 --wait
    

    Para mais informações sobre como configurar a instalação do Jenkins, visite a página de documentação do gráfico Jenkins (em inglês).

  2. Após a execução do comando, verifique se o pod do Jenkins está no estado Running e se o contêiner está no status READY:

    kubectl get pods
    

    Você verá 1/1 na coluna READY e Running na coluna STATUS. A inicialização do Jenkins pode levar alguns minutos para ser concluída.

    NAME                          READY     STATUS    RESTARTS   AGE
    cd-jenkins-7c786475dd-vbhg4   1/1       Running   0          1m
    
  3. No Cloud Shell, configure o encaminhamento de portas para a IU do Jenkins:

    export POD_NAME=$(kubectl get pods -l "component=cd-jenkins-master" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
    
  4. Verifique se o serviço do Jenkins foi criado corretamente.

    kubectl get svc
    

    Exemplo de saída:

    NAME               CLUSTER-IP     EXTERNAL-IP   PORT(S)     AGE
    cd-jenkins         10.35.249.67   <none>        8080/TCP    3h
    cd-jenkins-agent   10.35.248.1    <none>        50000/TCP   3h
    kubernetes         10.35.240.1    <none>        443/TCP     9h
    

Na instalação do Jenkins, o plug-in do Kubernetes (em inglês) é usado para criar agentes de criador. Eles serão lançados automaticamente, conforme necessário quando o mestre do Jenkins precisar executar uma compilação. Quando o trabalho for concluído, eles serão automaticamente finalizados, e os respectivos recursos serão adicionados novamente ao pool de recursos do cluster.

Estabelecer conexão com o Jenkins

  1. Recupere a senha de administrador que foi criada automaticamente pelo gráfico Helm do Jenkins:

    printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo
    
  2. Para abrir a interface do usuário do Jenkins, no Cloud Shell, clique em Visualização da Web e em Visualizar na porta 8080.

    port8080

  3. Clique em Fazer login no canto superior direito da janela. Digite admin no campo Usuário e a senha da etapa anterior no campo Senha.

  4. Clique no botão Fazer login.

Agora você tem acesso ao Jenkins e a um cluster do Kubernetes gerenciado pelo GKE. Para levar essa solução adiante, use esses componentes no seu pipeline de entrega contínua.

Como fazer a limpeza

Depois de concluir este tutorial, limpe os recursos que você criou no GCP para que não sejam faturados.

Como excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do GCP, acesse a página "Projetos".

    Acessar a página Projetos

  2. Na lista de projetos, selecione um e clique em Excluir projeto.
  3. Na caixa de diálogo, digite o código do projeto e clique em Encerrar para excluí-lo.

Excluir discos

  1. No console do GCP, acesse a página "Discos".

    Acessar a página Discos

  2. Clique na caixa de seleção ao lado do seu disco jenkins-home.
  3. Clique no botão Excluir na parte superior da página para excluir o disco.

Excluir instâncias

Para excluir uma instância do Compute Engine:

  1. No Console do GCP, acesse a página "Instâncias de VM".

    Acessar a página "Instâncias de VMs"

  2. Clique na caixa de seleção ao lado da da instância que deseja excluir.
  3. Clique no botão Excluir na parte superior da página para excluir a instância.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…