diff --git a/.github/actions/docker-build-publish/action.yml b/.github/actions/docker-build-publish/action.yml index 771636f..46115f4 100644 --- a/.github/actions/docker-build-publish/action.yml +++ b/.github/actions/docker-build-publish/action.yml @@ -43,11 +43,11 @@ runs: if: ${{ github.ref == 'refs/heads/main' && success() }} shell: bash run: | - docker build -t ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.5.8 -f "${{ github.workspace }}/${{ inputs.dockerfile-path }}" . + docker build -t ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.5.9 -f "${{ github.workspace }}/${{ inputs.dockerfile-path }}" . - name: Publish Docker Image if: ${{ github.ref == 'refs/heads/main' && success() }} shell: bash run: | - docker push ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.5.8 + docker push ${{ inputs.registry-username }}/${{ inputs.image-name }}:v1.5.9 diff --git a/deployments/kubernetes/booking.yml b/deployments/kubernetes/booking.yml new file mode 100644 index 0000000..c29cc93 --- /dev/null +++ b/deployments/kubernetes/booking.yml @@ -0,0 +1,46 @@ +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.5.2 + 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-service +spec: + selector: + app: booking + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP \ No newline at end of file diff --git a/deployments/kubernetes/configmap.yml b/deployments/kubernetes/configmap.yml new file mode 100644 index 0000000..8df828d --- /dev/null +++ b/deployments/kubernetes/configmap.yml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: appsettings +data: + appsettings.json: |- + { + .Files.Get "settings/appsettings.docker.json" + } \ No newline at end of file diff --git a/deployments/kubernetes/flight.yml b/deployments/kubernetes/flight.yml new file mode 100644 index 0000000..71595df --- /dev/null +++ b/deployments/kubernetes/flight.yml @@ -0,0 +1,46 @@ +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.5.8 + 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-service +spec: + selector: + app: flight + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP \ No newline at end of file diff --git a/deployments/kubernetes/identity.yml b/deployments/kubernetes/identity.yml new file mode 100644 index 0000000..1df0e76 --- /dev/null +++ b/deployments/kubernetes/identity.yml @@ -0,0 +1,46 @@ +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.5.8 + name: identity + ports: + - containerPort: 80 + env: + - name: "ASPNETCORE_ENVIRONMENT" + value: "docker" + - name: ASPNETCORE_URLS + value: http://+:80 + volumeMounts: + - name: appsettings-volume + mountPath: /app/Settings + volumes: + - name: appsettings-volume + configMap: + name: appsettings +--- +apiVersion: v1 +kind: Service +metadata: + name: identity-service +spec: + selector: + app: identity + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP \ No newline at end of file diff --git a/deployments/kubernetes/infrastructure.yml b/deployments/kubernetes/infrastructure.yml new file mode 100644 index 0000000..580708f --- /dev/null +++ b/deployments/kubernetes/infrastructure.yml @@ -0,0 +1,536 @@ +####################################################### +# 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: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: elasticsearch + name: elasticsearch +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: elasticsearch + strategy: + type: Recreate + template: + metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: elasticsearch + spec: + containers: + - env: + - name: ES_JAVA_OPTS + value: -Xms512m -Xmx512m + - name: discovery.type + value: single-node + - name: xpack.monitoring.enabled + value: "true" + - name: xpack.watcher.enabled + value: "false" + image: elasticsearch:7.17.9 + name: elasticsearch + ports: + - containerPort: 9200 + resources: {} + volumeMounts: + - mountPath: /usr/share/elasticsearch/data + name: elasticsearch-data + restartPolicy: Always + volumes: + - name: elasticsearch-data + persistentVolumeClaim: + claimName: elasticsearch-data +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: elasticsearch + name: elasticsearch +spec: + ports: + - name: "9200" + port: 9200 + targetPort: 9200 + selector: + io.kompose.service: elasticsearch +status: + loadBalancer: {} +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + creationTimestamp: null + labels: + io.kompose.service: elasticsearch-data + name: elasticsearch-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi +status: {} +--- +####################################################### +# Kibana +####################################################### +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: kibana + name: kibana +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: kibana + strategy: {} + template: + metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: kibana + spec: + containers: + - env: + - name: ELASTICSEARCH_URL + value: http://localhost:9200 + image: kibana:7.17.9 + name: kibana + ports: + - containerPort: 5601 + resources: {} + restartPolicy: Always +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: kibana + name: kibana +spec: + ports: + - name: "5601" + port: 5601 + targetPort: 5601 + selector: + io.kompose.service: kibana +status: + loadBalancer: {} +--- +####################################################### +# Event Store +####################################################### +apiVersion: v1 +kind: Pod +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: eventstore + name: eventstore +spec: + containers: + - env: + - name: EVENTSTORE_CLUSTER_SIZE + value: "1" + - name: EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP + value: "true" + - name: EVENTSTORE_ENABLE_EXTERNAL_TCP + value: "true" + - name: EVENTSTORE_EXT_HTTP_PORT + value: "2113" + - name: EVENTSTORE_EXT_TCP_PORT + value: "1113" + - name: EVENTSTORE_INSECURE + value: "true" + - name: EVENTSTORE_RUN_PROJECTIONS + value: All + - name: EVENTSTORE_START_STANDARD_PROJECTIONS + value: "true" + image: eventstore/eventstore:21.2.0-buster-slim + name: eventstore + ports: + - containerPort: 1113 + - containerPort: 2113 + resources: {} + restartPolicy: OnFailure +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: eventstore + name: eventstore +spec: + ports: + - name: "1113" + port: 1113 + targetPort: 1113 + - name: "2113" + port: 2113 + targetPort: 2113 + selector: + io.kompose.service: eventstore +status: + loadBalancer: {} +--- +# ####################################################### +# # Jaeger +# ####################################################### +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: jaeger + name: jaeger +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: jaeger + strategy: {} + template: + metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: jaeger + spec: + containers: + - image: jaegertracing/all-in-one + name: jaeger + ports: + - containerPort: 5775 + protocol: UDP + - containerPort: 5778 + - containerPort: 6831 + protocol: UDP + - containerPort: 6832 + protocol: UDP + - containerPort: 9411 + - containerPort: 14268 + - containerPort: 16686 + resources: {} + restartPolicy: Always +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: jaeger + name: jaeger +spec: + ports: + - name: "5775" + port: 5775 + protocol: UDP + targetPort: 5775 + - name: "5778" + port: 5778 + targetPort: 5778 + - name: "6831" + port: 6831 + protocol: UDP + targetPort: 6831 + - name: "6832" + port: 6832 + protocol: UDP + targetPort: 6832 + - name: "9411" + port: 9411 + targetPort: 9411 + - name: "14268" + port: 14268 + targetPort: 14268 + - name: "16686" + port: 16686 + targetPort: 16686 + selector: + io.kompose.service: jaeger +status: + loadBalancer: {} +--- +# ####################################################### +# # Mongo +# ####################################################### +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: mongo + name: mongo +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: mongo + strategy: {} + template: + metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: mongo + spec: + containers: + - image: mongo:5 + name: mongo + ports: + - containerPort: 27017 + resources: {} + restartPolicy: Always +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: mongo + name: mongo +spec: + ports: + - name: "27017" + port: 27017 + targetPort: 27017 + selector: + io.kompose.service: mongo +status: + loadBalancer: {} +--- +# ####################################################### +# # Postgres +# ####################################################### +apiVersion: v1 +kind: Pod +metadata: + labels: + app: postgres + name: postgres +spec: + containers: + - env: + - name: POSTGRES_PASSWORD + value: postgres + - name: POSTGRES_USER + value: postgres + image: postgres:latest + name: postgres + ports: + - containerPort: 5432 + restartPolicy: OnFailure +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: postgres + name: postgres +spec: + ports: + - name: "5432" + port: 5432 + targetPort: 5432 + selector: + app: postgres +--- +# ####################################################### +# # Rabbitmq +# ####################################################### +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: rabbitmq + name: rabbitmq +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: rabbitmq + strategy: {} + template: + metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: rabbitmq + spec: + containers: + - image: rabbitmq:3-management + name: rabbitmq + ports: + - containerPort: 5672 + - containerPort: 15672 + resources: {} + restartPolicy: Always +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: rabbitmq + name: rabbitmq +spec: + ports: + - name: "5672" + port: 5672 + targetPort: 5672 + - name: "15672" + port: 15672 + targetPort: 15672 + selector: + io.kompose.service: rabbitmq +status: + loadBalancer: {} +--- +# ####################################################### +# # Redis +# ####################################################### +apiVersion: apps/v1 +kind: Deployment +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: redis + name: redis +spec: + replicas: 1 + selector: + matchLabels: + io.kompose.service: redis + strategy: {} + template: + metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.network/booking: "true" + io.kompose.service: redis + spec: + containers: + - image: redis + name: redis + ports: + - containerPort: 6379 + resources: {} + restartPolicy: Always +status: {} +--- +apiVersion: v1 +kind: Service +metadata: + annotations: + kompose.cmd: C:\ProgramData\chocolatey\lib\kubernetes-kompose\tools\kompose.exe -f infrastracture.yaml convert + kompose.version: 1.28.0 (c4137012e) + creationTimestamp: null + labels: + io.kompose.service: redis + name: redis +spec: + ports: + - name: "6379" + port: 6379 + targetPort: 6379 + selector: + io.kompose.service: redis +status: + loadBalancer: {} diff --git a/deployments/kubernetes/ingress.yml b/deployments/kubernetes/ingress.yml new file mode 100644 index 0000000..b451634 --- /dev/null +++ b/deployments/kubernetes/ingress.yml @@ -0,0 +1,56 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: booking-microservices + namespace: default + annotations: + nginx.ingress.kubernetes.io/rewrite-target: / + 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: + - myidentityserver.com + - booking-microservices.com + secretName: nginx-tls-secret + rules: + - host: booking-microservices.com + http: + paths: + - path: /flight + pathType: Exact + backend: + service: + name: flight-service + port: + name: http + - path: /passenger + pathType: Exact + backend: + service: + name: passenger-service + port: + name: http + - path: /booking + pathType: Exact + backend: + service: + name: booking-service + port: + name: http + - host: myidentityserver.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: identity-service + port: + name: http + \ No newline at end of file diff --git a/deployments/kubernetes/passenger.yml b/deployments/kubernetes/passenger.yml new file mode 100644 index 0000000..99cac6b --- /dev/null +++ b/deployments/kubernetes/passenger.yml @@ -0,0 +1,46 @@ +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.5.2 + 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-service +spec: + selector: + app: passenger + ports: + - name: http + port: 80 + targetPort: 80 + type: ClusterIP \ No newline at end of file diff --git a/src/Services/Identity/cert/localhost.pfx b/src/Services/Identity/cert/localhost.pfx deleted file mode 100644 index f838806..0000000 Binary files a/src/Services/Identity/cert/localhost.pfx and /dev/null differ diff --git a/src/Services/Identity/src/Identity.Api/appsettings.docker.json b/src/Services/Identity/src/Identity.Api/appsettings.docker.json index 1b0b22b..15ef267 100644 --- a/src/Services/Identity/src/Identity.Api/appsettings.docker.json +++ b/src/Services/Identity/src/Identity.Api/appsettings.docker.json @@ -32,14 +32,6 @@ "Dsn": "", "MinimumBreadcrumbLevel": "information", "MinimumEventLevel":"error" - }, - "Kestrel": { - "Certificates": { - "Default": { - "Path": "./localhost.pfx", - "Password": "000000" - } - } } }, "AllowedHosts": "*"