From 63dcafbd943d9eafd6c7159649c4d08647aa52c4 Mon Sep 17 00:00:00 2001 From: zulfikar4568 Date: Thu, 10 Aug 2023 13:25:50 +0700 Subject: [PATCH 1/4] perf: metrics-server helm --- helm/charts/vechr-iiot/Chart.yaml | 7 +- .../charts/metrics-server-3.11.0.tgz | Bin 0 -> 8462 bytes .../templates/metrics-server/components.yaml | 200 ------------------ helm/charts/vechr-iiot/values.yaml | 53 +++-- 4 files changed, 46 insertions(+), 214 deletions(-) create mode 100644 helm/charts/vechr-iiot/charts/metrics-server-3.11.0.tgz delete mode 100644 helm/charts/vechr-iiot/templates/metrics-server/components.yaml diff --git a/helm/charts/vechr-iiot/Chart.yaml b/helm/charts/vechr-iiot/Chart.yaml index 23699d1..083ff71 100644 --- a/helm/charts/vechr-iiot/Chart.yaml +++ b/helm/charts/vechr-iiot/Chart.yaml @@ -31,4 +31,9 @@ dependencies: - name: postgresql version: 12.1.6 repository: https://charts.bitnami.com/bitnami - condition: postgresql.enabled \ No newline at end of file + condition: postgresql.enabled + + - name: metrics-server + version: 3.11.0 + repository: https://kubernetes-sigs.github.io/metrics-server/ + condition: metrics-server.enabled \ No newline at end of file diff --git a/helm/charts/vechr-iiot/charts/metrics-server-3.11.0.tgz b/helm/charts/vechr-iiot/charts/metrics-server-3.11.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8860457ec1efe286aefd1237d6a403256c933800 GIT binary patch literal 8462 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 literal 0 HcmV?d00001 diff --git a/helm/charts/vechr-iiot/templates/metrics-server/components.yaml b/helm/charts/vechr-iiot/templates/metrics-server/components.yaml deleted file mode 100644 index 247ad5c..0000000 --- a/helm/charts/vechr-iiot/templates/metrics-server/components.yaml +++ /dev/null @@ -1,200 +0,0 @@ -{{if .Values.metricsServer.enabled}} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - k8s-app: metrics-server - name: metrics-server - namespace: kube-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - k8s-app: metrics-server - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - name: system:aggregated-metrics-reader -rules: -- apiGroups: - - metrics.k8s.io - resources: - - pods - - nodes - verbs: - - get - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - k8s-app: metrics-server - name: system:metrics-server -rules: -- apiGroups: - - "" - resources: - - nodes/metrics - verbs: - - get -- apiGroups: - - "" - resources: - - pods - - nodes - verbs: - - get - - list - - watch ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - k8s-app: metrics-server - name: metrics-server-auth-reader - namespace: kube-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: extension-apiserver-authentication-reader -subjects: -- kind: ServiceAccount - name: metrics-server - namespace: kube-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - k8s-app: metrics-server - name: metrics-server:system:auth-delegator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:auth-delegator -subjects: -- kind: ServiceAccount - name: metrics-server - namespace: kube-system ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - k8s-app: metrics-server - name: system:metrics-server -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:metrics-server -subjects: -- kind: ServiceAccount - name: metrics-server - namespace: kube-system ---- -apiVersion: v1 -kind: Service -metadata: - labels: - k8s-app: metrics-server - name: metrics-server - namespace: kube-system -spec: - ports: - - name: https - port: 443 - protocol: TCP - targetPort: https - selector: - k8s-app: metrics-server ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - k8s-app: metrics-server - name: metrics-server - namespace: kube-system -spec: - selector: - matchLabels: - k8s-app: metrics-server - strategy: - rollingUpdate: - maxUnavailable: 0 - template: - metadata: - labels: - k8s-app: metrics-server - spec: - containers: - - args: - - --cert-dir=/tmp - - --secure-port=4443 - - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - - --kubelet-use-node-status-port - - --metric-resolution=15s - - --kubelet-insecure-tls - image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2 - imagePullPolicy: IfNotPresent - livenessProbe: - failureThreshold: 3 - httpGet: - path: /livez - port: https - scheme: HTTPS - periodSeconds: 10 - name: metrics-server - ports: - - containerPort: 4443 - name: https - protocol: TCP - readinessProbe: - failureThreshold: 3 - httpGet: - path: /readyz - port: https - scheme: HTTPS - initialDelaySeconds: 20 - periodSeconds: 10 - resources: - requests: - cpu: 100m - memory: 200Mi - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - runAsNonRoot: true - runAsUser: 1000 - volumeMounts: - - mountPath: /tmp - name: tmp-dir - nodeSelector: - kubernetes.io/os: linux - priorityClassName: system-cluster-critical - serviceAccountName: metrics-server - volumes: - - emptyDir: {} - name: tmp-dir ---- -apiVersion: apiregistration.k8s.io/v1 -kind: APIService -metadata: - labels: - k8s-app: metrics-server - name: v1beta1.metrics.k8s.io -spec: - group: metrics.k8s.io - groupPriorityMinimum: 100 - insecureSkipTLSVerify: true - service: - name: metrics-server - namespace: kube-system - version: v1beta1 - versionPriority: 100 -{{end}} \ No newline at end of file diff --git a/helm/charts/vechr-iiot/values.yaml b/helm/charts/vechr-iiot/values.yaml index 589707a..d464b07 100644 --- a/helm/charts/vechr-iiot/values.yaml +++ b/helm/charts/vechr-iiot/values.yaml @@ -1,11 +1,26 @@ namespaceOverride: "" +######################################################## Config for CERT MANAGER ########################################################### +certmanager: + # Will Override TLS Ingresses in above configuration + ingressTLS: + enabled: false + issuer: + name: letsencrypt-vechr + email: admin@vechr.com + name: nginx-vechr-cert-ingress + hosts: + - app.vechr.com + ########################################################### Config for Ingress ############################################################ ingress: name: vechr-ingress enabled: true ingressClassName: nginx - # Will used this TLS if we not enabled cert manager ingress TLS, but you need enabled tls.enabled: true + # Will used this TLS if we not enabled cert manager ingress TLS, but you need enabled `ingress.tls.enabled: true` + # Usually used this if you want to use your self-signed certificate + # But if you want to running in cloud just disable this TLS + # tls: enabled: true # enable for tls secretName: nginx-vechr-cert-dev # if you using development @@ -447,20 +462,24 @@ nginx: enabled: true ###################################################### Config for Metrics Server ########################################################### -metricsServer: +metrics-server: enabled: true + args: + - "--kubelet-insecure-tls" -######################################################## Config for CERT MANAGER ########################################################### -certmanager: - # Will Override TLS Ingresses in above configuration - ingressTLS: + metrics: + enabled: true + + # Make sure you install Prometheus CRDs first + # Or you install https://artifacthub.io/packages/helm/vechr/vechr-monitoring this will install prometheus CRDs + # + serviceMonitor: enabled: false - issuer: - name: letsencrypt-vechr - email: admin@vechr.com - name: nginx-vechr-cert-ingress - hosts: - - app.vechr.com + additionalLabels: {} + interval: 1m + scrapeTimeout: 10s + metricRelabelings: [] + relabelings: [] ######################################################## Config for GKE ########################################################### gke: @@ -471,6 +490,8 @@ gke: # Your address static ip staticIP: vechr-iiot-asia-southeast2-prod-ingress-ip + # You need to assign load balancer IP, please check your Load balancer IP after you provisioning the GKE instance + # Note: It might be need some cost to enabled it nats: loadBalancerIP: "34.101.60.90" @@ -495,7 +516,10 @@ serviceExternal: ################################################## Config for Postgresql (Bitnami) ######################################################### postgresql: + # If you enable, then all service will pointing to internal postgresql + # But if you disable then all service will pointing to service external enabled: true + auth: postgresPassword: "vechr123" username: "vechrUser" @@ -506,9 +530,12 @@ postgresql: ################################################## Config for InfluxDB ######################################################### influx: + # If you enable, then all service will pointing to internal influxdb + # But if you disable then all service will pointing to service external + enabled: true + name: influxdb replicas: 2 - enabled: true deployment: image: influxdb tag: 2.1.0-alpine From 578bfa2ee6c00c2f584665030ff7be22c998483d Mon Sep 17 00:00:00 2001 From: zulfikar4568 Date: Thu, 10 Aug 2023 23:22:01 +0700 Subject: [PATCH 2/4] fix: typo ingress --- helm/charts/vechr-iiot/templates/cert-manager/issuer.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helm/charts/vechr-iiot/templates/cert-manager/issuer.yaml b/helm/charts/vechr-iiot/templates/cert-manager/issuer.yaml index 860fe55..bf1f758 100644 --- a/helm/charts/vechr-iiot/templates/cert-manager/issuer.yaml +++ b/helm/charts/vechr-iiot/templates/cert-manager/issuer.yaml @@ -19,5 +19,5 @@ spec: solvers: - http01: ingress: - name: {{.Values.ingresses.name}} + name: {{.Values.ingress.name}} {{end}} \ No newline at end of file From c0060df13c0e829b704d07e868565ff4df6fa395 Mon Sep 17 00:00:00 2001 From: zulfikar4568 Date: Fri, 11 Aug 2023 16:27:25 +0700 Subject: [PATCH 3/4] feat: pod monitor --- .../templates/microservice/deployment.yaml | 48 +++++++++++++++++++ .../templates/microservice/pod-monitor.yaml | 34 +++++++++++++ helm/charts/vechr-iiot/values.yaml | 24 +++++++++- 3 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 helm/charts/vechr-iiot/templates/microservice/pod-monitor.yaml diff --git a/helm/charts/vechr-iiot/templates/microservice/deployment.yaml b/helm/charts/vechr-iiot/templates/microservice/deployment.yaml index e22bdbf..80749e9 100644 --- a/helm/charts/vechr-iiot/templates/microservice/deployment.yaml +++ b/helm/charts/vechr-iiot/templates/microservice/deployment.yaml @@ -14,6 +14,14 @@ {{$postgrePort := .Values.postgresql.containerPorts.postgresql}} {{/* >>>>>>>> This is variable for PostgreSQL <<<<<<<<< */}} +{{/* >>>>>>>> This is variable for Monitoring <<<<<<<<< */}} +{{$isMonitoringEnabled := .Values.monitoring.enabled}} +{{$lokiHost := .Values.monitoring.loki.host}} +{{$lokiUsername := .Values.monitoring.loki.username}} +{{$lokiPassword := .Values.monitoring.loki.password}} +{{$otlpHost := .Values.monitoring.otlp.host}} +{{/* >>>>>>>> This is variable for Monitoring <<<<<<<<< */}} + {{$secretNameTLS := .Values.natsSelfSigned.secretName}} {{range $i, $value := .Values.microservices | default dict}} {{if $value.enabled}} @@ -56,10 +64,50 @@ spec: - name: http containerPort: {{$value.externalPort}} protocol: TCP + - name: metrics + containerPort: 8081 + protocol: TCP + livenessProbe: + httpGet: + path: /health + port: {{$value.externalPort}} + initialDelaySeconds: 60 + periodSeconds: 20 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 30 + readinessProbe: + httpGet: + path: /health + port: {{$value.externalPort}} + initialDelaySeconds: 60 + periodSeconds: 20 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 30 + startupProbe: + httpGet: + path: /health + port: {{$value.externalPort}} + initialDelaySeconds: 60 + periodSeconds: 20 + timeoutSeconds: 10 + successThreshold: 1 + failureThreshold: 30 {{ end }} imagePullPolicy: {{$value.imagePullPolicy | default "Always"}} {{ if $value.env}} env: + {{ if $isMonitoringEnabled }} + - name: LOKI_HOST + value: {{ $lokiHost | default ""}} + - name: LOKI_USERNAME + value: {{ $lokiUsername | default ""}} + - name: LOKI_PASSWORD + value: {{ $lokiPassword | default ""}} + - name: OTLP_HTTP_URL + value: {{ $otlpHost | default ""}} + {{ end }} - name: NATS_CA value: "/certificate/ca.crt" - name: NATS_KEY diff --git a/helm/charts/vechr-iiot/templates/microservice/pod-monitor.yaml b/helm/charts/vechr-iiot/templates/microservice/pod-monitor.yaml new file mode 100644 index 0000000..5bd73ed --- /dev/null +++ b/helm/charts/vechr-iiot/templates/microservice/pod-monitor.yaml @@ -0,0 +1,34 @@ +{{ if .Values.monitoring.enabled }} +{{$namespace := include "vechr.namespace" .}} +--- +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: vechr-microservice-pod-monitor + labels: + app.kubernetes.io/component: vechr-microservice + app.kubernetes.io/instance: vechr-microservice-pod-monitor + app.kubernetes.io/name: microservice + app.kubernetes.io/part-of: vechr-iiot + namespace: {{ .Values.monitoring.podMonitor.namespace | default $namespace }} +spec: + selector: + matchLabels: + app.kubernetes.io/component: vechr-microservice + app.kubernetes.io/name: microservice + app.kubernetes.io/part-of: vechr-iiot + {{ if .Values.monitoring.jobLabel }} + jobLabel: {{ .Values.monitoring.jobLabel }} + {{ end }} + {{ if .Values.monitoring.podMonitor.podTargetLabels }} + podTargetLabels: + {{ toYaml .Values.monitoring.podMonitor.podTargetLabels | default list }} + {{ end }} + namespaceSelector: + matchNames: + - {{ include "vechr.namespace" . }} + podMetricsEndpoints: + - interval: 10s + port: metrics + +{{ end }} \ No newline at end of file diff --git a/helm/charts/vechr-iiot/values.yaml b/helm/charts/vechr-iiot/values.yaml index d464b07..5f3b613 100644 --- a/helm/charts/vechr-iiot/values.yaml +++ b/helm/charts/vechr-iiot/values.yaml @@ -92,6 +92,28 @@ ingress: path: / port: 80 +############################################################ Config for Monitoring ########################################################## +# Before you enabled the monitoring, you need to install vechr monitoring +# helm install vechr-monitoring vechr/vechr-monitoring -n monitoring --create-namespace +# or visit this artifacthub https://artifacthub.io/packages/helm/vechr/vechr-monitoring +# +monitoring: + enabled: true + + loki: + host: http://loki-service.monitoring.svc.cluster.local:3100 + username: + password: + + otlp: + host: http://tempo-service.monitoring.svc.cluster.local:4318/v1/traces + + podMonitor: + # Namespace of your monitoring system + namespace: monitoring + # Job Label + jobLabel: "" + podTargetLabels: [] ############################################################ Config for Frontend ############################################################ frontend: name: web-app @@ -493,7 +515,7 @@ gke: # You need to assign load balancer IP, please check your Load balancer IP after you provisioning the GKE instance # Note: It might be need some cost to enabled it nats: - loadBalancerIP: "34.101.60.90" + loadBalancerIP: "34.101.112.48" ##################################################### Config for Service External ######################################################### serviceExternal: From 213bd4ab63fe1ad42b340761a850c229f33d47f3 Mon Sep 17 00:00:00 2001 From: zulfikar4568 Date: Fri, 28 Jun 2024 18:59:05 +0700 Subject: [PATCH 4/4] fix: update cert dummy expired --- helm/charts/vechr-iiot/values.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/helm/charts/vechr-iiot/values.yaml b/helm/charts/vechr-iiot/values.yaml index 5f3b613..f3b8acb 100644 --- a/helm/charts/vechr-iiot/values.yaml +++ b/helm/charts/vechr-iiot/values.yaml @@ -27,8 +27,8 @@ ingress: hosts: - app.vechr.com ca: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVIekNDQXdlZ0F3SUJBZ0lVWWZsYWh1RFkrTXhSVndVb3NIU2hORzNsM3M4d0RRWUpLb1pJaHZjTkFRRUwKQlFBd2daNHhDekFKQmdOVkJBWVRBa2xFTVJNd0VRWURWUVFJREFwS1lYZGhJRUpoY21GME1ROHdEUVlEVlFRSApEQVpEYVcxaGFHa3hFVEFQQmdOVkJBb01DRlpsWTJoeUlFTkJNUjR3SEFZRFZRUUxEQlZEWlhKMGFXWnBZMkYwClpTQkJkWFJvYjNKcGRIa3hGakFVQmdOVkJBTU1EV0Z3Y0M1MlpXTm9jaTVqYjIweEhqQWNCZ2txaGtpRzl3MEIKQ1FFV0QyRmtiV2x1UUhabFkyaHlMbU52YlRBZUZ3MHlNakV5TVRFeE56SXdNelZhRncweU56RXlNVEF4TnpJdwpNelZhTUlHZU1Rc3dDUVlEVlFRR0V3SkpSREVUTUJFR0ExVUVDQXdLU21GM1lTQkNZWEpoZERFUE1BMEdBMVVFCkJ3d0dRMmx0WVdocE1SRXdEd1lEVlFRS0RBaFdaV05vY2lCRFFURWVNQndHQTFVRUN3d1ZRMlZ5ZEdsbWFXTmgKZEdVZ1FYVjBhRzl5YVhSNU1SWXdGQVlEVlFRRERBMWhjSEF1ZG1WamFISXVZMjl0TVI0d0hBWUpLb1pJaHZjTgpBUWtCRmc5aFpHMXBia0IyWldOb2NpNWpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURIZjJlSkp4bG03b1hqaUNKZFdvT3dydlRGQkJtRHd5RUgyQlFlZExHck1GRThTZEFkT2EwcHk0UCsKYnZlTUxMWHF4ZDMvTFN3Y3FkcU1QZHNUSytYdWJacjJEeGlWa2FJVzlTMEw4aHlPekNaR0s4eTZFRVVRVDBPYwo5YkRsTHUyaStFZHNYUVZrWVlndjJnaVE3WjNTNTNxSHN4S3o0ZjFIRjl2N2ZsZDZYVXVFTm5Eak9relRvSTRFCmRSTUtId3FxM1lJOUJXdUY2VVQ1N1NqdFFMNGhBWWhER3F2VHRHUE1DWm1HZ2V6OS9ieFU0dVk0d053bm1tRysKdjFDNkJSRnFaandEOFlzbmRRd2ZkV0RKTVJ0dFRueDkyUGpSVkxBWThCd3Vuams4MXByR2JlUW5kNjJEMldPSwpFbGtlUG4zc2xCSlFKc1RzcVFnV3hDY0M0RE1wQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJUUjJKN1Q1d21nCnhVRmdMSmZ3V1BndldzQ1BQREFmQmdOVkhTTUVHREFXZ0JUUjJKN1Q1d21neFVGZ0xKZndXUGd2V3NDUFBEQVAKQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJzUENTcTFlODdUbERhRGJzaApvbDJJY2s2c05tOWwxL1NMcmxWdUxsVU1NcmlQL3YxZmorYTAvV3MyS2ZXaXYzWFJtbGg2aHptNFFSdmN2a3N0CmpNb1A2NitzWU1EZ2kyUUZWamQ4ZzZuZkpiMXkzL2o4dFVLZFc1N3g2QTVwNlpNY3FubWFKWElSWjJ2VUlNMmoKdk5Qa0s3OWFxMUJJSEZBeVVLMksvenlkUjBvY21GL2F5dE41K2xnM0FtWXhtWHE3RGZRU0Z5L3ZOSHZZU3dCaQpxV3U5c0VFQUk1aG5yc0Q2SDFsWnczVFBLd2dxK0JMM0RIS0pLbmM5clpkc3FMMHBSODFEaFo3U2E1R2p2TGRPCmtUeWdyTmpYSU5QZ3RUQzFpTURnUjFxU3hlMXBscTllVWZpZU4yZ0pDL2R1VDZSMU1sc244Sm1YaHVFQXJ6QzcKbndjUAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== - cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVMakNDQXhhZ0F3SUJBZ0lVYzJVWXV4cy8vR25oWTZPMUtRR0xKa0FYTFNVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2daNHhDekFKQmdOVkJBWVRBa2xFTVJNd0VRWURWUVFJREFwS1lYZGhJRUpoY21GME1ROHdEUVlEVlFRSApEQVpEYVcxaGFHa3hFVEFQQmdOVkJBb01DRlpsWTJoeUlFTkJNUjR3SEFZRFZRUUxEQlZEWlhKMGFXWnBZMkYwClpTQkJkWFJvYjNKcGRIa3hGakFVQmdOVkJBTU1EV0Z3Y0M1MlpXTm9jaTVqYjIweEhqQWNCZ2txaGtpRzl3MEIKQ1FFV0QyRmtiV2x1UUhabFkyaHlMbU52YlRBZUZ3MHlNakV5TVRFeU1UQTJNRE5hRncweU16RXlNVEV5TVRBMgpNRE5hTUlHTU1Rc3dDUVlEVlFRR0V3SkpSREVUTUJFR0ExVUVDQXdLU21GM1lTQkNZWEpoZERFUE1BMEdBMVVFCkJ3d0dRMmx0WVdocE1RNHdEQVlEVlFRS0RBVldaV05vY2pFUE1BMEdBMVVFQ3d3R1JHVjJUM0J6TVJZd0ZBWUQKVlFRRERBMWhjSEF1ZG1WamFISXVZMjl0TVI0d0hBWUpLb1pJaHZjTkFRa0JGZzloWkcxcGJrQjJaV05vY2k1agpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFVLNVJBSXlYd2NXUTBBWXVHCnhWbENUd1dIYzE3WmwxWnR1b2RLbVNWdzFOTlA2ZitSYnEzQ0VJbkxpaVdYMHdocks3RlM2WEJIQ2piMEhJcTAKTVRCWERSdEhHRWVXUGdXSmlTUkhFeUQ1Nm13cDBKdnpSajFYN0RVcWV2RHMzU2piRFBSdjY4c1BxekRIUkx3NQo3emRUSEFFbG5zU3dwb2hDRjNZaTBLTENGRTVvUkU3NnNUeVZHSW5BZ1FXUXNMUlJEL1hpbFRDQ3ltL1hZMTEwClJyRUpXT3V5QnNPWW1kYVNpdVMyempKNlVsZXJhOWJFTUJ5WTAvT1JDWGV1UmdCR0ljcjAzSEcxV3VjZFNHbHoKaHg1dERqY3BQRmh2UkltbUFON2tiZVY2bGh6dXRGQWxOaFlwNmdvT3k0V1NuVngranlzVXg5UVpkZU9BS0ltbAoxNDZaQWdNQkFBR2pkREJ5TUI4R0ExVWRJd1FZTUJhQUZOSFludFBuQ2FERlFXQXNsL0JZK0M5YXdJODhNQWtHCkExVWRFd1FDTUFBd0N3WURWUjBQQkFRREFnVHdNQmdHQTFVZEVRUVJNQStDRFdGd2NDNTJaV05vY2k1amIyMHcKSFFZRFZSME9CQllFRk5vVzAvYVF4a24zbWpKZU5uaFk1bjdFSDZZU01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQgpBUUNuTmZvQXZMbWk2TUZpenE5czMrUmN2YmROekd6WnZCc3hXYjR1Z0J4WHpLMmZ2MDl4ZDRaQjJNejlkY1BlCkM4Ui9HbVdjS3owaUVzNWRqSDRGbmEzSHJqbWNYZnYvck1WUDdsUjFDOWRTL2tTTEptRW1laUhzVFZ0M2ptNTcKUXc0UkpMM013RXdTQ1Qxbnl3RVlKZlROTXB1bmtVdmhvVVc0QVhyNGpralR4ZTd5THhMU1cvZWtTOTRCYldmcQpSY3kwc0R5a3M2VGJ3MDA5K0owWXFBWk9VSUYyWWhub2U4MzlXV2hPem4xcHFXRXFKcFVIaWRYaFBXRnpTQS9MCjBqc3hlQ0wrWkRMSmJZa2g1QWQzdEhDNExwRkg5U2NWTlVQYmF1M0NlcUJNZVovVFd3UXhTbUpIMEs3TGx5RmUKRVVHeE5DNm16UE1SaVpWdXlrOTJ4cXl4Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2QUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktZd2dnU2lBZ0VBQW9JQkFRRFVLNVJBSXlYd2NXUTAKQVl1R3hWbENUd1dIYzE3WmwxWnR1b2RLbVNWdzFOTlA2ZitSYnEzQ0VJbkxpaVdYMHdocks3RlM2WEJIQ2piMApISXEwTVRCWERSdEhHRWVXUGdXSmlTUkhFeUQ1Nm13cDBKdnpSajFYN0RVcWV2RHMzU2piRFBSdjY4c1BxekRIClJMdzU3emRUSEFFbG5zU3dwb2hDRjNZaTBLTENGRTVvUkU3NnNUeVZHSW5BZ1FXUXNMUlJEL1hpbFRDQ3ltL1gKWTExMFJyRUpXT3V5QnNPWW1kYVNpdVMyempKNlVsZXJhOWJFTUJ5WTAvT1JDWGV1UmdCR0ljcjAzSEcxV3VjZApTR2x6aHg1dERqY3BQRmh2UkltbUFON2tiZVY2bGh6dXRGQWxOaFlwNmdvT3k0V1NuVngranlzVXg5UVpkZU9BCktJbWwxNDZaQWdNQkFBRUNnZ0VBRllMcUcrTWNaMytObythMHMyZzZvNm9Rb3RJd0Q1SmtHMG0yU2hwVEpSaVUKNktVdVNkdmRmdCt2b3R6NXNRWWUxRVBZclpINHRlRXJuMjR0NDNWWncvZXltRytXSVgzZUVKcmduRnFzaFI0dgpFNEhBc0FhQzlYRS8xalBqRGJiaUc2eDVjNGdGL1d1VFRWN1RFVEluYXpRYml5bUk0bXF1QmJwc2VqenFSWkE3ClltMXRiV294VXRsY0hCZWlCVkUrVlB0T3gvSUpGYWJNTEdkRFBjazk4MlNuMWJGbGpGbFBVQTNtMTdIWlhjbHIKZTlwcXB4eWZJR3djdVJzOXNyRDBCWmdtM1U3WXYvaGtXUlhZSzBDcDNSM3FyR3drMXZ2Ni9EckhkcWliWmtaZQozYkhPRHI5YnFLbmxpbkYvWmFScjEyelRSUmZkdXVMM1FKb3RKZ2FYVVFLQmdRRDVENXQ1bE5MTEZUM3BzbjlWClE3cXNwdWt6V2ttcjFmZ1hEYVF5QmxVZ2pkdDcrNlZ3bDFWeWU5SUhPSEFtanBpY0Q1aHVwMVkyN2lkakd3ckwKMU82MHRNM01weXdzK29mcTFDY1M4enE3N2QzdzY5MkpTVmNYbzdpdXc2TEpsd080MDJGMXVOaHUzRlJENmVLegp4TWVtQUU4cjlXNnNmdVFGWVgzWkcwbXpDUUtCZ1FEYUZOcVBDeHA1YWtwMlQraHdjcjhKTmlaVGNyMjl2STlRCjRKMSs5dTdrWGFDT0VEb0x3T2htajB1QklCVmZOM0hqVzhJME9GUnl4L3E1MXkwNy9mNTFFSTJqQVRmUGRhRGEKbXA0cjE4SFY5NCsyKzFzY0xjQXRSZFdab2dhbFhUQUQvUEF2UEFnYmFnUWd0L1VWREZhS0YybjZwWlBGYzBzUQpQSW13M2FFVEVRS0JnQnRraEEwVE9UdnMwaXBwMzJkWlU2YTVsTng1Q2JGRWoweTV5MTFWSlBlM29uUTRjVEc0CjgwVHNLV1Z4NTZQVit5THU5Q3ozYXB3UUJYVDQvRzcrdEdKYm9HYnAzQW4yWkF5SDJPUlVyQmtQU0dHL0QxYVMKSW1vUEw3akkrNWFBYllCZWYxR2JTdkttZVA0Zk16ZmlaTEwxUmIvbjlvd3lTSkh1N3hCNTE5bEJBb0dBWXlIOQpvKzU1TDE0STBUVkx4T24wT3h5NVdVK2NQc2FiSXptbmZsS0RqNTJiNFZndytxekxOK3ZGZDhIODFSYWdGNmpiClk5K0RTOVhwL0ZaN0FuMVlFU0RnTVl2Wk1kNFhxNmVEWlF5ajJUNjZ2b1FPQzRZa2lLL3BBL2hxS3Z0c1d6TzgKZnN3OEp6SVBCRXg3QlFGaHlVNFJaOVdpa2F2eUlFUlVsdWg0VXZFQ2dZQjI4LzRJVkxOTGFGOGM4RVRqdDJWZwppcWQ5T1doVnIvRUl3U2YvUVRNMEdzbWh4RGRLSk1NaE1kTW1aMmhkUFZNaFRUUHRxbFRRM3hDVUF3Y2tVd0lrCldFRjRvWnBkNXoraUFVRkxjTjRHWmk4ZWpFWnNWemF1VkdrVmlrbTVrc1BaVFM3b04xZDdqTUJsQU5aRnh5THQKbE5iNzRWeGROOU9aWEdxZ3hyb2Jtdz09Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVMakNDQXhhZ0F3SUJBZ0lVUUJ6bnNYUGs5NFpRNkl2bStrdCs4ZExzYmtRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2daNHhDekFKQmdOVkJBWVRBa2xFTVJNd0VRWURWUVFJREFwS1lYZGhJRUpoY21GME1ROHdEUVlEVlFRSApEQVpEYVcxaGFHa3hFVEFQQmdOVkJBb01DRlpsWTJoeUlFTkJNUjR3SEFZRFZRUUxEQlZEWlhKMGFXWnBZMkYwClpTQkJkWFJvYjNKcGRIa3hGakFVQmdOVkJBTU1EV0Z3Y0M1MlpXTm9jaTVqYjIweEhqQWNCZ2txaGtpRzl3MEIKQ1FFV0QyRmtiV2x1UUhabFkyaHlMbU52YlRBZUZ3MHlOREEyTWpNd056TXpORFphRncweU5UQTJNak13TnpNegpORFphTUlHTU1Rc3dDUVlEVlFRR0V3SkpSREVUTUJFR0ExVUVDQXdLU21GM1lTQkNZWEpoZERFUE1BMEdBMVVFCkJ3d0dRMmx0WVdocE1RNHdEQVlEVlFRS0RBVjJaV05vY2pFUE1BMEdBMVVFQ3d3R1JHVjJUM0J6TVJZd0ZBWUQKVlFRRERBMWhjSEF1ZG1WamFISXVZMjl0TVI0d0hBWUpLb1pJaHZjTkFRa0JGZzloWkcxcGJrQjJaV05vY2k1agpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRHZGYjRQY01GZXRuOTk2OS84CndlM243SGJsdk1Ga2p6VmllOVlaSTNZb0tNekV1R2lBUnkyOXZXUDFpekEyTnRPN3RTUS9UQ3B5Q25UN215WWsKSlovQ3dxbS9sd3EvVlI0Mll3cElXM0hxVktVYmEveDdPVHhTMFlGVkZsaUhDOE5GMVovc0VSbnUyVDBja0dkLwp6TnkxbFFDTVU2LzRLTGNHM3AweTdFTkxHVC9VSkdOOHRNWWJQQlFqdDBpL1UvSjZPSU14eC92d0txV1NHOVdXCmlOR2hQNGhtRzdDYXArQmlBenFrQTNGc3NmU0t5cUlzbk5BV2FIaFRmbDRlQ2VVa21uSHY5a0psRDRwRzEzdEoKbWowQVFDSmE4Slp3V2lNMGYwcjJITlZSKy9Rb25xWmFjRjJnTTNicHo1T25uUFpkcWk1TGlzRXpxQkV6Q3BVegozY2ZyQWdNQkFBR2pkREJ5TUI4R0ExVWRJd1FZTUJhQUZOSFludFBuQ2FERlFXQXNsL0JZK0M5YXdJODhNQWtHCkExVWRFd1FDTUFBd0N3WURWUjBQQkFRREFnVHdNQmdHQTFVZEVRUVJNQStDRFdGd2NDNTJaV05vY2k1amIyMHcKSFFZRFZSME9CQllFRk5NQSt3dnEyam9UQzRHcTlDZVFValBuWnZlQk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQgpBUUJOektFUkdPMXpybmJ0UTdBdnlOZmxYc0JheGtudEQxRHNIOHozMWt0V3B3QnV3RnFrWThQSW5zbmM3ekpoCmJvdFFhRUhkNjROQzhMNXlBWWgwK3Jzck0xU1V5VG4reVJ3LzlmNUlHS3pZN25IbFdWVTJaUHI2T2o4bHRjMzAKRlpLQ1Yzd1p1RzFuNmUrY21VVHpFTnJXcWkxcUkvSkE2YkxLa3RsUTFnUlM5L1hodFZJZWo3Y2YzTkNjUU5pbQpZQ1hvVVpiQkNaUHh5a2FudGFJVFFkTEk0QUhzR3BlNHhQSHBCQWcyaFdIbm1HaTBNVjF2dHQ0YTdHcW9XSnpwCk1Na2E1QUU3YzdFVnNmM2MyVDJQODhwdVlUZ3luK1Z0QXV1VDVsREhKNEVwU2U1andUR21MMHRnV3Rrc1RPUVkKVUdjTm02RkhwclZLU3dOdzI3UTltaTZpCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV1Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktRd2dnU2dBZ0VBQW9JQkFRRHZGYjRQY01GZXRuOTkKNjkvOHdlM243SGJsdk1Ga2p6VmllOVlaSTNZb0tNekV1R2lBUnkyOXZXUDFpekEyTnRPN3RTUS9UQ3B5Q25UNwpteVlrSlovQ3dxbS9sd3EvVlI0Mll3cElXM0hxVktVYmEveDdPVHhTMFlGVkZsaUhDOE5GMVovc0VSbnUyVDBjCmtHZC96TnkxbFFDTVU2LzRLTGNHM3AweTdFTkxHVC9VSkdOOHRNWWJQQlFqdDBpL1UvSjZPSU14eC92d0txV1MKRzlXV2lOR2hQNGhtRzdDYXArQmlBenFrQTNGc3NmU0t5cUlzbk5BV2FIaFRmbDRlQ2VVa21uSHY5a0psRDRwRwoxM3RKbWowQVFDSmE4Slp3V2lNMGYwcjJITlZSKy9Rb25xWmFjRjJnTTNicHo1T25uUFpkcWk1TGlzRXpxQkV6CkNwVXozY2ZyQWdNQkFBRUNnZ0VBWFpRNWlZcWRMVWlxT3l1OVJvM1RaQ0VpWW9hUWZaOHVDb2VsQTc3bEN3LzUKSWhCNTJxZkJpQkFlbFdldTdiRmxDNFg1azRybzNDMHFuNmFZOWJJQ1I3Vnd3b3hJaVI0MFRwNVNVb0wwWWY5UwpocHFzUHNEbTB4V3NsUlREZnN4RVdNdW1KanlGVlg4VEUrQ1RtaXFod3JMNC9YUHVIdWcweDB3UDVIUWtYTHBhCkdmTWVDRm9uNXNINjVlVllMTkNJZEthNFRxakNBUHdmVjNrWEZ5ODdKdU8zRzArVCtxZWVtWDE2WW92N1RpSWEKc2s3czNTWjgrMUNzekxaU2Rzc2VCZmxzU2NwR0o0Z0x0bTRtUzRZNmY1NitRRTl3OGVMY05XMGNrZzhqRHNFUQowNm13d3c1Qm5BUHU4YllYSElVVmdacm9YT3FZTDRVTFVUNWhPOE9YbVFLQmdRRDZlTFZvRXV4cXk3Ui85YUdHCk5iY3NVdjE4VCtOZ2N2ZHg5L3l6SkFnakcvVFp3STFmc1hjM3U4VG9Ta1dRL2VidGZSME1BZStPSWVCUEd6V3QKQUVsdnBhOGR4NXVlWTV3S2w1cW1BUEJGbXF0bFNOUnY4S010eDRsV1g4ZjFpRzY1dHh5dDdZZFRZbUdxaldpagpnM1NDa05nNHdTZkNxYjVHS3d2ckI3TTQ2UUtCZ1FEMFhMR2MrOFdtUzdHSnNUNWtlRjY0bmw2QVBVMnZNbTNkCmc2Y0tYM3BMMC9oRFY2RituSlFGZDNFYkU1V01uc2hPQXZWYkFVV0ZIejZRRytlaXBpKy9OaWxCckRWTDNDVHIKWGozd1REbjl6akFxeTJLa0dsbTlncCs5S0ROMTBRdWMvT1JpR0d1THVuQTYzMGRKMnNzc3V5MHZtYng2YnU5cgpISDhmSGFiMXN3S0JnRWk3dXJvQkhNUWFhVXpyTUQ5LzQ3UXNXVTI3Q1NVZDNYc3I3eWE2Sk43RkpJSURKMHFOCmh6Z1kvNklReDBqR1lrTytuQ3U3ZUN3RzdGTXNiSmJUU1gveFZmdkkxZ2pWbGgrQlRMZzk5NGZPMVV5eExIZGgKSXBHTnF2VDVGV0RZZ0liUGhMV0JEMVlJY0tJTk5FQ2ZVTHNGZ3JSZ2FzSmRkbEo3OTVjRmdtYlpBb0dBWEZYYQpWM05ia0NieUF4R1NmZXh0L2x6NVlJUEpvdlh2UmRERmdjbnFNRlQ4YnBYaVZERmVUV0tBdnJaN3dCTVBwVXJBCjQ0NXJjbzRIMmZSeFpxaGRTbWR3MTN2Mjk1OUw1QlJNVzB5eWJSRklhaU5JTnJJdVRzblpDbVR5YlFaODJPbEcKY3pxL0NLRitYd0NYczNTVmFXV2hBV2VhTExsV2hxYlI4alFHTHJrQ2YycjFoQWw4cmVkdjN2amxGUVhSZEZ3NgpMWTcrTjZrVThmenU0K2ZMUTVEUkdWY3lJWHArZWswRmRFU1ptWW0vZVlYSDRIdWdRVTZySUhvOGRXZ1BYV0M0CjNFRnEyZDhTc2dzSTd5aHlxTWxRcU5sRW84cXQzU2RTS1lpZFQ5dFhJVEFuM1JQZmV0Y1NhTWpvUlMrdGc4MEcKYUQveTB4dm50dFN1cUU5OFJ3TT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo= rules: - @@ -381,8 +381,8 @@ microservices: natsSelfSigned: secretName: nats-vechr-cert ca: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVIekNDQXdlZ0F3SUJBZ0lVWWZsYWh1RFkrTXhSVndVb3NIU2hORzNsM3M4d0RRWUpLb1pJaHZjTkFRRUwKQlFBd2daNHhDekFKQmdOVkJBWVRBa2xFTVJNd0VRWURWUVFJREFwS1lYZGhJRUpoY21GME1ROHdEUVlEVlFRSApEQVpEYVcxaGFHa3hFVEFQQmdOVkJBb01DRlpsWTJoeUlFTkJNUjR3SEFZRFZRUUxEQlZEWlhKMGFXWnBZMkYwClpTQkJkWFJvYjNKcGRIa3hGakFVQmdOVkJBTU1EV0Z3Y0M1MlpXTm9jaTVqYjIweEhqQWNCZ2txaGtpRzl3MEIKQ1FFV0QyRmtiV2x1UUhabFkyaHlMbU52YlRBZUZ3MHlNakV5TVRFeE56SXdNelZhRncweU56RXlNVEF4TnpJdwpNelZhTUlHZU1Rc3dDUVlEVlFRR0V3SkpSREVUTUJFR0ExVUVDQXdLU21GM1lTQkNZWEpoZERFUE1BMEdBMVVFCkJ3d0dRMmx0WVdocE1SRXdEd1lEVlFRS0RBaFdaV05vY2lCRFFURWVNQndHQTFVRUN3d1ZRMlZ5ZEdsbWFXTmgKZEdVZ1FYVjBhRzl5YVhSNU1SWXdGQVlEVlFRRERBMWhjSEF1ZG1WamFISXVZMjl0TVI0d0hBWUpLb1pJaHZjTgpBUWtCRmc5aFpHMXBia0IyWldOb2NpNWpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURIZjJlSkp4bG03b1hqaUNKZFdvT3dydlRGQkJtRHd5RUgyQlFlZExHck1GRThTZEFkT2EwcHk0UCsKYnZlTUxMWHF4ZDMvTFN3Y3FkcU1QZHNUSytYdWJacjJEeGlWa2FJVzlTMEw4aHlPekNaR0s4eTZFRVVRVDBPYwo5YkRsTHUyaStFZHNYUVZrWVlndjJnaVE3WjNTNTNxSHN4S3o0ZjFIRjl2N2ZsZDZYVXVFTm5Eak9relRvSTRFCmRSTUtId3FxM1lJOUJXdUY2VVQ1N1NqdFFMNGhBWWhER3F2VHRHUE1DWm1HZ2V6OS9ieFU0dVk0d053bm1tRysKdjFDNkJSRnFaandEOFlzbmRRd2ZkV0RKTVJ0dFRueDkyUGpSVkxBWThCd3Vuams4MXByR2JlUW5kNjJEMldPSwpFbGtlUG4zc2xCSlFKc1RzcVFnV3hDY0M0RE1wQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJUUjJKN1Q1d21nCnhVRmdMSmZ3V1BndldzQ1BQREFmQmdOVkhTTUVHREFXZ0JUUjJKN1Q1d21neFVGZ0xKZndXUGd2V3NDUFBEQVAKQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJzUENTcTFlODdUbERhRGJzaApvbDJJY2s2c05tOWwxL1NMcmxWdUxsVU1NcmlQL3YxZmorYTAvV3MyS2ZXaXYzWFJtbGg2aHptNFFSdmN2a3N0CmpNb1A2NitzWU1EZ2kyUUZWamQ4ZzZuZkpiMXkzL2o4dFVLZFc1N3g2QTVwNlpNY3FubWFKWElSWjJ2VUlNMmoKdk5Qa0s3OWFxMUJJSEZBeVVLMksvenlkUjBvY21GL2F5dE41K2xnM0FtWXhtWHE3RGZRU0Z5L3ZOSHZZU3dCaQpxV3U5c0VFQUk1aG5yc0Q2SDFsWnczVFBLd2dxK0JMM0RIS0pLbmM5clpkc3FMMHBSODFEaFo3U2E1R2p2TGRPCmtUeWdyTmpYSU5QZ3RUQzFpTURnUjFxU3hlMXBscTllVWZpZU4yZ0pDL2R1VDZSMU1sc244Sm1YaHVFQXJ6QzcKbndjUAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== - cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZDakNDQS9LZ0F3SUJBZ0lVYzJVWXV4cy8vR25oWTZPMUtRR0xKa0FYTFNvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2daNHhDekFKQmdOVkJBWVRBa2xFTVJNd0VRWURWUVFJREFwS1lYZGhJRUpoY21GME1ROHdEUVlEVlFRSApEQVpEYVcxaGFHa3hFVEFQQmdOVkJBb01DRlpsWTJoeUlFTkJNUjR3SEFZRFZRUUxEQlZEWlhKMGFXWnBZMkYwClpTQkJkWFJvYjNKcGRIa3hGakFVQmdOVkJBTU1EV0Z3Y0M1MlpXTm9jaTVqYjIweEhqQWNCZ2txaGtpRzl3MEIKQ1FFV0QyRmtiV2x1UUhabFkyaHlMbU52YlRBZUZ3MHlNekEyTURrd09UUTNNalJhRncweU5EQTJNRGd3T1RRMwpNalJhTUlHTU1Rc3dDUVlEVlFRR0V3SkpSREVUTUJFR0ExVUVDQXdLU21GM1lTQkNZWEpoZERFUE1BMEdBMVVFCkJ3d0dRMmx0WVdocE1RNHdEQVlEVlFRS0RBVldaV05vY2pFUE1BMEdBMVVFQ3d3R1JHVjJUM0J6TVJZd0ZBWUQKVlFRRERBMWhjSEF1ZG1WamFISXVZMjl0TVI0d0hBWUpLb1pJaHZjTkFRa0JGZzloWkcxcGJrQjJaV05vY2k1agpiMjB3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3BrRDgwaFpXK3hNbWZUSndCClRPcnJBMkxkdG43NGUxREtYbkFtSlE3eGNCVk8xUnBDaU1PNWNDSmo4NWFRNm5ZVjVJSkR3S3FVNHFaeHRwbjMKK0d6ZzNRWGFySVVQVGtxbm5BR09DeXZTUktDT0VEYjVyZUk5SjhjS0JOeEh6QTFEUWRncUVKUXAvKzRWeVJEbgo1STNTT0xwWnZxSFhZRnU1QWxsM0pNWm1kSU9RMGxDLzI5bHFVZHg0L0dMN0lxNU5uek9vUDI4QUZCN0htT2FaCjg2RHBaaWk4bGtxU28rUFdjY0I0NEtuQmY2UWVGaitZTHRvbExUaFhjVjQ0TE9xWGFuSG1RK1FOOUtJVndHQUkKcjN6cTNGZVhzc1JVZkw1VVNXS2JVS0JhVEg2QTE1VWxEY1FlNHV3YVluRnFESDEwdWN6TG9iL1R0Rk4zSHhrMwpYZkV6QWdNQkFBR2pnZ0ZPTUlJQlNqQWZCZ05WSFNNRUdEQVdnQlRSMko3VDV3bWd4VUZnTEpmd1dQZ3ZXc0NQClBEQUpCZ05WSFJNRUFqQUFNQXNHQTFVZER3UUVBd0lFOERDQjd3WURWUjBSQklIbk1JSGtnZzFoY0hBdWRtVmoKYUhJdVkyOXRnZzV1WVhSekxuWmxZMmh5TG1OdmJZSUpiRzlqWVd4b2IzTjBnZ3R1WVhSekxYTmxjblpsY29JaApibUYwY3kxc1lpNWtaV1poZFd4MExuTjJZeTVqYkhWemRHVnlMbXh2WTJGc2dpUnVZWFJ6TFd4aUxuQnliMlIxClkzUnBiMjR1YzNaakxtTnNkWE4wWlhJdWJHOWpZV3lDSVc1aGRITXRiR0l1YzNSaFoybHVaeTV6ZG1NdVkyeDEKYzNSbGNpNXNiMk5oYklJaGJtRjBjeTFzWWk1MFpYTjBhVzVuTG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzZ2h4dQpZWFJ6TFd4aUxuRmhMbk4yWXk1amJIVnpkR1Z5TG14dlkyRnNNQjBHQTFVZERnUVdCQlRpVnVrUklpTjRpZzB4CmNYUmIyaXRXWDR4cUd6QU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFtUmJUbDJhSVVxNlNsNWVmVXYyV3JnekgKU3M2QTZlWEVBb2VyQ05KdTkzS0Jnc0JoYlhBZ2tmd2VwVGF3OTI2V3NkV0JoT3ZRWkxiVmxCcVkyeHZITWdzeQppTmFzUHI5WFA2UVA1QVEwdGpQWlJYNStzWFA2SURVN0JPMmZZdFNXUTd5K2syV09tL3RIS2gyNWU5TVR0cDB1Ck84a3B6U3VFZnMxQjI0SUYzZDRsNmJWVStvSGVDNDVQNFJieGNtd21BOXFDaGdJblJBQWl4NzBEWGh6Y01vbjAKOHpOenF4MUp3MzZVOC9yRjZzRCtGVXVyZTJtWTRCWWp3dFJUVnJ6aEg0MnBCazdrYWo0UVpnM3lhN1VudENxUwpzdUFPWWF4czhramQzM05Ka0g2dHQ5emhpT3d4VlRNY2I1bi9wTHhValRZKzRvVHJ3WTVHZklOL1JJYy9EUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktnd2dnU2tBZ0VBQW9JQkFRQ3BrRDgwaFpXK3hNbWYKVEp3QlRPcnJBMkxkdG43NGUxREtYbkFtSlE3eGNCVk8xUnBDaU1PNWNDSmo4NWFRNm5ZVjVJSkR3S3FVNHFaeAp0cG4zK0d6ZzNRWGFySVVQVGtxbm5BR09DeXZTUktDT0VEYjVyZUk5SjhjS0JOeEh6QTFEUWRncUVKUXAvKzRWCnlSRG41STNTT0xwWnZxSFhZRnU1QWxsM0pNWm1kSU9RMGxDLzI5bHFVZHg0L0dMN0lxNU5uek9vUDI4QUZCN0gKbU9hWjg2RHBaaWk4bGtxU28rUFdjY0I0NEtuQmY2UWVGaitZTHRvbExUaFhjVjQ0TE9xWGFuSG1RK1FOOUtJVgp3R0FJcjN6cTNGZVhzc1JVZkw1VVNXS2JVS0JhVEg2QTE1VWxEY1FlNHV3YVluRnFESDEwdWN6TG9iL1R0Rk4zCkh4azNYZkV6QWdNQkFBRUNnZ0VBQmNkYU9CYURZM1IrY0pUaVRqTUtZSWNGaEF2WHFPMCs5QjZpME5IN2YrUHoKZmZQS1NORXpabXI1YVJHZ3BJQ3hGSTdzbDVXRjJyd2Nzd3huaytsZUFJM1h5THVQYjFXYU9yc1kzSGZwL3VrQwoxY1Njc3dhbmlyRUQyZ1lQWWMwRStMRlNSaUM1Zy9McWNNaWc4RjQ4TFJsczFHa29SOWhMVi9OS0RFTHZGZ2U5ClJLbG9BRVA2eGJDL2c0OFkvZVZ4NkhXSk5hMCt1SUhwaFpmZFFGSGQ2VEdiZEo4aExrUHZIMGtrdHZ1bDBRZzkKNnNpMVE0RUhRcFkrZE90V2J0YVlLbFBRMDNaVlFLZHVYQ0pWK0d3OThsQmdXNFZ0cDhlZk1sdldiU29yeWxpUwpNdVdJU2EvWFo2OW04NjlOaXZxY1FuaXQ0QWV1b1J5NEFqcm9nRFZ5SFFLQmdRREJlU3JGcUEwNkxWMW9kV0t1ClB1M3RVZ1MvY1U4T2I5QnQwT2p4djEvMVNzNzFURUxrZmdFc252ZFM3VCs5b2pGOTBFQ0JHQTY3R3pwS0k5QksKbkpmNnJrTXRQdFlDaTBYTC9tRXN4dUpzbmF3cE1jeHUyUm9HbFk2eUJnQS9Ja3RseEhwN2NLZEZZM2JGOHUxagoyZHZBV2RSRlRWVFJaSmRZK3RtUW9ucWREUUtCZ1FEZ1hPdldVZnBtNGp0dmtPbDVlbXdqREw3RXhGTnJUd2dICmNVamdCNDBOcXlPbUIrWVRWcFhWZ2hCMmxmWERUQ3Z4SGtFRmUzTXdjcGhSMS9WSDJvRU02d3Y0c0FIaXhkUUgKUVV5OEZPZFRoTXhpNTZ3V2F3Vk9lR2d3Y0pGUThPWkZVM1lmbFJoQjdJNzZNQ09YTUFJUHl2VVQ0SGJydE83agpWcUVIbjJHM1B3S0JnUUNneVpMN1d6Tks4eUtheWx0dFZnMGoyckxwYTBCNVRnR1pFakpWbm1jZ0VzQzJhVjk2ClJ5R3d0SmYwaWdrY0R5dzBWQnNYYmlmbjViUG1vNmJhS3hPL0dJM3BqendLTnphVlZ0M3BlWXY1R254V2EvVnEKOWZCRUlvekpkR1ZHRXJrNFpUWXBXakVaWUpUMzQzRFlOOWtDSFdWbEJ1U0RkS2EzSXhvbXNuRldEUUtCZ1FDaQpQby9NekR0bmF2SFFHOXE2SGUxVTYwS0l4L0FMQ1h1azVpYnMyb2tGK1Z3dUZFZ3NjOUNtTlFmeXVUNmZtOVdxCjUxWGR3UWZyWVBNRlBFWURUOTlDbURadi85ZGRSZkd0eldyUUY4MndkN2ZWVGZNRHd5QnpQbDhacUUxdFdzY3EKR3RDd3hnQmtxOHc0MzliYzNicWY4UVNJK3lrRUNqTTE4czgvMCtHMXdRS0JnQnhYMHpYZUFDU0xlNFJlbnZ0aApMQ0MwdUpFaklyM3pIcVhTb2ZBZklNMWFqQWVRVHRLVkUxK2pUaEtxWG5YSDRHdjRMa01PTTRXdFkxK2FpaGFCCkJNVDhpcVl4RGU2MHhScldOQXFHZldqWFZ5b3hQK21kalRHblkrRXh6STdraW01dE5Ed1d2dllGbzNSUnNzRHMKNEVSYlZIUGNXaTgwWCtQd0wrZ1lZTzBjCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K + cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZDekNDQS9PZ0F3SUJBZ0lVUUJ6bnNYUGs5NFpRNkl2bStrdCs4ZExzYmtVd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2daNHhDekFKQmdOVkJBWVRBa2xFTVJNd0VRWURWUVFJREFwS1lYZGhJRUpoY21GME1ROHdEUVlEVlFRSApEQVpEYVcxaGFHa3hFVEFQQmdOVkJBb01DRlpsWTJoeUlFTkJNUjR3SEFZRFZRUUxEQlZEWlhKMGFXWnBZMkYwClpTQkJkWFJvYjNKcGRIa3hGakFVQmdOVkJBTU1EV0Z3Y0M1MlpXTm9jaTVqYjIweEhqQWNCZ2txaGtpRzl3MEIKQ1FFV0QyRmtiV2x1UUhabFkyaHlMbU52YlRBZUZ3MHlOREEyTWpNd056TTJNVE5hRncweU5UQTJNak13TnpNMgpNVE5hTUlHTk1Rc3dDUVlEVlFRR0V3SkpSREVUTUJFR0ExVUVDQXdLU21GM1lTQkNZWEpoZERFUE1BMEdBMVVFCkJ3d0dRMmx0WVdocE1RNHdEQVlEVlFRS0RBVjJaV05vY2pFUE1BMEdBMVVFQ3d3R1JHVjJUM0J6TVJjd0ZRWUQKVlFRRERBNXVZWFJ6TG5abFkyaHlMbU52YlRFZU1Cd0dDU3FHU0liM0RRRUpBUllQWVdSdGFXNUFkbVZqYUhJdQpZMjl0TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF2K0RFMW5JcHZJakRBUStTCnhVRjNWQmx4bVdnWGNyTmsvRjI5VXJUMzRZQWNOTHIyM212Y3RtS3BVcjNxbzZ4TlliSHgydVRmSlFsaXpKR0YKaGVmR0NHOS9MWDBQTWplVkFuTmFtOG1lUUg3THRqeVpvakM5SHZTc3dkVVhPcjJmM1hUN3lJSjVnL1BCejZ3ZApjbStEaWRSYTJIc3NZL0lRU3lJdjZZSW9rbkdvWWh6V2F2ZnkxVTlpd2JsdkZONWQ1enY2QTZjSkdFRTBpUHZkClJWOUJMTjh6OGlSVzh3UGlaOENwRDRjZDZJMlJod0wxaFYzNkVKVlJxQlg0MHNGaVFxaVVjeUE0a0M2TkxrWlUKZEtTcVZVdkl1Q2g0bHVhc2pCVkRBUFQ3bi9QRHRNaVZjVTdXc0JHcGUrOU0zZzN3K28wWm01VEI3NzU5YWt3ZAphOU1GUXdJREFRQUJvNElCVGpDQ0FVb3dId1lEVlIwakJCZ3dGb0FVMGRpZTArY0pvTVZCWUN5WDhGajRMMXJBCmp6d3dDUVlEVlIwVEJBSXdBREFMQmdOVkhROEVCQU1DQlBBd2dlOEdBMVVkRVFTQjV6Q0I1SUlOWVhCd0xuWmwKWTJoeUxtTnZiWUlPYm1GMGN5NTJaV05vY2k1amIyMkNDV3h2WTJGc2FHOXpkSUlMYm1GMGN5MXpaWEoyWlhLQwpJVzVoZEhNdGJHSXVaR1ZtWVhWc2RDNXpkbU11WTJ4MWMzUmxjaTVzYjJOaGJJSWtibUYwY3kxc1lpNXdjbTlrCmRXTjBhVzl1TG5OMll5NWpiSFZ6ZEdWeUxteHZZMkZzZ2lGdVlYUnpMV3hpTG5OMFlXZHBibWN1YzNaakxtTnMKZFhOMFpYSXViRzlqWVd5Q0lXNWhkSE10YkdJdWRHVnpkR2x1Wnk1emRtTXVZMngxYzNSbGNpNXNiMk5oYklJYwpibUYwY3kxc1lpNXhZUzV6ZG1NdVkyeDFjM1JsY2k1c2IyTmhiREFkQmdOVkhRNEVGZ1FVMjdTemtmSHI4WXhRCnVwK1czZE15Y3N5SFlKb3dEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSGZIOXpZY1lONXk5NWt0OW9lai8vM0cKcWtjdWtOZVFaWXNQVnI2eTc5bTJsUGRyZ2c5Y2VrdSs3MVAxWmhrOTVDVGdvM3JPS2x0ZjU5SmtlU0d3blN6cwpSV0Y2Nk9OSTF3d0pVVEtVaTQxSG04eldLVVBGUW1OS1pQaHZWaUhPNkxoYlc4K2pQZEJkR3p2bFY4a0tRalltClFvQnlmUitwc21TRnN6eFZsVHZKSWNiUUkvbTZrVHJqTEFJQjFLZGRtYllISDZlZEliTW5ZMVFLYnZReS96aUkKNGZMdk9NZm5kemtBakxFbzlKRllRd1BFWjR4M3d1YkczWmdiei9NMGM3R3lKQVorQk9BejNSVG01Yk44M3hxdwpnYktKSXk1S3dMbEY3eWlKWkZIcFZIVWVMQmxTNlpnSjlpbUdBQSt2b1RpMXFacVl4QUZUd2JPVFM1WkNQSHc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQy80TVRXY2ltOGlNTUIKRDVMRlFYZFVHWEdaYUJkeXMyVDhYYjFTdFBmaGdCdzB1dmJlYTl5MllxbFN2ZXFqckUxaHNmSGE1TjhsQ1dMTQprWVdGNThZSWIzOHRmUTh5TjVVQ2MxcWJ5WjVBZnN1MlBKbWlNTDBlOUt6QjFSYzZ2Wi9kZFB2SWdubUQ4OEhQCnJCMXliNE9KMUZyWWV5eGo4aEJMSWkvcGdpaVNjYWhpSE5acTkvTFZUMkxCdVc4VTNsM25PL29EcHdrWVFUU0kKKzkxRlgwRXMzelB5SkZiekErSm53S2tQaHgzb2paR0hBdldGWGZvUWxWR29GZmpTd1dKQ3FKUnpJRGlRTG8wdQpSbFIwcEtwVlM4aTRLSGlXNXF5TUZVTUE5UHVmODhPMHlKVnhUdGF3RWFsNzcwemVEZkQ2alJtYmxNSHZ2bjFxClRCMXIwd1ZEQWdNQkFBRUNnZ0VBUE1ML1lrOWxzeHYxOExTUFRHTG1XRjMwVU5tYkwwbnE3Vlg3K2FCd0xOdEcKVTFadmpkREhaSVJLelhaeHd1SHg0VUdaN3JEeWp3WnhZSW1tcUZoVXFHQXlmR094ZDd3Tk5tajBKUWhNVW0wMApzbUZ2WDJLaXlSWS9UT1JmaGt6OVBvSm9wejdXSHppR1ErN2pwbFQwNlNVem5ZRW45Z0IyTTJ6QWttZ1MxQWlZCk9ibUNoY2F6WFlmRzh4eWt5ak5OdmFJWWwwS2lUaldOeWJybXRMaXh3NDljTHBvbUd3dTRoWVVpTStrTEh6WEMKY1FHb01KM1UwbXQwdjJUdllVRWFvcitma2gyZEQ0azRsMWRHUHQxK1hBUzBVa0RNSlNGWTRFaVpCLzEydmlUNQpDZHJMRFUzdE43L3hDY2Zub3ZoRzBTQUlZZWNRVGUvbU4rdXhLY0pMRFFLQmdRRHZhVjNrdzNZRzRVelFid2hjClVPUk5rc0RxQkRxTmx4UHJuTm5iaWs5QmpaWWV0ZERSYUJiNUNhMVhSUGNOdnVNczBPNUJSNi85WWVHYTV1ZUIKVHhSUlZlZ1creXNZb3lCWWhHOEF1Qlcra3hkZjA0bTRiS2FaSXBjdngxTGtRMjJmV3VONW54cWhaaFhmTUVhQwpXamZ3WHJxRGhrays0ZEZZaXRDOTRPSVdQd0tCZ1FETkxFTGZibjI3YkdITFB0ZlUrVk5neG5YcWVjTWVUckpRCmlUSUxIRFEzRGNQSStTdEJ1N25VbGZQTFFaQndYKzRPZ01FWmI2UzBuRXRhL3BEVExPZGV2L1dZZmdGMU1xZGQKY1cxcjdKNmxSK2wrVTN0Y3JRS3FKQ3NvNG9ESWZRWlhGcGJ5aUtTUVRYZGZyRU9CMStJa2xmREcyR1Y3Tll0eQpZTEJWYW9TMy9RS0JnUUMrWDJuREs4NGhnR3dGWGhVbTIwZi9pMCtOaGxsTkY3SkdhNDRzN2RsQ0JpVTJQRnRVCitORXpySWRDMnRzYytncEpLOFlZOExrMzRlcDBzMkdwU0VtZXQ1SDdIRFJUdmZ0Tmg5bUFsK0RxanFwS2o3cDIKaFNjZ3BBbldlMGdsckp4eDErTUVaZ2pXQ0lnaDFwQnF2UFM0VllzNFpNSy9sdTlSMmVoTTVKTERId0tCZ0NaZwpHdm56anF6WnJzajNMaU4xcHZTNDZpRTdPUldZSHA0VnF6aU13Kzl3TWFpTGdsMi9JUmowR3k5dlNmYmEyb24zCjV5WTh6WS9DbEEybkE2dWNBSUttWU9kdTJoTHpzSDQzMHdHV3RtMnZyNnFqTHJXODNueTRXeUpBaTFuMG1KVDkKY3FwV2lJRTlIQkRYQmFGcG9iQzZJdGp1Ykx6STNSWTlvMzIyZUxCNUFvR0FJYXY5NXNMc1pBZW15N1ltNXhsWQpxUldDLyt4UUVsNUpwYUoyb1ZsMWUvRHlET2lYU2lMdEprenNiYkVKSDlUY1dkU3NmbUc2RlN3WUk5dmhudjc1CjdzQTNtN3dwL2t6dWJRa0p1bHEyQ2c3amwxdndYV0Y5QkJKVzZHemxsR3J1Q29oZkk1d2ZCVmV2WHc1VlJQL1QKaGhvNzZKd2p6WlN4NFowS1JJbjBEdG89Ci0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K nats: enabled: true