Skip to content

Commit 8d39042

Browse files
teghnetWesleyCharlesBlakeWesley Charles Blake
authored
chore: [sc-12231] VAO Stage Setup (#217)
* Update Charts to enable metrics to be shown through TOR * 9090 * Drop TOR based metrics (for now) * tor metrics fixes * Drop TOR based metrics (for now) * Drop TOR based metrics * Consistency * Consistency * revert readme * Prep for VAO * update readmes * resolve RBAC naming issues and conditionally include ports for probes * updates docs * fix helm test service account RBAC * parametrize ports * do not change spire * revert * revert * update health check paths in README and values files * bump appVersion to 0.58.0 and update ghost image tag * update health check paths in values.yaml * bump chart version to 0.4.0 in Chart.yaml and update version badge in README * bump chart version to 0.4.0-pre.1 in Chart.yaml * update deployment and values files to use chainRpcUrl instead of rpcUrl * bump ghost image tag to 0.58.1 * update health check paths comments in values.yaml * update liveness probe path and description to use "healthz" * update liveness probe path and description to use "healthz" --------- Co-authored-by: Wesley Charles Blake <[email protected]> Co-authored-by: Wesley Charles Blake <[email protected]> Co-authored-by: Wesley Charles Blake <[email protected]>
1 parent a0f2118 commit 8d39042

11 files changed

+76
-123
lines changed

charts/validator/Chart.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ type: application
2222
# This is the chart version. This version number should be incremented each time you make changes
2323
# to the chart and its templates, including the app version.
2424
# Versions are expected to follow Semantic Versioning (https://semver.org/)
25-
version: 0.3.26
25+
version: 0.4.0-pre.1
2626

2727

2828
# This is the version number of the application being deployed. This version number should be
2929
# incremented each time you make changes to the application. Versions are not expected to
3030
# follow Semantic Versioning. They should reflect the version the application is using.
3131
# It is recommended to use it with quotes.
32-
appVersion: "0.57.3"
32+
appVersion: "0.58.0"

charts/validator/README.md

+10-21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# validator
22

3-
![Version: 0.3.26](https://img.shields.io/badge/Version-0.3.26-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.57.3](https://img.shields.io/badge/AppVersion-0.57.3-informational?style=flat-square)
3+
![Version: 0.4.0](https://img.shields.io/badge/Version-0.4.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.58.0](https://img.shields.io/badge/AppVersion-0.58.0-informational?style=flat-square)
44

55
A Helm chart for deploying Chronicle Validator on Kubernetes
66

@@ -16,37 +16,27 @@ A Helm chart for deploying Chronicle Validator on Kubernetes
1616
| Key | Type | Default | Description |
1717
|-----|------|---------|-------------|
1818
| extraObjects | list | `[]` | Extra K8s manifests to deploy |
19-
| ghost | object | `{"affinity":{},"arbRpcUrl":null,"argsOverride":[],"bnbRpcUrl":null,"chainId":"1","chainName":"eth","chainTxType":null,"commandOverride":[],"env":{"normal":{}},"ethArchRpcUrl":null,"ethConfig":{},"ethRpcUrl":null,"fullnameOverride":"ghost","gnoRpcUrl":null,"image":{"pullPolicy":"Always","repository":"ghcr.io/chronicleprotocol/ghost","tag":"0.57.3@sha256:cc50f2eb8092dce67584f334cc73ce750a8ede0ca970dd759679df7b40501ee5"},"imagePullSecrets":[],"ingress":{"annotations":{},"className":"","enabled":false,"hosts":[{"host":"chart-example.local","paths":[{"path":"/","pathType":"ImplementationSpecific","port":8000}]}],"tls":[]},"libp2pSubscriptionBufferSize":"4096","libp2pValidateQueueSize":"4096","liveness":{"enabled":true,"livenessProbe":{"httpGet":{"path":"/healthcheck","port":9100},"initialDelaySeconds":30,"periodSeconds":60}},"logFormat":"text","logLevel":"info","metrics":{"enabled":true,"port":9090},"mntRpcUrl":null,"nameOverride":"","nodeSelector":{},"optRpcUrl":null,"podAnnotations":{},"podSecurityContext":{},"polRpcUrl":null,"readiness":{"enabled":true,"readinessProbe":{"httpGet":{"path":"/healthcheck","port":9100},"initialDelaySeconds":30,"periodSeconds":60}},"replicaCount":1,"resources":{},"rpcUrl":null,"securityContext":{},"service":{"annotations":{},"ports":{"libp2p":{"port":8000,"protocol":"TCP"},"webapi":{"port":8080,"protocol":"TCP"}},"type":"LoadBalancer"},"serviceAccount":{"annotations":{},"create":true,"name":""},"tolerations":[],"watchdogConfigReg":"0x94Fea534aef6df5cF66C2DAE5CE0A05d10C068F3","watchdogInterval":"300s","webApi":{"enabled":true,"listenAddr":"0.0.0.0:8080"}}` | Values for Ghost |
19+
| ghost | object | `{"affinity":{},"argsOverride":[],"chainId":1,"chainName":"eth","chainTxType":"eip1559","commandOverride":[],"env":{"normal":{}},"ethConfig":{},"fullnameOverride":"ghost","image":{"pullPolicy":"Always","repository":"ghcr.io/chronicleprotocol/ghost","tag":"0.58.0@sha256:35addbb175ffaf5f241445ae4e3acba84ed854e2b93501630bb1bbc8318eb0c2"},"imagePullSecrets":[],"ingress":{"annotations":{},"className":"","enabled":false,"hosts":[{"host":"chart-example.local","paths":[{"path":"/","pathType":"ImplementationSpecific","port":8000}]}],"tls":[]},"liveness":{"enabled":true,"livenessProbe":{"httpGet":{"path":"/healthz","port":9100},"initialDelaySeconds":30,"periodSeconds":60}},"logFormat":"text","logLevel":"info","metrics":{"enabled":true,"port":9090},"nameOverride":"","nodeSelector":{},"podAnnotations":{},"podSecurityContext":{},"readiness":{"enabled":true,"readinessProbe":{"httpGet":{"path":"/healthz","port":9100},"initialDelaySeconds":30,"periodSeconds":60}},"replicaCount":1,"resources":{},"rpcUrl":null,"securityContext":{},"service":{"annotations":{},"ports":{"libp2p":{"port":8000,"protocol":"TCP"},"webapi":{"port":8080,"protocol":"TCP"}},"type":"LoadBalancer"},"serviceAccount":{"annotations":{},"create":true,"name":""},"tolerations":[],"watchdogConfigReg":"0x94Fea534aef6df5cF66C2DAE5CE0A05d10C068F3","webApi":{"enabled":true,"listenAddr":"0.0.0.0:8080"}}` | Values for Ghost |
2020
| ghost.affinity | object | `{}` | pod Affinity spec applied validator |
21-
| ghost.arbRpcUrl | string | `nil` | RPC url for ARB |
2221
| ghost.argsOverride | list | `[]` | args override for the validator |
23-
| ghost.bnbRpcUrl | string | `nil` | RPC url for BNB |
24-
| ghost.chainId | string | `"1"` | chain id for the "target" or "main" chain we use for the validator. Can be mainnet ethereum `1` or sepolia ethereum `11155111` |
22+
| ghost.chainId | int | `1` | chain id for the "target" or "main" chain we use for the validator. Can be mainnet ethereum `1` or sepolia ethereum `11155111` |
2523
| ghost.chainName | string | `"eth"` | chain name for the "target" or "main" chain we use for the validator |
26-
| ghost.chainTxType | string | `nil` | chain tx type for the "target" or "main" chain we use for the validator. Can be mainnet ethereum `eip1559` or sepolia ethereum `legacy` |
24+
| ghost.chainTxType | string | `"eip1559"` | chain tx type for the "target" or "main" chain we use for the validator. Can be mainnet ethereum `eip1559` or `legacy` |
2725
| ghost.commandOverride | list | `[]` | command override for the validator |
2826
| ghost.env | object | `{"normal":{}}` | Environment variable listing |
2927
| ghost.env.normal | object | `{}` | un-encrypted env vars passed to the pod |
30-
| ghost.ethArchRpcUrl | string | `nil` | RPC url for ETH Archival node |
3128
| ghost.ethConfig | object | `{}` | Provide ETH keys from existing secrets : **NB** use only existing secret OR env vars, do not provide both |
32-
| ghost.ethRpcUrl | string | `nil` | RPC URL for ETH |
3329
| ghost.fullnameOverride | string | `"ghost"` | Override the release name to so tor-proxy can work with the default config. NB only change this if you know what you are doing |
34-
| ghost.gnoRpcUrl | string | `nil` | RPC url for GNO |
35-
| ghost.image.tag | string | `"0.57.3@sha256:cc50f2eb8092dce67584f334cc73ce750a8ede0ca970dd759679df7b40501ee5"` | Overrides the image tag whose default is the chart appVersion. |
36-
| ghost.ingress | object | `{"annotations":{},"className":"","enabled":false,"hosts":[{"host":"chart-example.local","paths":[{"path":"/","pathType":"ImplementationSpecific","port":8000}]}],"tls":[]}` | Ingress for the validator (Do not enable ingress, as libp2p does not support path based routing yet) |
37-
| ghost.ingress.enabled | bool | `false` | Disabled by default, since there is a bug in libp2p port assignment for dns based routing |
38-
| ghost.libp2pSubscriptionBufferSize | string | `"4096"` | libp2p buffer size |
39-
| ghost.libp2pValidateQueueSize | string | `"4096"` | libp2p validate queue size |
40-
| ghost.liveness | object | `{"enabled":true,"livenessProbe":{"httpGet":{"path":"/healthcheck","port":9100},"initialDelaySeconds":30,"periodSeconds":60}}` | Liveness probe : restart the validator if the healthcheck endpoint is not reachable |
30+
| ghost.image.tag | string | `"0.58.0@sha256:35addbb175ffaf5f241445ae4e3acba84ed854e2b93501630bb1bbc8318eb0c2"` | Overrides the image tag whose default is the chart appVersion. |
31+
| ghost.ingress | object | `{"annotations":{},"className":"","enabled":false,"hosts":[{"host":"chart-example.local","paths":[{"path":"/","pathType":"ImplementationSpecific","port":8000}]}],"tls":[]}` | Ingress for the validator - we should start using it maybe??? |
32+
| ghost.ingress.enabled | bool | `false` | Disabled by default, since there WAS a bug in libp2p port assignment for dns based routing |
33+
| ghost.liveness | object | `{"enabled":true,"livenessProbe":{"httpGet":{"path":"/healthz","port":9100},"initialDelaySeconds":30,"periodSeconds":60}}` | Liveness probe : restart the validator if the healthcheck endpoint is not reachable |
4134
| ghost.logFormat | string | `"text"` | Log format for the validator, can be one of `json`, `text` |
4235
| ghost.logLevel | string | `"info"` | Log level for the validator, can be one of `debug`, `info`, `warning`, `error` |
43-
| ghost.mntRpcUrl | string | `nil` | RPC url for MNT |
4436
| ghost.nodeSelector | object | `{}` | Node selector for the validator |
45-
| ghost.optRpcUrl | string | `nil` | RPC url for OETH (optimism) |
4637
| ghost.podAnnotations | object | `{}` | Pod annotations for the validator |
4738
| ghost.podSecurityContext | object | `{}` | Pod security context for the validator |
48-
| ghost.polRpcUrl | string | `nil` | RPC url for Polygon (polygon) |
49-
| ghost.readiness | object | `{"enabled":true,"readinessProbe":{"httpGet":{"path":"/healthcheck","port":9100},"initialDelaySeconds":30,"periodSeconds":60}}` | Readiness probe : stop the validator if the metrics endpoint is not reachable |
39+
| ghost.readiness | object | `{"enabled":true,"readinessProbe":{"httpGet":{"path":"/healthz","port":9100},"initialDelaySeconds":30,"periodSeconds":60}}` | Readiness probe : stop the validator if the metrics endpoint is not reachable |
5040
| ghost.resources | object | `{}` | Resources constraints for the validator, CPU, Memory, etc. |
5141
| ghost.rpcUrl | string | `nil` | RPC url for the "target" or "main" chain we use for the validator. Can be mainnet ethereum or sepolia ethereum |
5242
| ghost.securityContext | object | `{}` | Security context for the validator |
@@ -60,7 +50,6 @@ A Helm chart for deploying Chronicle Validator on Kubernetes
6050
| ghost.serviceAccount.name | string | `""` | If not set and create is true, a name is generated using the fullname template |
6151
| ghost.tolerations | list | `[]` | Tolerations applied validator |
6252
| ghost.watchdogConfigReg | string | `"0x94Fea534aef6df5cF66C2DAE5CE0A05d10C068F3"` | WATCHDOG onchain config address |
63-
| ghost.watchdogInterval | string | `"300s"` | WATCHDOG polling interval (in seconds) |
6453
| ghost.webApi | object | `{"enabled":true,"listenAddr":"0.0.0.0:8080"}` | WEB API (tor-proxy) |
6554
| ghost.webApi.enabled | bool | `true` | Enables the web api and deploys the tor-proxy subchart |
6655
| ghost.webApi.listenAddr | string | `"0.0.0.0:8080"` | Listen address for the web api |
@@ -76,5 +65,5 @@ A Helm chart for deploying Chronicle Validator on Kubernetes
7665
| serviceMonitor.scrapeTimeout | string | `"60s"` | ServiceMonitor scrape timeout |
7766
| serviceMonitor.tlsConfig | object | `{}` | ServiceMonitor TLS configuration |
7867
| tor-proxy | object | `{"enabled":true}` | Values for Tor Proxy (subchart of ghost) |
79-
| tor-proxy.enabled | bool | `true` | values for tor-proxy, installs [tor-controller](/crds/tor-controller.yaml) and creates an [onionService CRD](/templates/onion-service.yaml) |
68+
| tor-proxy.enabled | bool | `true` | values for tor-proxy, installs [tor-controller](/crds/tor-controller.yaml) and creates an [onionService CRD](/templates/tor-onion-service.yaml) |
8069

charts/validator/templates/clusterrole.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: rbac.authorization.k8s.io/v1
22
kind: ClusterRole
33
metadata:
4-
name: {{ include "validator.fullname" . }}-clusterrole
4+
name: {{ include "validator.serviceAccountName" . }}-clusterrole
55
rules:
66
- apiGroups: [""]
77
resources: ["nodes"]
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
apiVersion: rbac.authorization.k8s.io/v1
22
kind: ClusterRoleBinding
33
metadata:
4-
name: {{ include "validator.fullname" . }}-clusterrolebinding
4+
name: {{ include "validator.serviceAccountName" . }}-clusterrolebinding
55
roleRef:
66
apiGroup: rbac.authorization.k8s.io
77
kind: ClusterRole
8-
name: {{ include "validator.fullname" . }}-clusterrole
8+
name: {{ include "validator.serviceAccountName" . }}-clusterrole
99
subjects:
1010
- kind: ServiceAccount
11-
name: {{ include "validator.fullname" . }}-serviceaccount
11+
name: {{ include "validator.serviceAccountName" . }}
1212
namespace: {{ .Release.Namespace }}

charts/validator/templates/deployment.yaml

+30-49
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ spec:
2525
imagePullSecrets:
2626
{{- toYaml . | nindent 8 }}
2727
{{- end }}
28-
serviceAccountName: {{ include "validator.serviceAccountName" . }}-serviceaccount
28+
serviceAccountName: {{ include "validator.serviceAccountName" . }}
2929
securityContext:
3030
{{- toYaml .Values.ghost.podSecurityContext | nindent 8 }}
3131
{{- if .Values.ghost.service.type | quote | eq "NodePort" }}
@@ -70,9 +70,20 @@ spec:
7070
name: metrics
7171
protocol: TCP
7272
{{- end }}
73-
- containerPort: 9100
74-
name: readiness
73+
{{- if .Values.ghost.liveness.enabled }}
74+
{{- if or (not.Values.ghost.readiness.enabled) (and .Values.ghost.readiness.enabled (ne .Values.ghost.liveness.livenessProbe.httpGet.port .Values.ghost.readiness.readinessProbe.httpGet.port))}}
75+
- containerPort: {{ .Values.ghost.liveness.livenessProbe.httpGet.port }}
76+
name: probeLive
77+
protocol: TCP
78+
{{- end }}
79+
{{- end }}
80+
{{- if .Values.ghost.readiness.enabled }}
81+
{{- if or (not .Values.ghost.liveness.enabled) (and .Values.ghost.liveness.enabled (ne .Values.ghost.readiness.readinessProbe.httpGet.port .Values.ghost.liveness.livenessProbe.httpGet.port))}}
82+
- containerPort: {{ .Values.ghost.readiness.readinessProbe.httpGet.port }}
83+
name: probeReady
7584
protocol: TCP
85+
{{- end }}
86+
{{- end }}
7687
{{- if .Values.ghost.liveness.enabled }}
7788
livenessProbe:
7889
{{- toYaml .Values.ghost.liveness.livenessProbe | nindent 12 }}
@@ -82,17 +93,22 @@ spec:
8293
{{- toYaml .Values.ghost.readiness.readinessProbe | nindent 12 }}
8394
{{- end }}
8495
env:
96+
### -- WATCHDOG
97+
- name: WATCHDOG_CONFIG_REGISTRY
98+
value: {{ .Values.ghost.watchdogConfigReg | quote }}
99+
{{- if .Values.ghost.watchdogInterval }}
100+
- name: WATCHDOG_INTERVAL
101+
value: {{ .Values.ghost.watchdogInterval | quote }}
102+
- name: WATCHDOG_SCHEDULE
103+
value: ""
104+
{{- end }}
85105
### -- LIBP2P
86-
- name: CFG_LIBP2P_SUBSCRIPTION_BUFFER_SIZE
87-
value: {{ .Values.ghost.libp2pSubscriptionBufferSize | quote }}
88-
- name: CFG_LIBP2P_VALIDATE_QUEUE_SIZE
89-
value: {{ .Values.ghost.libp2pValidateQueueSize | quote }}
90106
- name: CFG_LIBP2P_LISTEN_ADDRS
91107
value: "/ip4/0.0.0.0/tcp/{{ .Values.ghost.service.ports.libp2p.port | default 8000 }}"
92108
{{- if .Values.ghost.ingress.enabled }}
93109
{{- range .Values.ghost.ingress.hosts }}
94110
- name: CFG_LIBP2P_EXTERNAL_ADDR
95-
value: "/dns/{{ .host }}"
111+
value: "/dns/{{ .host }}"
96112
{{- end }}
97113
{{- end }}
98114
### -- WEB API
@@ -111,55 +127,20 @@ spec:
111127
{{- end }}
112128
### -- CHAIN and RPC (target or main chain)
113129
- name: CFG_CHAIN_NAME
114-
value: {{ .Values.ghost.chainName | default "eth" | quote}}
130+
value: {{ .Values.ghost.chainName | default "eth" | quote }}
115131
- name: CFG_CHAIN_ID
116-
value: {{ .Values.ghost.chainId | default "1" | quote}}
117-
{{- if .Values.ghost.rpcUrl }}
132+
value: {{ .Values.ghost.chainId | default "1" | quote }}
133+
{{- if .Values.ghost.chainRpcUrl }}
134+
- name: CFG_CHAIN_RPC_URLS
135+
value: {{ .Values.ghost.chainRpcUrl | quote }}
136+
{{- else if .Values.ghost.rpcUrl }}
118137
- name: CFG_CHAIN_RPC_URLS
119138
value: {{ .Values.ghost.rpcUrl | quote }}
120139
{{- end }}
121140
{{- if .Values.ghost.chainTxType }}
122141
- name: CFG_CHAIN_TX_TYPE
123142
value: {{ .Values.ghost.chainTxType | default "eip1559" quote }}
124143
{{- end }}
125-
### -- CHAIN and RPC (source chain)
126-
{{- if .Values.ghost.arbRpcUrl }}
127-
- name: CFG_ARB_RPC_URLS
128-
value: {{ .Values.ghost.arbRpcUrl | quote }}
129-
{{- end }}
130-
{{- if .Values.ghost.bnbRpcUrl }}
131-
- name: CFG_BNB_RPC_URLS
132-
value: {{ .Values.ghost.bnbRpcUrl | quote }}
133-
{{- end }}
134-
{{- if .Values.ghost.ethRpcUrl }}
135-
- name: CFG_ETH_RPC_URLS
136-
value: {{ .Values.ghost.ethRpcUrl | quote }}
137-
{{- end }}
138-
{{- if .Values.ghost.ethArchRpcUrl }}
139-
- name: CFG_ETH_ARCH_RPC_URLS
140-
value: {{ .Values.ghost.ethArchRpcUrl | quote }}
141-
{{- end }}
142-
{{- if .Values.ghost.gnoRpcUrl }}
143-
- name: CFG_GNO_RPC_URLS
144-
value: {{ .Values.ghost.gnoRpcUrl | quote }}
145-
{{- end }}
146-
{{- if .Values.ghost.mntRpcUrl }}
147-
- name: CFG_MNT_RPC_URLS
148-
value: {{ .Values.ghost.mntRpcUrl | quote }}
149-
{{- end }}
150-
{{- if .Values.ghost.optRpcUrl }}
151-
- name: CFG_OPT_RPC_URLS
152-
value: {{ .Values.ghost.optRpcUrl | quote }}
153-
{{- end }}
154-
{{- if .Values.ghost.polRpcUrl }}
155-
- name: CFG_POL_RPC_URLS
156-
value: {{ .Values.ghost.polRpcUrl | quote }}
157-
{{- end }}
158-
### -- WATCHDOG
159-
- name: WATCHDOG_CONFIG_REGISTRY
160-
value: {{ .Values.ghost.watchdogConfigReg | quote }}
161-
- name: WATCHDOG_INTERVAL
162-
value: {{ .Values.ghost.watchdogInterval | default "900s" | quote }}
163144
### -- ETH KEYSTORE FROM EXISTING SECRET
164145
{{- if .Values.ghost.ethConfig }}
165146
- name: CFG_ETH_FROM

charts/validator/templates/role.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
apiVersion: rbac.authorization.k8s.io/v1
22
kind: Role
33
metadata:
4-
name: {{ include "validator.fullname" . }}-role
4+
name: {{ include "validator.serviceAccountName" . }}-role
5+
56
rules:
67
- apiGroups: [""]
78
resources: ["pods", "pods/log", "services"]
+4-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
apiVersion: rbac.authorization.k8s.io/v1
22
kind: RoleBinding
33
metadata:
4-
name: {{ include "validator.fullname" . }}-rolebinding
4+
name: {{ include "validator.serviceAccountName" . }}-rolebinding
55
roleRef:
66
apiGroup: rbac.authorization.k8s.io
77
kind: Role
8-
name: {{ include "validator.fullname" . }}-role
8+
name: {{ include "validator.serviceAccountName" . }}-role
9+
910
subjects:
1011
- kind: ServiceAccount
11-
name: {{ include "validator.fullname" . }}-serviceaccount
12+
name: {{ include "validator.serviceAccountName" . }}-test
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: v1
22
kind: ServiceAccount
33
metadata:
4-
name: {{ include "validator.fullname" . }}-serviceaccount
4+
name: {{ include "validator.serviceAccountName" . }}-test

charts/validator/templates/tests/test-logs.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ metadata:
88
"helm.sh/hook-weight": "5"
99
"helm.sh/hook": test
1010
spec:
11-
serviceAccountName: {{ include "validator.fullname" . }}-serviceaccount
11+
serviceAccountName: {{ include "validator.serviceAccountName" . }}-test
12+
1213
containers:
1314
- name: test-ghost-logs
1415
image: bitnami/kubectl:latest

charts/validator/templates/tor-onion-service.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ spec:
1111
number: 8888
1212
backend:
1313
service:
14-
name: ghost
14+
name: {{ include "validator.fullname" . }}
1515
port:
1616
number: {{ .Values.ghost.service.ports.webapi.port }}

0 commit comments

Comments
 (0)