Como definir o Jenkins no Google Kubernetes Engine

Last reviewed 2019-02-27 UTC

Neste tutorial, mostramos como configurar o Jenkins no Google Kubernetes Engine (GKE) para 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 documento, você usará os seguintes componentes faturáveis do Google Cloud:

  • Google Kubernetes Engine

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the GKE APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE APIs.

    Enable the APIs

Como preparar o ambiente

Primeiro, prepare o ambiente de implantação.

  1. Ative o Cloud Shell. O Cloud Shell fornece acesso à linha de comando no Console do Google Cloud e inclui o SDK do Cloud, além de outras ferramentas necessárias para o desenvolvimento do Google Cloud. O provisionamento do Cloud Shell pode levar vários minutos.

    Ativar o Cloud Shell

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

    Welcome to Cloud Shell! Type "help" to get started.
    
  2. Clone o código de amostra.

    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.

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

    cd continuous-deployment-on-kubernetes
    

crie um cluster do GKE;

  1. Veja como provisionar um cluster do GKE. A conclusão desta etapa pode levar vários minutos.

    gcloud container clusters create jenkins-cd \
      --zone us-east1-d --scopes cloud-platform
    

    O escopo de cloud-platform permite que o Jenkins acesse o Cloud Source Repositories e o Container Registry.

  2. Tente se conectar ao cluster.

    kubectl cluster-info
    

    Se você conseguir se conectar ao cluster, a saída será assim:

    Kubernetes control plane is running at https://35.196.84.95
    GLBCDefaultBackend is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/default-http-backend:http/proxy
    KubeDNS is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    Metrics-server is running at https://35.196.84.95/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
    
  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)
    

Instalar o Jenkins

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

  1. Adicione o repositório de gráficos do Helm para o Jenkins:

    helm repo add jenkinsci https://charts.jenkins.io
    helm repo update
    

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

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

    helm install cd-jenkins -f jenkins/values.yaml jenkinsci/jenkins --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. Verifique se o pod do Jenkins está no estado Running e se o contêiner está no estado READY:

    kubectl get pods
    

    Você verá 2/2 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-0   2/2     Running   0          6m30s
    
  3. Verifique se os serviços do Kubernetes foram criados corretamente.

    kubectl get svc
    

    A saída será assim:

    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.

Conectar ao Jenkins

  1. No Cloud Shell, configure o encaminhamento de portas para a IU do Jenkins:

    export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/component=jenkins-master" -l "app.kubernetes.io/instance=cd-jenkins" -o jsonpath="{.items[0].metadata.name}")
    kubectl port-forward $POD_NAME 8080:8080 >> /dev/null 2>&1 &
    
  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

Agora você tem acesso ao Jenkins e ao GKE. Para aproveitar ainda mais essa solução, você pode usar esses componentes no canal de entrega contínua.

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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Como excluir o cluster do GKE

  1. Exclua o cluster do GKE:
    gcloud container clusters delete jenkins-cd --zone us-east1-d
    

A seguir