Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 18, 2022 10:30 pm GMT

Publicando uma api GO no Digital Ocean Kubernetes

Fala galerinha, veremos aqui como realizar um deploy de uma api go no cluster de Kubernetes da Digital Ocean.

Kubernetes (K8s) um produto Open Source utilizado para automatizar a implantao, o dimensionamento e o gerenciamento de aplicativos em continer.

Bora l

Primeiramente precisamos ter uma api funcional com Dockerfile configurado, n? rsrs Se voc no sabe como criar uma api Go acompanha a srie de Clean Architecture com Golang no dev.to.

Container Registry

Com sua api pronta bora colocar ela em um Container Registry privado. Usaremos tambm o servio da Digital Ocean.

Crie uma conta na Digital Ocean e v ao menu de Container Registry.

Image description

Depois criaremos um token de acesso para utilizarmos na autenticao do command line.

Image description

Gere o token e guarde ele em um local seguro!

Feito isso, baixo o command line interface da Digital Ocean (doctl) aqui: https://docs.digitalocean.com/reference/doctl/how-to/install/

Com o doctl instalado bem bonitinho. Vamos logar no nosso container registry.

doctl auth init -t <access_token>doctl registry login

De volta na pgina do container registry, copie o endereo disponibilizado do repositrio.

Image description
No terminal, na pasta da aplicao com o Dockerfile configurado rode:

docker build -t registry.digitalocean.com/booscaaa/clean-go .docker push registry.digitalocean.com/booscaaa/clean-go

E pronto! Sua imagem est disponvel no container registry da Digital Ocean.

Image description

Kubernetes

Vamos criar nosso primeiro cluster de Kubernetes, para isso vamos em:

Image description

Image description

Siga as instrues do Getting Started:

Image description
E por fim aguarde o cluster terminar de ser criado.

Image description

Com o cluster criado, vamos autenticar nosso registry para que o kubectl consiga baixar a imagem sem nenhum problema.

doctl registry kubernetes-manifest | kubectl apply -f -kubectl create secret generic do-registry --from-file=.dockerconfigjson=docker-config.json --type=kubernetes.io/dockerconfigjson

Vamos criar um arquivo em kubernetes/api.yaml

apiVersion: v1kind: Servicemetadata:  name: apispec:  ports:  - protocol: TCP    port: 80    targetPort: 3000  selector:    app: api---apiVersion: apps/v1kind: Deploymentmetadata:  name: apispec:  replicas: 4  selector:    matchLabels:      app: api  template:    metadata:      labels:        app: api    spec:      containers:      - name: api        image: registry.digitalocean.com/booscaaa/clean-go        resources:          limits:            memory: "128Mi"            cpu: "100m"        ports:        - containerPort: 3000

Para aplicar a alterao vamos rodar.

kubectl apply -f kubernetes/api.yaml

Para ver o pod e os services rodando:

kubectl get podskubectl get services

Image description

Image description

Instalando o Nginx Ingress

Nossa api ainda no tem acesso externo, para isso vamos configurar o Nginx ingress para kubernetes no arquivo kubernetes/ingress.yaml.

apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: api-ingressspec:  ingressClassName: nginx  rules:  - http:      paths:      - pathType: Prefix        path: "/"        backend:          service:            name: api            port:              number: 80

Para aplicar as alteraes basta rodar:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.2/deploy/static/provider/cloud/deploy.yamlkubectl apply -f kubernetes/ingress.yaml

O que isso faz?

Isso acabou de criar um load balancer na Digital Ocean e exps nossos services internos para a porta 80 do ip externo do load balancer.
Lembrando que os recursos a serem explorados com o Nginx Ingress so diversos. Um deles e muito til configurar o domnio/subdomnio da aplicao e, com o cert manager, gerar os certificados de SSL automaticamente.

Image description

E pronto. Api funcionado com o kubernetes!

Image description


Original Link: https://dev.to/booscaaa/publicando-uma-api-go-no-digital-ocean-kubernetes-49f3

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To