Configuração do registro de contêineres GitLab

Configuração do registro de contêineres GitLab
Em nosso último post, mostramos como você pode configurar uma instância do GitLab para gerenciar seus projetos pessoais ou de seus. Recomendamos que você use um FQDN e tenha a instância do GitLab disponível no HTTPS. Como a maioria dos aplicativos é embalada como contêineres, é razoável configurar um registro de contêineres onde diferentes versões do seu aplicativo, bem como seus diferentes componentes podem ser armazenados como imagens do docker.

Se você não sabe o que é um registro de contêiner, não se preocupe. Ficará claro quando você realmente empurrar sua primeira imagem de contêiner em uma instância do Gitlab. Por enquanto, pense neles como repositórios para as imagens de seu contêiner. Estes não são contêineres em execução, mas apenas imagens (dados simples) sentados na instância remota gitlab.

Por que você gostaria de um registro de contêiner gitlab?

As chances são de que seu aplicativo seja embalado como uma única imagem do Docker ou uma coleção dessas imagens. Isso significa que versões diferentes estarão associadas a diferentes imagens e registro de contêineres, ajudarão você a acompanhá -las individualmente, além de ver quais devem ser reunidas em uma versão específica.

O registro é para contêineres, o que o repositório é para o código -fonte e o Gitlab é um lugar para lidar com todos eles.

Pré -requisitos

  1. Uma instância do Gitlab funcionando sobre https
  2. Acesso raiz à instância
  3. Acesso para modificar os registros DNS do seu nome de domínio

Vamos assumir que nosso Gitlab está funcionando Gitlab.exemplo.com .

Certificados de DNS e TLS de registro

Você deve ser o usuário raiz para ativar o recurso de registro de contêineres em toda a instância do Gitlab. Usuários individuais podem optar por usar esse recurso em seus respectivos projetos, se desejarem. Existem duas maneiras de fazer isso:

  1. Reutilizar o nome de domínio existente e os certificados TLS para Gitlab.exemplo.com e execute o registro em uma porta diferente.
  2. Aponte outro nome de domínio, digamos, registro.Gitlab.exemplo.com para o mesmo endereço IP em que o GitLab está executando e configurar o registro lá.

Vamos com a segunda opção, pois é muito mais profissional.

Passo 1: Adicione um recorde para registro.Gitlab.exemplo.com apontando para o mesmo IP em que sua instância do Gitlab está funcionando.

Passo 2: Pare os serviços do GitLab em execução em seu servidor.

$ sudo gitlab-ctl Stop

Etapa 3: Adicione o cliente acme CertBot's PPA para o seu sistema e instale o certbot.

$ sudo add-aprop-repository ppa: certbot/certbot
$ sudo apt update
$ sudo apt install certbot

Passo 4: Obtenha certificados de Let's Encrypt.

$ CERTBOT Certonly

Você verá uma mensagem como:
“'
Como você gostaria de autenticar com o acme ca?
--
1: Spin Up um servidor temporário da web (independente)
2: Coloque os arquivos no diretório Webroot (Webroot)
--
Selecione o número apropriado [1-2] depois [ENTER] (pressione 'C' para cancelar): 1
“'

Isso então pedirá seu e -mail, pedirá que você concorde com os termos de serviço deles e, o mais importante, peça seu nome de domínio que seria registro.Gitlab.exemplo.com em nosso exemplo de caso. Você receberá uma mensagem dizendo se os certificados foram ou não obtidos. Se estivessem, passe para a etapa 5

Etapa 5: Agora que temos nossos certificados, é hora de colocá -los sob diretórios relacionados ao Gitlab.

$ cp/etc/letSencrypt/Live/Registry.Gitlab.exemplo.com/fullchain.PEM
/etc/gitlab/ssl/registro.Gitlab.exemplo.Crt
$ cp/etc/letSencrypt/Live/Registry.Gitlab.exemplo.com/privky.PEM
/etc/gitlab/ssl/registro.Gitlab.exemplo.chave

Garantir as permissões sobre eles:

$ chmod 600/etc/gitlab/ssl/registro.Gitlab.exemplo.com.*

Como o restante do tutorial, certifique -se de substituir o exemplo.com com o seu nome de domínio existente. Como é isso que será o nome do diretório, onde o CertBot armazenou o certificado.

Etapa 6: Editar configuração do GitLab. Abra o arquivo /etc/gitlab/gitlab.rb e adicione as seguintes linhas ao fundo:

Registry_external_url 'https: // registro.Gitlab.exemplo.com '

Se você fez tudo com cuidado, a parte mais complicada da configuração acabou! Agora você terá um registro de contêineres em funcionamento, basta correr:

$ sudo gitlab-ctl reconfigure
$ sudo gitlab-ctl start

Ativando o registro e empurrando imagens

Agora que temos para nós mesmos um registro de contêineres, vamos criar um novo projeto usando a interface da web do Gitlab e verificar se ele funciona.

Na coluna esquerda, você pode ver uma seção de registro. Você pode clicar nele para ver instruções detalhadas sobre como fazer login e empurrar as imagens nele. Vamos voltar ao nosso desktop local, que deve ter o docker instalado nele.

Podemos usá-lo para construir um recipiente simples do Hello-World e empurrá-lo para este registro. No seu sistema local, crie uma nova pasta:

$ CD ~
$ mkdir sample_container

Dentro dele vamos criar um arquivo chamado Dockerfile e adicione o seguinte conteúdo:

De Ubuntu: mais recente
## seus comandos personalizados aqui

Você pode manter seu Dockerfile com apenas a primeira linha. Será um contêiner Ubuntu simples. Agora você o constrói com uma tag significativa (usaremos a tag meu projeto que é o mesmo que o nome do projeto Gitlab, isso é importante). Na mesma execução de diretório:

$ Docker Build -t Registry.Gitlab.exemplo.coma/meu projeto .

Lembre -se de substituir seu nome de usuário GitLab em vez do espaço reservado usado no comando acima.

Apenas cria um contêiner do Ubuntu, além de buscar a imagem. Esta imagem é o que é empurrado. Se você modificar o contêiner e criar uma nova imagem com ele (usando Docker Commit comando será uma nova imagem). Vamos empurrar a imagem de baunilha ubuntu para o nosso registro.

Primeiro, precisamos fazer login usando nosso nome de usuário e senha do GitLab:

$ Docker Login Registry.Gitlab.exemplo.com

Então corra:

$ Docker Build -t Registry.Gitlab.exemplo.com/root/my-project .
$ Docker Push Registry.Gitlab.exemplo.com/root/my-project

Se você não tiver certeza de qual deve ser a tag do seu contêiner, visite a página de registro do seu projeto e haverá instruções claras para isso. Se o comando push do docker funcionou corretamente, você poderá ver uma nova imagem do Docker sendo carregada (ou empurrada) em sua instância do gitlab. Como se fosse mostrado no meu caso:

Conclusão

O controle de versão é muito mais do que apenas gerenciamento de código -fonte. Está melhorando constantemente para acomodar uma variedade versátil de demandas que qualquer projeto de software precise inesperadamente. Registro de contêineres é apenas a ponta do iceberg. Você pode ter pipelines de CD/IC, gerenciamento avançado de configuração, autorização via tokens e uma infinidade de outras funcionalidades ativadas no Gitlab. Espero que você tenha aprendido algo novo sobre esta maravilhosa tecnologia neste tutorial.

Deixe -nos saber se há algo que você quer que abordemos!