API em Go para utilização em laboratório de estudos K8S
Request: /ping
curl http://127.0.0.1:4000/ping
Response:
pong
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"
}
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"
}
Nos tópicos abaixo, segue algumas maneiras de realizar o teste/deploy da API
Rodando a API no Docker:
docker run -it --rm --name go-api-k8s -p 4000:4000 douglaszuqueto/go-api-k8s:latest
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
Content type
Image
Digest
Size
6 MB
Last updated
over 4 years ago
docker pull douglaszuqueto/go-api-k8s