nats chart provisoning
This commit is contained in:
155
opencloud/charts/nats/UPGRADING.md
Normal file
155
opencloud/charts/nats/UPGRADING.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# Upgrading from 0.x to 1.x
|
||||
|
||||
Instructions for upgrading an existing `nats` 0.x release to 1.x.
|
||||
|
||||
## Rename Immutable Fields
|
||||
|
||||
There are a number of immutable fields in the NATS Stateful Set and NATS Box deployment. All 1.x `values.yaml` files targeting an existing 0.x release will require some or all of these settings:
|
||||
|
||||
```yaml
|
||||
config:
|
||||
# required if using JetStream file storage
|
||||
jetstream:
|
||||
# uncomment the next line if using JetStream file storage
|
||||
# enabled: true
|
||||
fileStore:
|
||||
pvc:
|
||||
name:
|
||||
$tplYaml: >-
|
||||
{{ include "nats.fullname" . }}-js-pvc
|
||||
# set other PVC options here to make it match 0.x, refer to values.yaml for schema
|
||||
|
||||
# required if using a full or cache resolver
|
||||
resolver:
|
||||
# uncomment the next line if using a full or cache resolver
|
||||
# enabled: true
|
||||
pvc:
|
||||
name: nats-jwt-pvc
|
||||
# set other PVC options here to make it match 0.x, refer to values.yaml for schema
|
||||
|
||||
# required
|
||||
statefulSet:
|
||||
patch:
|
||||
- op: remove
|
||||
path: /spec/selector/matchLabels/app.kubernetes.io~1component
|
||||
- $tplYamlSpread: |-
|
||||
{{- if and
|
||||
.Values.config.jetstream.enabled
|
||||
.Values.config.jetstream.fileStore.enabled
|
||||
.Values.config.jetstream.fileStore.pvc.enabled
|
||||
.Values.config.resolver.enabled
|
||||
.Values.config.resolver.pvc.enabled
|
||||
}}
|
||||
- op: move
|
||||
from: /spec/volumeClaimTemplates/0
|
||||
path: /spec/volumeClaimTemplates/1
|
||||
{{- else}}
|
||||
[]
|
||||
{{- end }}
|
||||
|
||||
# required
|
||||
headlessService:
|
||||
name:
|
||||
$tplYaml: >-
|
||||
{{ include "nats.fullname" . }}
|
||||
|
||||
# required unless 0.x values explicitly set nats.serviceAccount.create=false
|
||||
serviceAccount:
|
||||
enabled: true
|
||||
|
||||
# required to use new ClusterIP service for Clients accessing NATS
|
||||
# if using TLS, this may require adding another SAN
|
||||
service:
|
||||
# uncomment the next line to disable the new ClusterIP service
|
||||
# enabled: false
|
||||
name:
|
||||
$tplYaml: >-
|
||||
{{ include "nats.fullname" . }}-svc
|
||||
|
||||
# required if using NatsBox
|
||||
natsBox:
|
||||
deployment:
|
||||
patch:
|
||||
- op: replace
|
||||
path: /spec/selector/matchLabels
|
||||
value:
|
||||
app: nats-box
|
||||
- op: add
|
||||
path: /spec/template/metadata/labels/app
|
||||
value: nats-box
|
||||
```
|
||||
|
||||
## Update NATS Config to new values.yaml schema
|
||||
|
||||
Most values that control the NATS Config have changed and moved under the `config` key. Refer to the 1.x Chart's [values.yaml](values.yaml) for the complete schema.
|
||||
|
||||
After migrating to the new values schema, ensure that changes you expect in the NATS Config files match by templating the old and new config files.
|
||||
|
||||
Template your old 0.x Config Map, this example uses a file called `values-old.yaml`:
|
||||
|
||||
```sh
|
||||
helm template \
|
||||
--version "0.x" \
|
||||
-f values-old.yaml \
|
||||
-s templates/configmap.yaml \
|
||||
nats \
|
||||
nats/nats
|
||||
```
|
||||
|
||||
Template your new 1.x Config Map, this example uses a file called `values.yaml`:
|
||||
|
||||
```sh
|
||||
helm template \
|
||||
--version "^1-beta" \
|
||||
-f values.yaml \
|
||||
-s templates/config-map.yaml \
|
||||
nats \
|
||||
nats/nats
|
||||
```
|
||||
|
||||
## Update Kubernetes Resources to new values.yaml schema
|
||||
|
||||
Most values that control Kubernetes Resources have been changed. Refer to the 1.x Chart's [values.yaml](values.yaml) for the complete schema.
|
||||
|
||||
After migrating to the new values schema, ensure that changes you expect in resources match by templating the old and new resources.
|
||||
|
||||
| Resource | 0.x Template File | 1.x Template File |
|
||||
|-------------------------|---------------------------------|-------------------------------------------|
|
||||
| Config Map | `templates/configmap.yaml` | `templates/config-map.yaml` |
|
||||
| Stateful Set | `templates/statefulset.yaml` | `templates/stateful-set.yaml` |
|
||||
| Headless Service | `templates/service.yaml` | `templates/headless-service.yaml` |
|
||||
| ClusterIP Service | N/A | `templates/service.yaml` |
|
||||
| Network Policy | `templates/networkpolicy.yaml` | N/A |
|
||||
| Pod Disruption Budget | `templates/pdb.yaml` | `templates/pod-disruption-budget.yaml` |
|
||||
| Service Account | `templates/rbac.yaml` | `templates/service-account.yaml` |
|
||||
| Resource | `templates/` | `templates/` |
|
||||
| Resource | `templates/` | `templates/` |
|
||||
| Prometheus Monitor | `templates/serviceMonitor.yaml` | `templates/pod-monitor.yaml` |
|
||||
| NatsBox Deployment | `templates/nats-box.yaml` | `templates/nats-box/deployment.yaml` |
|
||||
| NatsBox Service Account | N/A | `templates/nats-box/service-account.yaml` |
|
||||
| NatsBox Contents Secret | N/A | `templates/nats-box/contents-secret.yaml` |
|
||||
| NatsBox Contexts Secret | N/A | `templates/nats-box/contexts-secret.yaml` |
|
||||
|
||||
For example, to check that the Stateful Set matches:
|
||||
|
||||
Template your old 0.x Stateful Set, this example uses a file called `values-old.yaml`:
|
||||
|
||||
```sh
|
||||
helm template \
|
||||
--version "0.x" \
|
||||
-f values-old.yaml \
|
||||
-s templates/statefulset.yaml \
|
||||
nats \
|
||||
nats/nats
|
||||
```
|
||||
|
||||
Template your new 1.x Stateful Set, this example uses a file called `values.yaml`:
|
||||
|
||||
```sh
|
||||
helm template \
|
||||
--version "^1-beta" \
|
||||
-f values.yaml \
|
||||
-s templates/stateful-set.yaml \
|
||||
nats \
|
||||
nats/nats
|
||||
```
|
||||
Reference in New Issue
Block a user