Skip to content

Commit

Permalink
setting up of greet server, client and deployments without any load b…
Browse files Browse the repository at this point in the history
…alancing
  • Loading branch information
HiteshRepo committed May 14, 2023
0 parents commit dd31d26
Show file tree
Hide file tree
Showing 23 changed files with 1,316 additions and 0 deletions.
73 changes: 73 additions & 0 deletions Taskfile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
version: "3"

tasks:
generate:
desc: "Generate code"
cmds:
- protoc --go_out=internal/pkg --go-grpc_out=internal/pkg internal/pkg/proto/greet.proto

compile-greet-server:
cmds:
- go build -a -o ./build/out/greetServer cmd/greetserver/main.go

compile-greet-client:
cmds:
- go build -a -o ./build/out/greetClient cmd/greetclient/main.go

deps:
cmds:
- go mod download

clean:
cmds:
- go clean -testcache
- rm -rf ./build/out

free-up-serverport:
cmds:
- sudo kill -9 $(sudo netstat -lnp | grep {{.serverport}} | awk '{print $NF}' | awk -F '/' '{print $1}')
vars:
serverport: 50051

package-greet-client:
deps: [compile-greet-client]
cmds:
- docker build --file build/Dockerfiles/Dockerfile.greetClient -t hiteshpattanayak/greet-client:4.0 .

publish-greet-client:
deps: [package-greet-client]
cmds:
- docker push hiteshpattanayak/greet-client:4.0

package-greet-server:
cmds:
- docker build --file build/Dockerfiles/Dockerfile.greetServer -t hiteshpattanayak/greet-server:1.0 .

publish-greet-server:
deps: [package-greet-server]
cmds:
- docker push hiteshpattanayak/greet-server:1.0

run-greet-server-cmd:
deps: [compile-greet-server]
cmds:
- ./build/out/greetServer

run-greet-client-cmd:
deps: [compile-greet-client]
cmds:
- ./build/out/greetClient

run-greet-server-k8s:
deps: [publish-greet-server]
cmds:
- kubectl run greetserver --image=hiteshpattanayak/greet-server:1.0 --restart=Never

run-greet-client-k8s:
deps: [publish-greet-client]
cmds:
- kubectl run greetclient --image=hiteshpattanayak/greet-client:1.0 --restart=Never

get-dns-name-of-svc:
cmds:
- kubectl exec greetclient -- nslookup greetserver | grep Name | awk -F ':' '{print $1}'
20 changes: 20 additions & 0 deletions build/Dockerfiles/Dockerfile.greetClient
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
FROM golang:1.19.9-alpine3.18 AS builder

# Install all required dependencies for building
RUN apk update
RUN apk add git build-base
WORKDIR /service

## Install go tools
RUN go install github.com/go-task/task/v3/cmd/task@latest

COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN task compile-greet-client

FROM alpine:3.14.2
COPY --from=builder ./service/build/out/greetClient greetClient
RUN apk update
RUN apk add curl
ENTRYPOINT ["./greetClient"]
18 changes: 18 additions & 0 deletions build/Dockerfiles/Dockerfile.greetServer
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM golang:1.19.9-alpine3.18 AS builder

# Install all required dependencies for building
RUN apk update
RUN apk add git build-base
WORKDIR /service

## Install go tools
RUN go install github.com/go-task/task/v3/cmd/task@latest

COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN task compile-greet-server

FROM alpine:3.14.2
COPY --from=builder ./service/build/out/greetServer greetServer
ENTRYPOINT ["./greetServer"]
16 changes: 16 additions & 0 deletions build/deploy/greet-client.svc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
labels:
run: greetclient
name: greetclient
namespace: default
spec:
ports:
- name: restgateway
port: 9091
protocol: TCP
targetPort: 9091
selector:
run: greetclient
type: LoadBalancer
9 changes: 9 additions & 0 deletions build/deploy/greet-clusterrole.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: service-reader
rules:
- apiGroups: [""]
resources: ["services"]
verbs: ["get", "watch", "list"]
12 changes: 12 additions & 0 deletions build/deploy/greet-clusterrolebinding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: service-reader-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: service-reader
subjects:
- kind: ServiceAccount
name: default
namespace: default
19 changes: 19 additions & 0 deletions build/deploy/greet-ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: greet-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: greet.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: greetclient
port:
name: restgateway
16 changes: 16 additions & 0 deletions build/deploy/greet.svc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
labels:
run: greetserver
name: greetserver
namespace: default
spec:
ports:
- name: grpc
port: 50051
protocol: TCP
targetPort: 50051
selector:
run: greetserver
type: ClusterIP
28 changes: 28 additions & 0 deletions build/deploy/greetclient-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: greetclient-deploy
spec:
replicas: 1
selector:
matchLabels:
run: greetclient
template:
metadata:
labels:
run: greetclient
spec:
containers:
- image: hiteshpattanayak/greet-client:4.0
name: greetclient
ports:
- containerPort: 9091
env:
- name: GRPC_SERVER_HOST
value: greetserver.default.svc.cluster.local
- name: GRPC_SVC
value: greetserver
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
20 changes: 20 additions & 0 deletions build/deploy/greetclient-pod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
apiVersion: v1
kind: Pod
metadata:
labels:
run: greetclient
name: greetclient
namespace: default
spec:
containers:
- image: hiteshpattanayak/greet-client:4.0
name: greetclient
env:
- name: GRPC_SERVER_HOST
value: greetserver.default.svc.cluster.local
- name: GRPC_SVC
value: greetserver
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
29 changes: 29 additions & 0 deletions build/deploy/greetserver-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: greetserver-deploy
spec:
replicas: 3
selector:
matchLabels:
run: greetserver
template:
metadata:
labels:
run: greetserver
spec:
containers:
- image: hiteshpattanayak/greet-server:1.0
imagePullPolicy: IfNotPresent
name: greetserver
ports:
- containerPort: 50051
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
23 changes: 23 additions & 0 deletions build/deploy/greetserver-pod.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: v1
kind: Pod
metadata:
labels:
run: greetserver
name: greetserver
namespace: default
spec:
containers:
- image: hiteshpattanayak/greet-server:1.0
imagePullPolicy: IfNotPresent
name: greetserver
ports:
- containerPort: 50051
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Binary file added build/out/greetClient
Binary file not shown.
Binary file added build/out/greetServer
Binary file not shown.
22 changes: 22 additions & 0 deletions cmd/greetclient/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"os"
"os/signal"
"syscall"

"github.com/hiteshrepo/grpc-loadbalancing/internal/app/greetclient"
)

func main() {
a := greetclient.App{}
a.Start()
<-interrupt()
a.Shutdown()
}

func interrupt() chan os.Signal {
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, syscall.SIGINT, syscall.SIGTERM)
return interrupt
}
22 changes: 22 additions & 0 deletions cmd/greetserver/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main

import (
"os"
"os/signal"
"syscall"

"github.com/hiteshrepo/grpc-loadbalancing/internal/app/greetserver"
)

func main() {
a := greetserver.App{}
a.Start()
<-interrupt()
a.Shutdown()
}

func interrupt() chan os.Signal {
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, syscall.SIGINT, syscall.SIGTERM)
return interrupt
}
Loading

0 comments on commit dd31d26

Please sign in to comment.