Merge pull request #208 from meysamhadeli/ci/add-kubernetes

ci: Add kubernetes
This commit is contained in:
Meysam Hadeli 2023-02-26 01:10:55 +03:30 committed by GitHub
commit e8d61d5231
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 223 additions and 306 deletions

View File

@ -1,47 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: booking-deployment
labels:
app: booking
spec:
replicas: 1
selector:
matchLabels:
app: booking
template:
metadata:
labels:
app: booking
spec:
containers:
- image: meysamh66/booking-microservices-booking:v1.6.7
name: booking
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: booking
spec:
selector:
app: booking
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

View File

@ -1,12 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: booking-microservices-cert
namespace: default
spec:
secretName: booking-tls-secret
issuerRef:
name: booking-microservices-issuer
kind: Issuer
dnsNames:
- booking-microservices.com

View File

@ -1,8 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: booking-microservices-issuer
namespace: default
spec:
ca:
secretName: booking-tls

View File

@ -1,30 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIFKTCCAxGgAwIBAgIUFa9lh176zt1+zRoMwLJhUb9aEGswDQYJKoZIhvcNAQEL
BQAwJDEiMCAGA1UEAwwZYm9va2luZy1taWNyb3NlcnZpY2VzLmNvbTAeFw0yMzAy
MjExMTQ3MTBaFw0yNDAyMjExMTQ3MTBaMCQxIjAgBgNVBAMMGWJvb2tpbmctbWlj
cm9zZXJ2aWNlcy5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDU
jgMoXxtavsMXUoHva0WUfRybJMUgGSPniweawyn5FigUTx6gv6VvOzqSmGZ185P4
UIbWCud9WjECESJUJB4qZbRiDYIMAd2336ci5wDsnDFUznXtM9g5UFfKwOweOVcv
jsStYf6K9wd/1itLorHx5txEPnPdTdFGFj9YUOku2c5VYH2OKiI7jjCh00stZdz8
t5i//Kv27PDt6DG7/un0ygTG1kmMUMPrpRBeHlQMYft7OqM3GHrDfiuH7c5ZF5c6
aDgPykyw2R3gLbBjyHbja9VFJs+dMEbPMlkDKzIV+ggugVGwuQdoD5/Jvkzo3qXT
cZJwGE72OEFiJn/VwWOH0WjlXKjHBAjhSn9n63NFjhs3SGKtdioqHBOiZCxB666r
MHGZy15kDyzgDUSF5OI+K/mb3kwGD8S5uzemO6dWxWQwL7zNRpxMiH4b8D8CFBUu
rCICIku5hSD/LNvt+NOVtCRYTjSLOMdZactH70P1EwqrJGS2sJk8DDi2h5o2ChnI
W/kxMOyZr3bODABZLiaNwHYvEHBHHwgueXGHbiYUDh7s9sMfJQZrGZDnd7GHyI7H
emdsbB02svzDPrAE9LQf4WB/dqaNRlI2ftJr3HJ5a9gYBoJDKZu69R47G60j3mrk
xHuXGRCc8xAmOqI4UcektWoDZGZkLE1UwHxYPERxZwIDAQABo1MwUTAdBgNVHQ4E
FgQUGyqcZzScRYbmp3NfHFsY54rZQNIwHwYDVR0jBBgwFoAUGyqcZzScRYbmp3Nf
HFsY54rZQNIwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAbiOq
XPZ0qorffY9nXQkicdZB7fMqDf5zZ22lWBE4flDzd8ffO6NeH/Ft7U3YwpKstuzh
3nHVbR+T35bufUpLyPbm+J/gIG9SHy5NTk2en+7lxrobesNVn669S/TAmrwfplCy
VeptYT42Jl3/Sd64DwH4LHAUrPjsdUhyYyWaWntTgrqxAy+tUoPxjvrX14eWC6wH
c8t1ovMSfSs5eapswROQK2VAr+19p2pFYPTEL75epChxn2f28gVnlEVgmkAok4PR
IWk4jWdz/HSGnOPI5NCmmoeogRAcu3T9jxpOoFAGXYE1OEtGqWi1yJAEJ45OVTsY
kBOiFxl8/1eB2JdVXPCETUhVzS/wlfH8nowZszy58sQ5QwG9e1wnUw/0R73sS1EG
qcHkiBED0ygNCNwMOVXMnalDDniXKBJwqZ0Y5K+L9YXzOGiO+hBM1LETTqyuGw7I
U3SpqDwIVISh3D8MW77XQWfgPey5LMEkLuHt8jKyi5B06J9A7FmWXgsvijfrclaA
wdpCjBV7jccmzBIxYUwpKNPyccT92N7P86VQ3WcOCPjHbgP3m1tSRT6PogjDbn7M
wVhTyCo0cuq2QWb4qKX7sHPvCJbrKzIcV6dObfmsR530Ktq6ZSLMmT9G2dJqsOAm
l5yLSPrSa9N9tQM7CYR30x7vgi3GgoFTlkCXFWA=
-----END CERTIFICATE-----

