An Interest In:
Web News this Week
- April 27, 2024
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
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.
Depois criaremos um token de acesso para utilizarmos na autenticao do command line.
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.
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.
Kubernetes
Vamos criar nosso primeiro cluster de Kubernetes, para isso vamos em:
Siga as instrues do Getting Started:
E por fim aguarde o cluster terminar de ser criado.
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
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.
E pronto. Api funcionado com o kubernetes!
Original Link: https://dev.to/booscaaa/publicando-uma-api-go-no-digital-ocean-kubernetes-49f3
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To