From 298a255f4a5d7c7873c559e8c85d137529284b8a Mon Sep 17 00:00:00 2001 From: Giovanni Gargiulo Date: Thu, 7 Sep 2023 09:12:51 +0100 Subject: [PATCH] chore: added deploy folder and charts for ledger sync, deploy.sh and build... script. --- build-ledger-sync-x86_64.sh | 19 +++++ deploy.sh | 7 ++ deploy/cf-ledger-sync/.helmignore | 23 ++++++ deploy/cf-ledger-sync/Chart.yaml | 6 ++ deploy/cf-ledger-sync/templates/_helpers.tpl | 62 ++++++++++++++ .../cf-ledger-sync/templates/deployment.yaml | 80 +++++++++++++++++++ deploy/cf-ledger-sync/templates/ingress.yaml | 29 +++++++ .../templates/service-monitor.yaml | 20 +++++ deploy/cf-ledger-sync/templates/service.yaml | 15 ++++ deploy/cf-ledger-sync/values-preprod.yaml | 1 + deploy/cf-ledger-sync/values.yaml | 32 ++++++++ 11 files changed, 294 insertions(+) create mode 100755 build-ledger-sync-x86_64.sh create mode 100755 deploy.sh create mode 100644 deploy/cf-ledger-sync/.helmignore create mode 100644 deploy/cf-ledger-sync/Chart.yaml create mode 100644 deploy/cf-ledger-sync/templates/_helpers.tpl create mode 100644 deploy/cf-ledger-sync/templates/deployment.yaml create mode 100644 deploy/cf-ledger-sync/templates/ingress.yaml create mode 100644 deploy/cf-ledger-sync/templates/service-monitor.yaml create mode 100644 deploy/cf-ledger-sync/templates/service.yaml create mode 100644 deploy/cf-ledger-sync/values-preprod.yaml create mode 100644 deploy/cf-ledger-sync/values.yaml diff --git a/build-ledger-sync-x86_64.sh b/build-ledger-sync-x86_64.sh new file mode 100755 index 00000000..027af353 --- /dev/null +++ b/build-ledger-sync-x86_64.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +APPLICATION_NAME=cf-ledger-sync + +VERSION=$(git describe --tags --always) + +PRIVATE_DOCKER_REGISTRY_URL="pro.registry.gitlab.metadata.dev.cf-deployments.org/base-infrastructure/docker-registry" + +DOCKER_IMAGE="${PRIVATE_DOCKER_REGISTRY_URL}/${APPLICATION_NAME}:${VERSION}" + +./gradlew application:bootJar -x test && \ + docker buildx use amd64 && \ + docker buildx build --platform linux/amd64 --load \ + --no-cache \ + --progress plain \ + -t "${DOCKER_IMAGE}" \ + . + +docker push "${DOCKER_IMAGE}" diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 00000000..08482c86 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +set -x + +helm upgrade --install cf-ledger-sync deploy/cf-ledger-sync \ + -n cf-explorer \ + -f deploy/cf-ledger-sync/values-preprod.yaml diff --git a/deploy/cf-ledger-sync/.helmignore b/deploy/cf-ledger-sync/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deploy/cf-ledger-sync/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/cf-ledger-sync/Chart.yaml b/deploy/cf-ledger-sync/Chart.yaml new file mode 100644 index 00000000..8a3d4a56 --- /dev/null +++ b/deploy/cf-ledger-sync/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +name: cf-ledger-sync +description: A Helm chart for Kubernetes +type: application +version: 0.0.1 +appVersion: 0.0.1 diff --git a/deploy/cf-ledger-sync/templates/_helpers.tpl b/deploy/cf-ledger-sync/templates/_helpers.tpl new file mode 100644 index 00000000..07ae85cb --- /dev/null +++ b/deploy/cf-ledger-sync/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "cf-ledger-sync.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "cf-ledger-sync.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "cf-ledger-sync.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "cf-ledger-sync.labels" -}} +helm.sh/chart: {{ include "cf-ledger-sync.chart" . }} +{{ include "cf-ledger-sync.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "cf-ledger-sync.selectorLabels" -}} +app.kubernetes.io/name: {{ include "cf-ledger-sync.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "cf-ledger-sync.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "cf-ledger-sync.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/cf-ledger-sync/templates/deployment.yaml b/deploy/cf-ledger-sync/templates/deployment.yaml new file mode 100644 index 00000000..7ab2134a --- /dev/null +++ b/deploy/cf-ledger-sync/templates/deployment.yaml @@ -0,0 +1,80 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "cf-ledger-sync.fullname" . }} + labels: + {{- include "cf-ledger-sync.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "cf-ledger-sync.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "cf-ledger-sync.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: NETWORK + value: "preprod" + - name: DB_DIALECT + value: "org.hibernate.dialect.PostgreSQLDialect" + - name: STORE_CARDANO_HOST + value: "preprod-node.world.dev.cardano.org" + - name: STORE_CARDANO_PORT + value: "30000" + - name: STORE_CARDANO_PROTOCOL-MAGIC + value: "1" + + ## Postgres + - name: POSTGRES_HOST + valueFrom: + secretKeyRef: + name: postgres-secrets + key: POSTGRES_HOST + - name: POSTGRES_PORT + valueFrom: + secretKeyRef: + name: postgres-secrets + key: POSTGRES_PORT + - name: POSTGRES_DB + valueFrom: + secretKeyRef: + name: postgres-secrets + key: POSTGRES_DB + - name: SCHEMA + value: {{ .Values.dbSchema | default "public" }} + - name: SPRING_DATASOURCE_URL + value: jdbc:postgresql://$(POSTGRES_HOST):$(POSTGRES_PORT)/$(POSTGRES_DB)?currentSchema=$(SCHEMA) + - name: SPRING_DATASOURCE_USERNAME + valueFrom: + secretKeyRef: + name: postgres-secrets + key: POSTGRES_USER + - name: SPRING_DATASOURCE_PASSWORD + valueFrom: + secretKeyRef: + name: postgres-secrets + key: POSTGRES_PASSWORD + ports: + - name: http + containerPort: {{ .Values.service.port }} + protocol: TCP +# livenessProbe: +# httpGet: +# path: / +# port: http +# readinessProbe: +# httpGet: +# path: / +# port: http + resources: + {{- toYaml .Values.resources | nindent 12 }} diff --git a/deploy/cf-ledger-sync/templates/ingress.yaml b/deploy/cf-ledger-sync/templates/ingress.yaml new file mode 100644 index 00000000..641e1581 --- /dev/null +++ b/deploy/cf-ledger-sync/templates/ingress.yaml @@ -0,0 +1,29 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "cf-ledger-sync.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "cf-ledger-sync.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + rules: + - host: "api.{{ .Values.domain }}" + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + tls: + - hosts: + - "api.{{ .Values.domain }}" +{{ end }} diff --git a/deploy/cf-ledger-sync/templates/service-monitor.yaml b/deploy/cf-ledger-sync/templates/service-monitor.yaml new file mode 100644 index 00000000..eacb1cee --- /dev/null +++ b/deploy/cf-ledger-sync/templates/service-monitor.yaml @@ -0,0 +1,20 @@ +{{ if .Values.monitoringEnabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "cf-ledger-sync.fullname" . }} + labels: + release: prometheus-stack + {{- include "cf-ledger-sync.labels" . | nindent 4 }} +spec: + endpoints: + - path: /actuator/prometheus + port: http + namespaceSelector: + matchNames: + - {{ $.Release.Namespace }} + selector: + matchLabels: + {{- include "cf-ledger-sync.labels" . | nindent 6 }} +{{ end }} \ No newline at end of file diff --git a/deploy/cf-ledger-sync/templates/service.yaml b/deploy/cf-ledger-sync/templates/service.yaml new file mode 100644 index 00000000..1a1c920e --- /dev/null +++ b/deploy/cf-ledger-sync/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "cf-ledger-sync.fullname" . }} + labels: + {{- include "cf-ledger-sync.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "cf-ledger-sync.selectorLabels" . | nindent 4 }} diff --git a/deploy/cf-ledger-sync/values-preprod.yaml b/deploy/cf-ledger-sync/values-preprod.yaml new file mode 100644 index 00000000..26ff28e1 --- /dev/null +++ b/deploy/cf-ledger-sync/values-preprod.yaml @@ -0,0 +1 @@ +domain: dev-sranjan.cf-explorer-preprod.eu-west-1.metadata.dev.cf-deployments.org diff --git a/deploy/cf-ledger-sync/values.yaml b/deploy/cf-ledger-sync/values.yaml new file mode 100644 index 00000000..37b94352 --- /dev/null +++ b/deploy/cf-ledger-sync/values.yaml @@ -0,0 +1,32 @@ +replicaCount: 1 + +image: + repository: pro.registry.gitlab.metadata.dev.cf-deployments.org/base-infrastructure/docker-registry/cf-ledger-sync + tag: "713c6c2" + pullPolicy: Always + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +service: + type: ClusterIP + port: 8080 + +ingress: + enabled: false + +resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +nodeSelector: {} + +monitoringEnabled: true + +diagnosticMode: + enabled: false