2-Bankapp Docker and k8s July 24
2-Bankapp Docker and k8s July 24
Step 1: create docker images of loans, cards and account ms and push to docker hub
---------------------------------------------------------------------------------
step 1.1: add to pom.xml:
--------------------------
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<from>
<image>openjdk:17-alpine</image>
</from>
<to>
<image>rgupta00/${project.artifactId}:v1</image>
</to>
</configuration>
</plugin>
<image>rgupta00/${project.artifactId}:v1</image>
</to>
</configuration>
</plugin>
-----------------------------------------
Step 2: adding config server to the application:
--------------------------------------------------
Step 2.1 , 2.2 and 2.2 same as above
networks:
- busycoder
accounts:
image: "rgupta00/accounts:v2"
container_name: accounts-ms
ports:
- "8080:8080"
deploy:
resources:
limits:
memory: 700m
depends_on:
configserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "accounts"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
SPRING_PROFILES_ACTIVE: default
loans:
image: "rgupta00/loans:v2"
container_name: loans-ms
ports:
- "8090:8090"
deploy:
resources:
limits:
memory: 700m
depends_on:
configserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "loans"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
SPRING_PROFILES_ACTIVE: default
cards:
image: "rgupta00/cards:v2"
container_name: cards-ms
ports:
- "9090:9090"
deploy:
resources:
limits:
memory: 700m
depends_on:
configserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "cards"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
SPRING_PROFILES_ACTIVE: default
networks:
busycoder:
driver: "bridge"
-----------------------------------------
Step 3: adding eureka server to the application:
--------------------------------------------------
Step 3.1 , 3.2 and 3.3 same as above
eurekaserver:
image: "rgupta00/eurekaserver:v3"
container_name: eurekaserver-ms
ports:
- "8070:8070"
deploy:
resources:
limits:
memory: 700m
healthcheck:
test: "curl --fail --silent localhost:8070/actuator/health/readiness | grep
UP || exit 1"
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
depends_on:
configserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "eurekaserver"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
SPRING_PROFILES_ACTIVE: default
loans:
image: "rgupta00/loans:v3"
container_name: loans-ms
ports:
- "8090:8090"
deploy:
resources:
limits:
memory: 700m
depends_on:
configserver:
condition: service_healthy
eurekaserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "loans"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: "http://eurekaserver:8070/eureka/"
SPRING_PROFILES_ACTIVE: default
cards:
image: "rgupta00/cards:v3"
container_name: cards-ms
ports:
- "9090:9090"
deploy:
resources:
limits:
memory: 700m
depends_on:
configserver:
condition: service_healthy
eurekaserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "cards"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: "http://eurekaserver:8070/eureka/"
SPRING_PROFILES_ACTIVE: default
accounts:
image: "rgupta00/accounts:v3"
container_name: accounts-ms
ports:
- "8080:8080"
deploy:
resources:
limits:
memory: 700m
depends_on:
configserver:
condition: service_healthy
eurekaserver:
condition: service_healthy
networks:
- busycoder
environment:
SPRING_APPLICATION_NAME: "accounts"
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: "http://eurekaserver:8070/eureka/"
SPRING_PROFILES_ACTIVE: default
networks:
busycoder:
driver: "bridge"
Micorservice k8s
------------------
helm version
version.BuildInfo{Version:"v3.15.1",
GitCommit:"e211f2aa62992bd72586b395de50979e31231829", GitTreeState:"clean",
GoVersion:"go1.22.3"}
installing dashboard:
--------------------------
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
"kubernetes-dashboard" has been added to your repositories
***********************************************************************************
**************
*** PLEASE BE PATIENT: Kubernetes Dashboard may need a few minutes to get up and
become ready ***
***********************************************************************************
**************
NOTE: In case port-forward command does not work, make sure that kong service name
is correct.
Check the services in Kubernetes Dashboard namespace using:
kubectl -n kubernetes-dashboard get svc
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/
creating-sample-user.md
dashboard-adminuser.yaml
--------------------------
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
Creating a ClusterRoleBinding
-----------------------------
dashboard-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
https://localhost:8443/
1_configserver.yml
-----------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: configserver-deployment
labels:
app: configserver
spec:
replicas: 1
selector:
matchLabels:
app: configserver
template:
metadata:
labels:
app: configserver
spec:
containers:
- name: configserver
image: rgupta00/configserver:v3
ports:
- containerPort: 8071
---
apiVersion: v1
kind: Service
metadata:
name: configserver
spec:
selector:
app: configserver
type: LoadBalancer
ports:
- protocol: TCP
port: 8071
targetPort: 8071
2_configmaps.yml
-----------------------
apiVersion: v1
kind: ConfigMap
metadata:
name: busycoder-configmap
data:
SPRING_PROFILES_ACTIVE: default
SPRING_CONFIG_IMPORT: "configserver:http://configserver:8071/"
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: "http://eurekaserver:8070/eureka/"
CONFIGSERVER_APPLICATION_NAME: configserver
EUREKA_APPLICATION_NAME: eurekaserver
ACCOUNTS_APPLICATION_NAME: accounts
LOANS_APPLICATION_NAME: loans
CARDS_APPLICATION_NAME: cards
GATEWAY_APPLICATION_NAME: gatewayserver
3_eurekaserver.yml
-----------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: eurekaserver-deployment
labels:
app: eurekaserver
spec:
replicas: 1
selector:
matchLabels:
app: eurekaserver
template:
metadata:
labels:
app: eurekaserver
spec:
containers:
- name: eurekaserver
image: rgupta00/eurekaserver:v3
ports:
- containerPort: 8070
env:
- name: SPRING_APPLICATION_NAME
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: EUREKA_APPLICATION_NAME
- name: SPRING_CONFIG_IMPORT
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_CONFIG_IMPORT
---
apiVersion: v1
kind: Service
metadata:
name: eurekaserver
spec:
selector:
app: eurekaserver
type: LoadBalancer
ports:
- protocol: TCP
port: 8070
targetPort: 8070
4_cards.yml
-----------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: cards-deployment
labels:
app: cards
spec:
replicas: 1
selector:
matchLabels:
app: cards
template:
metadata:
labels:
app: cards
spec:
containers:
- name: cards
image: rgupta00/cards:v3
ports:
- containerPort: 9090
env:
- name: SPRING_APPLICATION_NAME
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: CARDS_APPLICATION_NAME
- name: SPRING_PROFILES_ACTIVE
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_PROFILES_ACTIVE
- name: SPRING_CONFIG_IMPORT
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_CONFIG_IMPORT
- name: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
---
apiVersion: v1
kind: Service
metadata:
name: cards
spec:
selector:
app: cards
type: LoadBalancer
ports:
- protocol: TCP
port: 9090
targetPort: 9090
5_loans.yml
-----------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: loans-deployment
labels:
app: loans
spec:
replicas: 1
selector:
matchLabels:
app: loans
template:
metadata:
labels:
app: loans
spec:
containers:
- name: loans
image: rgupta00/loans:v3
ports:
- containerPort: 8090
env:
- name: SPRING_APPLICATION_NAME
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: LOANS_APPLICATION_NAME
- name: SPRING_PROFILES_ACTIVE
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_PROFILES_ACTIVE
- name: SPRING_CONFIG_IMPORT
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_CONFIG_IMPORT
- name: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
---
apiVersion: v1
kind: Service
metadata:
name: loans
spec:
selector:
app: loans
type: LoadBalancer
ports:
- protocol: TCP
port: 8090
targetPort: 8090
6_accounts.yml
-----------------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: accounts-deployment
labels:
app: accounts
spec:
replicas: 1
selector:
matchLabels:
app: accounts
template:
metadata:
labels:
app: accounts
spec:
containers:
- name: accounts
image: rgupta00/accounts:v3
ports:
- containerPort: 8080
env:
- name: SPRING_APPLICATION_NAME
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: ACCOUNTS_APPLICATION_NAME
- name: SPRING_PROFILES_ACTIVE
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_PROFILES_ACTIVE
- name: SPRING_CONFIG_IMPORT
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: SPRING_CONFIG_IMPORT
- name: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
valueFrom:
configMapKeyRef:
name: busycoder-configmap
key: EUREKA_CLIENT_SERVICEURL_DEFAULTZONE
---
apiVersion: v1
kind: Service
metadata:
name: accounts
spec:
selector:
app: accounts
type: LoadBalancer
ports:
- protocol: TCP
port: 8080
targetPort: 8080
helm:
--------
https://helm.sh/docs/intro/using_helm/
helm version
helm ls
helm search hub wordpress
https://archive.eksworkshop.com/beginner/060_helm/helm_nginx/addbitnamirepo/
helm repo add bitnami https://charts.bitnami.com/bitnami
helm template .