gin-key-value-store

Docker Image Version (latest semver) Docker Image Size (tag) Docker Pulls Go Reference Go Report Card

Test using Docker

Build docker image locally:

docker build -t shubhamtatvamasi/gin-key-value-store .

Run using docker:

docker run --rm -it -p 80:80 shubhamtatvamasi/gin-key-value-store

Run unit tests:

docker run --rm -it shubhamtatvamasi/gin-key-value-store go test

Test on Kubernetes

create a deployment and service:

kubectl create deployment gin-key-value-store --image=shubhamtatvamasi/gin-key-value-store
kubectl expose deployment gin-key-value-store --port=80 --name=gin-key-value-store

Ingress value for gin-key-value-store

kubectl apply -f - << EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: gin-key-value-store
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt
spec:
  tls:
  - hosts:
      - keyvaluestore.k8s.shubhamtatvamasi.com
    secretName: gin-key-value-store-tls
  rules:
  - host: keyvaluestore.k8s.shubhamtatvamasi.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: gin-key-value-store
            port:
              number: 80
EOF
kubectl delete deploy/gin-key-value-store svc/gin-key-value-store ing/gin-key-value-store

NodePort

Deploy on Kubernetes:

kubectl run gin-key-value-store --port=80 --expose \
  --image=shubhamtatvamasi/gin-key-value-store:0.3.2

kubectl patch svc gin-key-value-store \
  --patch='{"spec": {"type": "NodePort"}}'

kubectl patch svc gin-key-value-store \
  --patch='{"spec": {"ports": [{"nodePort": 30000, "port": 80}]}}'

Update the container image on pod:

kubectl set image po gin-key-value-store \
  gin-key-value-store=shubhamtatvamasi/gin-key-value-store:0.3.2

Delete deployment:

kubectl delete po/gin-key-value-store svc/gin-key-value-store

Test via curl

Set key value pair:

curl -X POST -d "key=name&value=shubham" localhost/post

# Test on live server
curl -X POST -d "key=name&value=shubham" http://k8s.shubhamtatvamasi.com:30000/post

Get value from key store:

curl "localhost/get?key=name"

# Test on live server
curl "http://k8s.shubhamtatvamasi.com:30000/get?key=name"

Subscribe for a key:

curl -X POST -d "key=name" localhost/subscribe

# Test on live server
curl -X POST -d "key=name" http://k8s.shubhamtatvamasi.com:30000/subscribe