Exemplo de Integração do Magalu Cloud Container Registry com um Cluster Kubernetes
Depois de enviar suas imagens de contêiner para o Magalu Cloud Container Registry, o próximo passo é integrar o registro com seu cluster Kubernetes. Isso permite que seus workloads no Kubernetes puxem e executem imagens diretamente do registro.
Pré-requisitos
- Uma imagem Docker enviada para o seu Magalu Cloud Container Registry. Vamos supor que a imagem seja nomeada
container-registry.br-se1.magalu.cloud/<nome-do-registro>/my-image:latest
. Substitua pelo caminho real do seu registro e nome da imagem. - Um cluster Kubernetes em execução.
- CLI do Magalu Cloud
Etapas
-
Crie um Secret Kubernetes para autenticação no Registro
Para permitir que o Cluster Kubernetes puxe imagens do Magalu Cloud Container Registry, você precisa criar um secret Kubernetes contendo suas credenciais de registro. Esse secret será usado pelo Kubernetes para autenticar no registro.
Obtenha as credenciais necessárias para autenticação com o Container Registry, através do comando na CLI do Magalu Cloud:
mgc container-registry credentials list
Em seguida, execute o seguinte comando no cluster Kubernetes para criar o secret:
kubectl create secret docker-registry magalu-registry-secret \
--docker-server=<url-do-seu-registro> \
--docker-username=<seu-nome-de-usuario> \
--docker-password=<sua-senha> \
--docker-email=<seu-email>Substitua os marcadores pelos seus valores reais:
<url-registro-mgc>
: A URL do Registro de Contêineres Magalu Cloud (ex.:container-registry.br-se1.magalu.cloud
oucontainer-registry.br-ne1.magalu.cloud
na região Brasil - Nordeste 1 (br-ne1)).<seu-nome-de-usuario>
: Seu nome de usuário do registro Magalu.<sua-senha>
: Sua senha do registro Magalu.<seu-email>
: O e-mail associado à sua conta no registro.
Esse comando cria um segredo chamado magalu-registry-secret no namespace padrão. Você pode especificar um namespace diferente usando a flag
-n
se necessário. -
Referencie o secret em um Deployment
Agora que o secret foi criado, você precisa referenciá-lo na especificação do seu Pod ou Deployment do Kubernetes, para que o Kubernetes consiga usá-lo ao puxar imagens do Registro de Contêineres Magalu.
Segue um exemplo de um Deployment do Kubernetes que usa uma imagem do Registro de Contêineres Magalu:
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-app-deployment
spec:
replicas: 2
selector:
matchLabels:
app: meu-app
template:
metadata:
labels:
app: meu-app
spec:
containers:
- name: meu-app-container
image: <url-do-seu-registro>/<nome-da-sua-imagem>:<tag>
ports:
- containerPort: 80
imagePullSecrets:
- name: magalu-registry-secretSubstitua os seguintes marcadores:
<url-do-seu-registro>
: A URL do seu Registro de Contêineres Magalu (ex.:container-registry.br-se1.magalu.cloud/<nome-do-registro>
).<nome-da-sua-imagem>
: O nome da imagem que você enviou para o registro.<tag>
: A tag da imagem.
O campo
imagePullSecrets
especifica o nome do secret (magalu-registry-secret
) que o Kubernetes deve usar para autenticar no registro. -
Aplicar o Deployment Salve o YAML acima como
deployment.yaml
e aplique-o ao seu cluster Kubernetes usando o seguinte comando:kubectl apply -f deployment.yaml
O Kubernetes agora irá puxar a imagem especificada do Registro de Contêineres Magalu e implantá-la como parte do
meu-app-deployment
. -
Verificar o Deployment Você pode verificar se o deployment foi bem-sucedido verificando o status dos pods:
kubectl get pods
Você deve ver dois pods em execução (já que especificamos
replicas: 2
no deployment). Se os pods não estiverem em execução, verifique os logs para quaisquer erros relacionados ao pull da imagem:kubectl describe pod <nome-do-pod>
Expor a aplicação (opcional) Se você deseja expor sua aplicação para tráfego externo, pode criar um recurso de Serviço ou Ingress no Kubernetes. Aqui está um exemplo de como expor a aplicação usando um serviço do tipo LoadBalancer:
apiVersion: v1
kind: Service
metadata:
name: meu-app-service
spec:
type: LoadBalancer
selector:
app: meu-app
ports:
- protocol: TCP
port: 80
targetPort: 80
Aplique o serviço:
kubectl apply -f service.yaml
Após aplicar o serviço, você pode recuperar o endereço IP externo atribuído ao seu serviço:
kubectl get svc meu-app-service