Sign inSign up

douglaszuqueto/go-api-k8s

By douglaszuqueto

•Updated over 4 years ago

Image
0

622

douglaszuqueto/go-api-k8s repository overview

⁠API em Go para rodar em clusters K8S

API em Go para utilização em laboratório de estudos K8S

⁠Tecnologias utilizadas

  • Fiber

⁠Endpoints

  • Ping
  • Info
  • Env
⁠Ping

Request: /ping

curl http://127.0.0.1:4000/ping

Response:

pong
⁠Info

Request: /info

curl http://127.0.0.1:4000/info

Response:

{
  "API_VERSION": "v1.0.0",
  "NODE_NAME": "server",
  "POD_NAME": "doks-api-59d7c46775-p8d7m",
  "HOSTNAME": "fedora"
}
⁠Env

Request: /env

curl http://127.0.0.1:4000/env

Response:

{
  "   ": "/app/api",
  "DOKS_API_PORT": "tcp://10.43.197.32:5000",
  "DOKS_API_PORT_5000_TCP": "tcp://10.43.197.32:5000",
  "DOKS_API_PORT_5000_TCP_ADDR": "10.43.197.32",
  "DOKS_API_PORT_5000_TCP_PORT": "5000",
  "DOKS_API_PORT_5000_TCP_PROTO": "tcp",
  "DOKS_API_SERVICE_HOST": "10.43.197.32",
  "DOKS_API_SERVICE_PORT": "5000",
  "DOKS_API_SERVICE_PORT_TCP_5000_4000": "5000",
  "HOME": "/root",
  "HOSTNAME": "doks-api-59d7c46775-p8d7m",
  "KUBERNETES_PORT": "tcp://10.43.0.1:443",
  "KUBERNETES_PORT_443_TCP": "tcp://10.43.0.1:443",
  "KUBERNETES_PORT_443_TCP_ADDR": "10.43.0.1",
  "KUBERNETES_PORT_443_TCP_PORT": "443",
  "KUBERNETES_PORT_443_TCP_PROTO": "tcp",
  "KUBERNETES_SERVICE_HOST": "10.43.0.1",
  "KUBERNETES_SERVICE_PORT": "443",
  "KUBERNETES_SERVICE_PORT_HTTPS": "443",
  "NODE_NAME": "server",
  "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
  "POD_NAME": "doks-api-59d7c46775-p8d7m"
}

⁠Deployment

Nos tópicos abaixo, segue algumas maneiras de realizar o teste/deploy da API

⁠Docker

Rodando a API no Docker:

docker run -it --rm --name go-api-k8s -p 4000:4000 douglaszuqueto/go-api-k8s:latest
⁠K8S

Deployment

kind: Deployment
apiVersion: apps/v1
metadata:
  name: go-api-k8s
  labels:
    k8s-app: go-api-k8s
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: go-api-k8s
  template:
    metadata:
      name: go-api-k8s
      labels:
        k8s-app: go-api-k8s
    spec:
      containers:
        - name: go-api-k8s
          image: douglaszuqueto/go-api-k8s
          imagePullPolicy: IfNotPresent
          env:
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          resources:
            requests:
              cpu: 200m
      restartPolicy: Always

Service

kind: Service
apiVersion: v1
metadata:
  name: go-api-k8s
  namespace: default
  labels:
    k8s-app: go-api-k8s
spec:
  ports:
    - name: tcp-5000-4000
      protocol: TCP
      port: 5000
      targetPort: 4000
  selector:
    k8s-app: go-api-k8s
  type: LoadBalancer
      
kubectl apply -f ./k8s/deployment.yml
kubectl apply -f ./k8s/svc.yml

Tag summary

Content type

Image

Digest

Size

6 MB

Last updated

over 4 years ago

docker pull douglaszuqueto/go-api-k8s