- Published on
Provisionamento de um Rancher HA
- Authors
- Name
- Natália Granato
- @granatowp
Introdução ao Rancher
O Rancher é uma plataforma de gerenciamento de Kubernetes que simplifica a operação de clusters Kubernetes em ambientes de produção. Ele oferece uma interface amigável e um conjunto robusto de ferramentas para facilitar a administração, monitoramento e escalabilidade de clusters Kubernetes.
Benefícios do Rancher
- Gerenciamento Centralizado: Permite gerenciar múltiplos clusters Kubernetes a partir de uma única interface, seja em ambientes on-premises, na nuvem ou em ambientes híbridos.
- Facilidade de Uso: Oferece uma interface gráfica intuitiva que facilita a criação, configuração e monitoramento de clusters Kubernetes, mesmo para usuários com pouca experiência.
- Segurança e Controle: Inclui recursos avançados de segurança, como autenticação, autorização e controle de acesso baseado em funções (RBAC), garantindo que apenas usuários autorizados possam acessar e modificar os recursos do cluster.
- Automação e Escalabilidade: Suporta a automação de tarefas comuns, como atualizações de cluster e escalabilidade de aplicativos, permitindo que as equipes de DevOps se concentrem em tarefas mais estratégicas.
- Integração com Ferramentas de DevOps: Integra-se facilmente com ferramentas populares de DevOps, como Jenkins, Prometheus e Grafana, proporcionando uma experiência de desenvolvimento e operações contínuas (CI/CD) mais eficiente.
Com o Rancher, as organizações podem acelerar a adoção do Kubernetes, reduzir a complexidade operacional e melhorar a eficiência das equipes de TI, garantindo que os aplicativos sejam executados de forma confiável e segura em qualquer ambiente.
Passos para Instalação
Pré-requisitos
- Um cluster Kubernetes dedicado.
- Acesso ao cluster Kubernetes via
kubectl
. - Helm instalado e configurado.
Passos Detalhados para Instalação
1. Instalação do NGINX Ingress Controller
O NGINX Ingress Controller é necessário para gerenciar o tráfego de entrada para os serviços no cluster Kubernetes.
Crie o namespace para o NGINX Ingress Controller:
kubectl create ns nginx-ingress
Este comando cria um namespace chamado
nginx-ingress
no cluster Kubernetes.Instale o NGINX Ingress Controller usando Helm:
helm install nginx-ingress oci://ghcr.io/nginxinc/charts/nginx-ingress -n nginx-ingress
Este comando instala o NGINX Ingress Controller no namespace
nginx-ingress
usando o Helm.Verifique os serviços criados e obtenha o IP do LoadBalancer:
kubectl get svc -n nginx-ingress
Este comando lista todos os serviços no namespace
nginx-ingress
, incluindo o IP do LoadBalancer. Anote este IP, pois ele será necessário para configurar o apontamento do DNS.
2. Instalação do Cert-manager
O Cert-manager é necessário para gerenciar certificados SSL/TLS automaticamente.
Aplique as CustomResourceDefinitions (CRDs) necessárias:
kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.9/deploy/manifests/00-crds.yaml
Este comando aplica as definições de recursos personalizados necessárias para o Cert-manager.
Crie o namespace para o Cert-manager:
kubectl create namespace cert-manager
Este comando cria um namespace chamado
cert-manager
no cluster Kubernetes.Adicione um rótulo ao namespace para desabilitar a validação:
kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
Este comando adiciona um rótulo ao namespace
cert-manager
para desabilitar a validação.Adicione o repositório Helm do Cert-manager:
helm repo add jetstack https://charts.jetstack.io --force-update
Este comando adiciona o repositório Helm do Cert-manager.
Instale o Cert-manager usando Helm:
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.15.3 \ --set crds.enabled=true
Este comando instala o Cert-manager no namespace
cert-manager
usando o Helm.
3. Instalação do Rancher
O Rancher é uma plataforma de gerenciamento de Kubernetes que facilita a operação de clusters Kubernetes em ambientes de produção.
Adicione o repositório Helm do Rancher:
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
Este comando adiciona o repositório Helm do Rancher.
Instale o Rancher usando Helm:
helm upgrade -i rancher rancher-stable/rancher --set hostname=rancher.nataliagranato.xyz -n cattle-system
Este comando instala o Rancher no namespace
cattle-system
usando o Helm. O parâmetro--set hostname=rancher.nataliagranato.xyz
define o hostname personalizado para o Rancher.
Utilização de um Domínio Personalizado
Ao instalar o Rancher, é importante utilizar um domínio personalizado (por exemplo, rancher.nataliagranato.xyz
). Este domínio será usado para acessar a interface do Rancher. Não troque este DNS após a instalação, pois isso pode causar problemas de acesso e funcionamento do Rancher. O domínio personalizado deve estar configurado corretamente no seu DNS para apontar para o IP do Ingress Controller obtido anteriormente.
Pós-instalação
O servidor Rancher foi instalado. Note que pode levar alguns minutos para que o Rancher seja totalmente inicializado. Durante esse tempo, os certificados serão emitidos, os contêineres serão iniciados e a regra de Ingress será configurada.
Confira a documentação oficial em Rancher Docs.
Se você forneceu sua própria senha de bootstrap durante a instalação, acesse https://rancher.nataliagranato.xyz para começar.
Se esta é a primeira vez que você instalou o Rancher, execute o seguinte comando e clique na URL gerada:
echo https://rancher.nataliagranato.xyz/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')
RUNBOOKS
Configuração do Domínio Personalizado para o Rancher
Obtenha o IP do LoadBalancer:
kubectl get svc -n nginx-ingress
Anote o IP do LoadBalancer listado no serviço
nginx-ingress
.Configure o apontamento do DNS:
- Acesse o painel de controle do seu provedor de DNS.
- Crie um registro A para o domínio
rancher.nataliagranato.xyz
apontando para o IP do LoadBalancer obtido no passo anterior.
Solução de Problemas com o Ingress
Se, por algum motivo o deploy do Rancher ocorreu corretamente, mas você não está conseguindo acessar a url, é possível que o Ingress criado para acessar o Rancher, não obtive o valor do Ingress Controller, será necessário editar manualmente:
Edite o Ingress do Rancher:
kubectl edit ingress rancher -n nginx-ingress
Adicione a annotation do seu Ingress Controller e salve para acessar a URL.
annotations:
kubernetes.io/ingress.class: "nginx"