Configurando o Nexus como repositório do Helm: um guia passo a passo
Hoje, no blog da 4Linux, vamos falar sobre como podemos configurar o Nexus para ser o repositório do Helm.
O que é Helm
É uma ferramenta de empacotamento de software semelhante aos pacotes Linux, como APT e YUM. O Helm é usado para gerenciar pacotes de aplicações voltada ao Kubernetes.
Mais detalhes nesse outro post do blog https://blog.4linux.com.br/o-gerenciador-de-pacotes-helm/
O que é o Nexus
O Nexus é uma ferramenta confiável para armezamento de artefatos e repositórios. Além de ser Open Source, o Nexus possui uma boa documentação, apresenta um bom nível de segurança e controle de acesso, e armazena os artefatos no sistema de arquivos, o que elimina muitas dores de cabeça.
Mais detalhes nesse outro post do blog https://blog.4linux.com.br/repositorios-locais-com-nexus-sonatype/
Pré-requisitos
Para facilitar a criação do nosso ambiente, vou disponibilizar para vocês um repositório com a criação do ambiente de forma automatizada com o Vagrant. Para poder executar esse ambiente, vocês vão precisar ter instalado:
- Vagrant (https://developer.hashicorp.com/vagrant/docs/installation)
- VirutalBox 6.1 (https://www.virtualbox.org/wiki/Download_Old_Builds_6_1)
- Git (https://git-scm.com/downloads)
Inicializando infraestrutura
git clone https://github.com/silvemerson/nexus-helm-repository.git cd nexus-helm-repository vagrant up
Nexus, primeiros passos
Após concluído a criação da infraestrutura, vá no seu navegador http://192.168.56.10:8081/ para fazer o primeiro acesso ao Nexus. Pode ser que demore um pouco até inicializar totalmente a aplicação. Ela está rodando em container, portanto você pode acessar a VM com comando vagrant ssh nexus-server e consultar os logs do container.
Após acessar no navegador, vá em Sign In:
Vai receber a seguinte instrução para realizar o login:
Então na VM do Nexus, vamos executar o seguinte comando para obter a senha de Administrador:
$ docker exec -it nexus cat /nexus-data/admin.password
Coletado a senha de admin e feito o login inicial, o Nexus vai pedir alterar a senha:
Vamos deixar as seguintes credencias:
Usuário: admin Senha: admin
Mantenha a opção abaixo assinalada:
Criando Blob e Repositório
Blob Stores
Agora que estamos acessando o Painel do Nexus, vamos no ícone de engrenagem -> Blob Stores > Create Blob Store:
Selecione o Type como File e preencha conforme informações abaixo:
Agora salve.
Repository
Vá novamente no ícone de engrenagem -> Create repository
Selecione o tipo de repositório como helm(hosted).
Após selecionado a opção do passo anterior, preencha com informações abaixo. Observe que em Blob Store, vamos selecionar o Blob que criamos.
Preenchido, só salvar.
Criando usuário e permissões
Role
Antes de criar nosso usuário, vamos criar uma Role de acesso ao repositório que criamos para o Helm. Para isso, bora lá em ícone de engrenagem -> Security -> Roles:
Selecione o Type como Nexus Role e as demais informações conforme abaixo:
Selecione o seguinte privilegio: nx-repository-view-helm-*-*
Salve e vamos para o próximo passo.
Usuário
Agora que temos nossa Role devidamente criada, vamos criar nosso usuário de acesso ao repositório. Vá em ícone de engrenagem -> Security ->Users -> Create local user:
Preencha os campos conforme abaixo, onde o nosso usuário será o helm_user e a nossa senha helmpass.
Feito isso, associe nosso usuário com a Role que criamos:
Pronto, usuário criado, agora vamos enviar nosso chart.
Enviando Chart
Concluímos as configurações no Nexus, agora vamos na nossa VM do K3s e criar nosso chart, enviar para o repositório e depois fazer o deploy da nossa aplicação.
Acesse VM, dentro da pasta do repositório:
vagrant ssh k3s sudo su && cd
Agora que estamos que estamos na VM como root, vamos inicializar o Kubeconfig do K3s:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
Dentro da pasta do usuário root, teremos um diretório chamado de super-mario. Ele que iremos “empacotar”, transformando ele em um chart da seguinte forma:
helm package super-mario
Depois, vamos enviar para o repositório que criamos no Nexus:
curl -u helm_user:helmpass http://192.168.56.10:8081/repository/helm-repository --upload-file super-mario-0.0.1.tgz -v
Conseguimos fazer o envio com sucesso, vamos adicionar esse repositório no nosso ambiente do K3s:
helm repo add super-mario http://192.168.56.10:8081/repository/helm-repository/ --username helm_user --password helmpass
Atualizar os repositórios e realizar o deploy da nossa aplicação:
helm repo update
helm install --repo http://192.168.56.10:8081/repository/helm-repository/ super-mario super-mario
Inicializando aplicação no K3s
Nossa aplicação está em execução conforme abaixo:
Vamos criar um port-forward e validar a aplicação:
kubectl port-forward --address 0.0.0.0 pod/<PODNAME> 8080:8080
Ambiente pronto!
E por hoje é só pessoal, esse é o nosso ambiente usando o Nexus para ser o nosso repositório do Helm. Espero que tenham gostado!
Não se esqueçam de compartilhar em suas redes sociais.
Até a próxima.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Como fazer deploy de uma aplicação Go no Google Cloud Run com Github Actions
Eai galera! Nesse post, o objetivo é mostrar que nem sempre é preciso um Kubernetes ou Jenkins para colocar as suas aplicações no ar. Vamos criar uma Instância no Cloud
TDC 2019: 4Linux marca presença com palestras e coordenação de trilhas
Ministrando palestras ou coordenando trilhas, estaremos expondo nosso expertise em algumas áreas. Acontece em São Paulo entre os dias 16 e 20 de julho de 2019 o TDC ( The
Domine o Jenkins: Crie Pipelines eficientes com Jenkinsfile e Groovy
O Jenkinsfile é a maneira mais recomendada para criar Pipelines no Jenkins. Utilizando as melhores práticas, podemos colocar o arquivo na raiz de um repositório Git. Essa técnica nos permite