mirror of
https://github.com/meysamhadeli/booking-microservices.git
synced 2026-04-14 04:28:38 +08:00
1245 lines
26 KiB
YAML
1245 lines
26 KiB
YAML
## ref: https://kompose.io
|
|
#######################################################
|
|
# Network
|
|
#######################################################
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: NetworkPolicy
|
|
metadata:
|
|
creationTimestamp: null
|
|
name: booking
|
|
spec:
|
|
ingress:
|
|
- from:
|
|
- podSelector:
|
|
matchLabels:
|
|
io.kompose.network/booking: "true"
|
|
podSelector:
|
|
matchLabels:
|
|
io.kompose.network/booking: "true"
|
|
|
|
---
|
|
#######################################################
|
|
# ElasticSearch
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: elasticsearch
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: elasticsearch
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: elasticsearch
|
|
spec:
|
|
containers:
|
|
- name: elasticsearch
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:8.17.0
|
|
env:
|
|
- name: discovery.type
|
|
value: "single-node"
|
|
- name: cluster.name
|
|
value: "docker-cluster"
|
|
- name: node.name
|
|
value: "docker-node"
|
|
- name: ES_JAVA_OPTS
|
|
value: "-Xms512m -Xmx512m"
|
|
- name: xpack.security.enabled
|
|
value: "false"
|
|
- name: xpack.security.http.ssl.enabled
|
|
value: "false"
|
|
- name: xpack.security.transport.ssl.enabled
|
|
value: "false"
|
|
- name: network.host
|
|
value: "0.0.0.0"
|
|
- name: http.port
|
|
value: "9200"
|
|
- name: transport.host
|
|
value: "localhost"
|
|
- name: bootstrap.memory_lock
|
|
value: "true"
|
|
- name: cluster.routing.allocation.disk.threshold_enabled
|
|
value: "false"
|
|
ports:
|
|
- containerPort: 9200
|
|
- containerPort: 9300
|
|
volumeMounts:
|
|
- mountPath: /usr/share/elasticsearch/data
|
|
name: elastic-data
|
|
volumes:
|
|
- name: elastic-data
|
|
persistentVolumeClaim:
|
|
claimName: elasticsearch-pvc
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: elasticsearch-pvc
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 10Gi
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: elasticsearch
|
|
spec:
|
|
selector:
|
|
app: elasticsearch
|
|
ports:
|
|
- port: 9200
|
|
targetPort: 9200
|
|
- port: 9300
|
|
targetPort: 9300
|
|
type: ClusterIP
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolume
|
|
metadata:
|
|
name: elasticsearch-pv
|
|
labels:
|
|
type: local
|
|
spec:
|
|
storageClassName: manual
|
|
capacity:
|
|
storage: 10Gi
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
hostPath:
|
|
path: "/mnt/data"
|
|
---
|
|
#######################################################
|
|
# Kibana
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: kibana
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: kibana
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: kibana
|
|
spec:
|
|
containers:
|
|
- name: kibana
|
|
image: docker.elastic.co/kibana/kibana:8.17.0
|
|
env:
|
|
- name: ELASTICSEARCH_HOSTS
|
|
value: "http://elasticsearch:9200"
|
|
ports:
|
|
- containerPort: 5601
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: kibana
|
|
spec:
|
|
selector:
|
|
app: kibana
|
|
ports:
|
|
- port: 5601
|
|
targetPort: 5601
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Tempo
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: tempo
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: tempo
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: tempo
|
|
spec:
|
|
containers:
|
|
- name: tempo
|
|
image: grafana/tempo:latest
|
|
args:
|
|
- "-config.file=/etc/tempo.yaml"
|
|
ports:
|
|
- containerPort: 3200
|
|
- containerPort: 4317
|
|
- containerPort: 4318
|
|
volumeMounts:
|
|
- mountPath: /etc/tempo.yaml
|
|
name: tempo-config
|
|
subPath: tempo.yaml
|
|
volumes:
|
|
- name: tempo-config
|
|
configMap:
|
|
name: tempo-config
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: tempo-config
|
|
data:
|
|
tempo.yaml: |
|
|
# Your Tempo configuration here
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: tempo
|
|
spec:
|
|
selector:
|
|
app: tempo
|
|
ports:
|
|
- port: 3200
|
|
targetPort: 3200
|
|
- port: 4317
|
|
targetPort: 4317
|
|
- port: 4318
|
|
targetPort: 4318
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Looki
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: loki
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: loki
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: loki
|
|
spec:
|
|
containers:
|
|
- name: loki
|
|
image: grafana/loki:latest
|
|
args:
|
|
- "-config.file=/etc/loki/local-config.yaml"
|
|
ports:
|
|
- containerPort: 3100
|
|
volumeMounts:
|
|
- mountPath: /etc/loki/local-config.yaml
|
|
name: loki-config
|
|
subPath: local-config.yaml
|
|
volumes:
|
|
- name: loki-config
|
|
configMap:
|
|
name: loki-config
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: loki-config
|
|
data:
|
|
local-config.yaml: |
|
|
# Your Loki configuration here
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: loki
|
|
spec:
|
|
selector:
|
|
app: loki
|
|
ports:
|
|
- port: 3100
|
|
targetPort: 3100
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Event Store
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: eventstore
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: eventstore
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: eventstore
|
|
spec:
|
|
containers:
|
|
- name: eventstore
|
|
image: eventstore/eventstore:latest
|
|
env:
|
|
- name: EVENTSTORE_CLUSTER_SIZE
|
|
value: "1"
|
|
- name: EVENTSTORE_RUN_PROJECTIONS
|
|
value: "All"
|
|
- name: EVENTSTORE_START_STANDARD_PROJECTIONS
|
|
value: "True"
|
|
- name: EVENTSTORE_HTTP_PORT
|
|
value: "2113"
|
|
- name: EVENTSTORE_INSECURE
|
|
value: "True"
|
|
- name: EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP
|
|
value: "True"
|
|
ports:
|
|
- containerPort: 2113
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: eventstore
|
|
spec:
|
|
selector:
|
|
app: eventstore
|
|
ports:
|
|
- port: 2113
|
|
targetPort: 2113
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Jaeger
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: jaeger
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: jaeger
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: jaeger
|
|
spec:
|
|
containers:
|
|
- name: jaeger
|
|
image: jaegertracing/all-in-one:latest
|
|
ports:
|
|
- containerPort: 6831
|
|
protocol: UDP
|
|
- containerPort: 16686
|
|
- containerPort: 14268
|
|
- containerPort: 4317
|
|
- containerPort: 4318
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: jaeger
|
|
spec:
|
|
selector:
|
|
app: jaeger
|
|
ports:
|
|
- port: 6831
|
|
targetPort: 6831
|
|
protocol: UDP
|
|
- port: 16686
|
|
targetPort: 16686
|
|
- port: 14268
|
|
targetPort: 14268
|
|
- port: 4317
|
|
targetPort: 4317
|
|
- port: 4318
|
|
targetPort: 4318
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Zipkin
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: zipkin
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: zipkin
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: zipkin
|
|
spec:
|
|
containers:
|
|
- name: zipkin
|
|
image: openzipkin/zipkin:latest
|
|
ports:
|
|
- containerPort: 9411
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: zipkin
|
|
spec:
|
|
selector:
|
|
app: zipkin
|
|
ports:
|
|
- port: 9411
|
|
targetPort: 9411
|
|
type: ClusterIP
|
|
|
|
---
|
|
#######################################################
|
|
# OpenTelemetry Collector
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: otel-collector
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: otel-collector
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: otel-collector
|
|
spec:
|
|
containers:
|
|
- name: otel-collector
|
|
image: otel/opentelemetry-collector-contrib:latest
|
|
args: ["--config=/etc/otelcol-contrib/config.yaml"]
|
|
ports:
|
|
- containerPort: 11888
|
|
- containerPort: 8888
|
|
- containerPort: 8889
|
|
- containerPort: 13133
|
|
- containerPort: 4317
|
|
- containerPort: 4318
|
|
- containerPort: 55679
|
|
volumeMounts:
|
|
- mountPath: /etc/otelcol-contrib/config.yaml
|
|
name: otel-config
|
|
subPath: config.yaml
|
|
volumes:
|
|
- name: otel-config
|
|
configMap:
|
|
name: otel-collector-config
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: otel-collector-config
|
|
data:
|
|
config.yaml: |
|
|
# Your OpenTelemetry Collector configuration here
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: otel-collector
|
|
spec:
|
|
selector:
|
|
app: otel-collector
|
|
ports:
|
|
- port: 11888
|
|
targetPort: 11888
|
|
- port: 8888
|
|
targetPort: 8888
|
|
- port: 8889
|
|
targetPort: 8889
|
|
- port: 13133
|
|
targetPort: 13133
|
|
- port: 4317
|
|
targetPort: 4317
|
|
- port: 4318
|
|
targetPort: 4318
|
|
- port: 55679
|
|
targetPort: 55679
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Prometheus
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: prometheus
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: prometheus
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: prometheus
|
|
spec:
|
|
containers:
|
|
- name: prometheus
|
|
image: prom/prometheus:latest
|
|
args:
|
|
- "--config.file=/etc/prometheus/prometheus.yml"
|
|
- "--storage.tsdb.path=/prometheus"
|
|
- "--web.console.libraries=/usr/share/prometheus/console_libraries"
|
|
- "--web.console.templates=/usr/share/prometheus/consoles"
|
|
- "--web.enable-remote-write-receiver"
|
|
ports:
|
|
- containerPort: 9090
|
|
volumeMounts:
|
|
- mountPath: /etc/prometheus/prometheus.yml
|
|
name: prometheus-config
|
|
subPath: prometheus.yml
|
|
volumes:
|
|
- name: prometheus-config
|
|
configMap:
|
|
name: prometheus-config
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: prometheus-config
|
|
data:
|
|
prometheus.yml: |
|
|
# Your Prometheus configuration here
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: prometheus
|
|
spec:
|
|
selector:
|
|
app: prometheus
|
|
ports:
|
|
- port: 9090
|
|
targetPort: 9090
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Grafana
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: grafana
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: grafana
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: grafana
|
|
spec:
|
|
containers:
|
|
- name: grafana
|
|
image: grafana/grafana:latest
|
|
env:
|
|
- name: GF_INSTALL_PLUGINS
|
|
value: "grafana-clock-panel,grafana-simple-json-datasource"
|
|
- name: GF_SECURITY_ADMIN_USER
|
|
value: "admin"
|
|
- name: GF_SECURITY_ADMIN_PASSWORD
|
|
value: "admin"
|
|
- name: GF_FEATURE_TOGGLES_ENABLE
|
|
value: "traceqlEditor"
|
|
ports:
|
|
- containerPort: 3000
|
|
volumeMounts:
|
|
- mountPath: /etc/grafana/provisioning
|
|
name: grafana-provisioning
|
|
- mountPath: /var/lib/grafana/dashboards
|
|
name: grafana-dashboards
|
|
volumes:
|
|
- name: grafana-provisioning
|
|
configMap:
|
|
name: grafana-provisioning
|
|
- name: grafana-dashboards
|
|
configMap:
|
|
name: grafana-dashboards
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: grafana-provisioning
|
|
data:
|
|
# Your Grafana provisioning configuration here
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: grafana-dashboards
|
|
data:
|
|
# Your Grafana dashboards configuration here
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: grafana
|
|
spec:
|
|
selector:
|
|
app: grafana
|
|
ports:
|
|
- port: 3000
|
|
targetPort: 3000
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Node Exporter
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: node-exporter
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: node-exporter
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: node-exporter
|
|
spec:
|
|
containers:
|
|
- name: node-exporter
|
|
image: prom/node-exporter:latest
|
|
args:
|
|
- "--path.procfs=/host/proc"
|
|
- "--path.rootfs=/rootfs"
|
|
- "--path.sysfs=/host/sys"
|
|
ports:
|
|
- containerPort: 9100
|
|
volumeMounts:
|
|
- mountPath: /host/proc
|
|
name: proc
|
|
readOnly: true
|
|
- mountPath: /host/sys
|
|
name: sys
|
|
readOnly: true
|
|
- mountPath: /rootfs
|
|
name: rootfs
|
|
readOnly: true
|
|
volumes:
|
|
- name: proc
|
|
hostPath:
|
|
path: /proc
|
|
- name: sys
|
|
hostPath:
|
|
path: /sys
|
|
- name: rootfs
|
|
hostPath:
|
|
path: /
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: node-exporter
|
|
spec:
|
|
selector:
|
|
app: node-exporter
|
|
ports:
|
|
- port: 9100
|
|
targetPort: 9100
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Cadvisor
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: cadvisor
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: cadvisor
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: cadvisor
|
|
spec:
|
|
containers:
|
|
- name: cadvisor
|
|
image: gcr.io/cadvisor/cadvisor:latest
|
|
ports:
|
|
- containerPort: 8080
|
|
volumeMounts:
|
|
- mountPath: /rootfs
|
|
name: rootfs
|
|
readOnly: true
|
|
- mountPath: /var/run
|
|
name: var-run
|
|
readOnly: true
|
|
- mountPath: /sys
|
|
name: sys
|
|
readOnly: true
|
|
- mountPath: /var/lib/docker
|
|
name: var-lib-docker
|
|
readOnly: true
|
|
- mountPath: /dev/disk
|
|
name: dev-disk
|
|
readOnly: true
|
|
volumes:
|
|
- name: rootfs
|
|
hostPath:
|
|
path: /
|
|
- name: var-run
|
|
hostPath:
|
|
path: /var/run
|
|
- name: sys
|
|
hostPath:
|
|
path: /sys
|
|
- name: var-lib-docker
|
|
hostPath:
|
|
path: /var/lib/docker
|
|
- name: dev-disk
|
|
hostPath:
|
|
path: /dev/disk
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: cadvisor
|
|
spec:
|
|
selector:
|
|
app: cadvisor
|
|
ports:
|
|
- port: 8080
|
|
targetPort: 8080
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Mongo
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mongo
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: mongo
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: mongo
|
|
spec:
|
|
containers:
|
|
- name: mongo
|
|
image: mongo:latest
|
|
ports:
|
|
- containerPort: 27017
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: mongo
|
|
spec:
|
|
selector:
|
|
app: mongo
|
|
ports:
|
|
- port: 27017
|
|
targetPort: 27017
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Postgres
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: postgres
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: postgres
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: postgres
|
|
spec:
|
|
containers:
|
|
- name: postgres
|
|
image: postgres:latest
|
|
env:
|
|
- name: POSTGRES_USER
|
|
value: postgres
|
|
- name: POSTGRES_PASSWORD
|
|
value: postgres
|
|
ports:
|
|
- containerPort: 5432
|
|
volumeMounts:
|
|
- mountPath: /var/lib/postgresql/data
|
|
name: postgres-data
|
|
volumes:
|
|
- name: postgres-data
|
|
persistentVolumeClaim:
|
|
claimName: postgres-pvc
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: postgres-pvc
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 10Gi
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: postgres
|
|
spec:
|
|
selector:
|
|
app: postgres
|
|
ports:
|
|
- port: 5432
|
|
targetPort: 5432
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Rabbitmq
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: rabbitmq
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: rabbitmq
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: rabbitmq
|
|
spec:
|
|
containers:
|
|
- name: rabbitmq
|
|
image: rabbitmq:management
|
|
ports:
|
|
- containerPort: 5672
|
|
- containerPort: 15672
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: rabbitmq
|
|
spec:
|
|
selector:
|
|
app: rabbitmq
|
|
ports:
|
|
- port: 5672
|
|
targetPort: 5672
|
|
- port: 15672
|
|
targetPort: 15672
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# Redis
|
|
#######################################################
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: redis
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: redis
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: redis
|
|
spec:
|
|
containers:
|
|
- name: redis
|
|
image: redis
|
|
ports:
|
|
- containerPort: 6379
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1"
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: redis
|
|
spec:
|
|
selector:
|
|
app: redis
|
|
ports:
|
|
- port: 6379
|
|
targetPort: 6379
|
|
type: ClusterIP
|
|
---
|
|
#######################################################
|
|
# 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
|
|
---
|
|
#######################################################
|
|
# Ingress Controller
|
|
#######################################################
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: passenger
|
|
spec:
|
|
selector:
|
|
app: passenger
|
|
ports:
|
|
- name: http
|
|
protocol: TCP
|
|
port: 80
|
|
targetPort: 80
|
|
type: ClusterIP
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: booking-microservies
|
|
annotations:
|
|
nginx.ingress.kubernetes.io/rewrite-target: /$1
|
|
cert-manager.io/cluster-issuer: "letsencrypt-staging"
|
|
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"
|
|
nginx.ingress.kubernetes.io/client-header-buffer-size: "64k"
|
|
nginx.ingress.kubernetes.io/http2-max-field-size: "16k"
|
|
nginx.ingress.kubernetes.io/http2-max-header-size: "128k"
|
|
nginx.ingress.kubernetes.io/large-client-header-buffers: "8 64k"
|
|
spec:
|
|
ingressClassName: nginx
|
|
tls:
|
|
- hosts:
|
|
- booking-microservices.com
|
|
secretName: letsencrypt-staging
|
|
rules:
|
|
- host: booking-microservices.com
|
|
http:
|
|
paths:
|
|
- path: /identity
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: flight
|
|
port:
|
|
number: 80
|
|
- path: /identity/(.*)
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: identity
|
|
port:
|
|
number: 80
|
|
|
|
|
|
- path: /flight
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: flight
|
|
port:
|
|
number: 80
|
|
- path: /flight/(.*)
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: flight
|
|
port:
|
|
number: 80
|
|
|
|
|
|
- path: /passenger
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: passenger
|
|
port:
|
|
number: 80
|
|
- path: /passenger/(.*)
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: passenger
|
|
port:
|
|
number: 80
|
|
|
|
|
|
- path: /booking
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: booking
|
|
port:
|
|
number: 80
|
|
- path: /booking/(.*)
|
|
pathType: Prefix
|
|
backend:
|
|
service:
|
|
name: booking
|
|
port:
|
|
number: 80 |