Publicando uma api GO no Digital Ocean Kubernetes

시간이 지나면 Digital Ocean에서 Kubernetes의 클러스터 없이 API를 배포하여 실현할 수 있습니다.

Kubernetes (K8s)는 오픈 소스를 자동으로 이식하여 사용하는 제품으로, 컨테이너에서 응용 프로그램의 크기를 확장합니다.

보라라



Primeiramente precisamos ter uma api funcional com Dockerfile configurado, né? rsrs Se você não sabe como criar uma api Go acompanha a série de no dev.to.

컨테이너 레지스트리



Com sua api pronta bora colocar ela em um Container Registry privado. Digital Ocean 서비스를 이용하십시오.

Crie uma conta na Digital Ocean Container Registry의 메뉴 중 하나입니다.



Depois criaremos um token de acesso para utilizarmos na autenticação do command line.



Gere o token e guarde ele em um local seguro!

Feito isso, baixo or 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 컨테이너 레지스트리.

doctl auth init -t <access_token>
doctl registry login


De volta na página do container registry, copy o endereço disponibilizado do do repositório.


터미널 없음, Dockerfile 구성이 탔던 응용 프로그램:

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


빨리! 이 이미지는 Digital Ocean의 컨테이너 레지스트리가 아닙니다.



쿠버네티스



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





지침으로 Siga 시작하기:


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: v1
kind: Service
metadata:
  name: api
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 3000
  selector:
    app: api
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
spec:
  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 alteração vamos rodar.

kubectl apply -f kubernetes/api.yaml


Para ver o pod e os services rodando:

kubectl get pods
kubectl get services






Nginx 인그레스 설치



nossa api ainda não tem acesso ex .

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: api
            port:
              number: 80


Aplicar as alterações basta rodar:

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

kubectl apply -f kubernetes/ingress.yaml


그게 뭐야?



Isso acabou de criar um load balancer na Digital Ocean e expôs nossos services internos para a porta 80 do ip externo do load balancer.
Lembrando que os recursos a serem explorados com o Nginx Ingress são diversos. Um deles e muito útil é configurar o domínio/subdomínio da aplicação e, com o cert manager, gerar os certificados de SSL automaticamente.



E 급히. API는 쿠버네티스와 함께 작동합니다!

좋은 웹페이지 즐겨찾기