View File

@ -1,52 +0,0 @@
-----BEGIN PRIVATE KEY-----
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
5/NPN4u96Bq+QaAlKHJsn1/MWEdZM/hr
-----END PRIVATE KEY-----

View File

@ -1,2 +0,0 @@
openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout tls.key -out tls.crt -subj "/CN=booking-microservices.com" -days 365
kubectl create secret tls booking-tls --key tls.key --cert tls.crt

View File

@ -1,10 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: appsettings
data:
appsettings.json: |-
{
.Files.Get "settings/appsettings.docker.json"
}
#ref: https://www.mrjamiebowman.com/software-development/dotnet/kubernetes-configmaps-with-net-core/

View File

@ -1,47 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: flight-deployment
labels:
app: flight
spec:
replicas: 1
selector:
matchLabels:
app: flight
template:
metadata:
labels:
app: flight
spec:
containers:
- image: meysamh66/booking-microservices-flight:v1.6.7
name: flight
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: flight
spec:
selector:
app: flight
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

View File

@ -1,47 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: identity-deployment
labels:
app: identity
spec:
replicas: 1
selector:
matchLabels:
app: identity
template:
metadata:
labels:
app: identity
spec:
containers:
- image: meysamh66/booking-microservices-identity:v1.6.7
name: identity
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: identity
spec:
selector:
app: identity
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

View File

@ -1,47 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: passenger-deployment
labels:
app: passenger
spec:
replicas: 1
selector:
matchLabels:
app: passenger
template:
metadata:
labels:
app: passenger
spec:
containers:
- image: meysamh66/booking-microservices-passenger:v1.6.7
name: passenger
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: passenger
spec:
selector:
app: passenger
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

View File

@ -534,3 +534,221 @@ spec:
io.kompose.service: redis
status:
loadBalancer: {}
---
# #######################################################
# ConfigMap AppSettings
# #######################################################
apiVersion: v1
kind: ConfigMap
metadata:
name: appsettings
data:
appsettings.json: |-
{
.Files.Get "settings/appsettings.docker.json"
}
#ref: https://www.mrjamiebowman.com/software-development/dotnet/kubernetes-configmaps-with-net-core/
---
# #######################################################
# Flight
# #######################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: flight-deployment
labels:
app: flight
spec:
replicas: 1
selector:
matchLabels:
app: flight
template:
metadata:
labels:
app: flight
spec:
containers:
- image: meysamh66/booking-microservices-flight:v1.6.7
name: flight
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: flight
spec:
selector:
app: flight
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
---
# #######################################################
# Identity
# #######################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: identity-deployment
labels:
app: identity
spec:
replicas: 1
selector:
matchLabels:
app: identity
template:
metadata:
labels:
app: identity
spec:
containers:
- image: meysamh66/booking-microservices-identity:v1.6.7
name: identity
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: identity
spec:
selector:
app: identity
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
---
# #######################################################
# Booking
# #######################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: booking-deployment
labels:
app: booking
spec:
replicas: 1
selector:
matchLabels:
app: booking
template:
metadata:
labels:
app: booking
spec:
containers:
- image: meysamh66/booking-microservices-booking:v1.6.7
name: booking
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: booking
spec:
selector:
app: booking
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
---
# #######################################################
# Passenger
# #######################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: passenger-deployment
labels:
app: passenger
spec:
replicas: 1
selector:
matchLabels:
app: passenger
template:
metadata:
labels:
app: passenger
spec:
containers:
- image: meysamh66/booking-microservices-passenger:v1.6.7
name: passenger
ports:
- containerPort: 80
env:
- name: ASPNETCORE_ENVIRONMENT
value: docker
- name: ASPNETCORE_URLS
value: http://+
volumeMounts:
- name: appsettings-volume
mountPath: /app/Settings
volumes:
- name: appsettings-volume
configMap:
name: appsettings
---
apiVersion: v1
kind: Service
metadata:
name: passenger
spec:
selector:
app: passenger
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

View File

@ -4,6 +4,7 @@ metadata:
name: booking-microservies
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "128k"
nginx.ingress.kubernetes.io/proxy-buffers: "4 256k"
nginx.ingress.kubernetes.io/proxy-busy-buffers-size: "256k"
@ -28,7 +29,7 @@ spec:
name: flight
port:
number: 80
- path: /identity/(.+)
- path: /identity/(.*)
pathType: Prefix
backend:
service:
@ -44,7 +45,7 @@ spec:
name: flight
port:
number: 80
- path: /flight/(.+)
- path: /flight/(.*)
pathType: Prefix
backend:
service:
@ -60,7 +61,7 @@ spec:
name: passenger
port:
number: 80
- path: /passenger/(.+)
- path: /passenger/(.*)
pathType: Prefix
backend:
service:
@ -76,7 +77,7 @@ spec:
name: booking
port:
number: 80
- path: /booking/(.+)
- path: /booking/(.*)
pathType: Prefix
backend:
service: