Skip to content

Commit 854d876

Browse files
authored
Merge pull request #1738 from bcgov/chore/helm-migration-docs
Create migration/upgrade docs for helm
2 parents 56b1c1c + d08bb5a commit 854d876

File tree

1 file changed

+386
-0
lines changed

1 file changed

+386
-0
lines changed

docs/chart-upgrade-guide.md

Lines changed: 386 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,386 @@
1+
# Traction Helm Chart Values Migration Guide
2+
3+
This document contains information related to breaking/major changes to the Traction Helm Chart and provides guidelines for migrating/upgrading deployments to newer chart versions.
4+
5+
## 0.4.0
6+
7+
The Traction Helm chart has been refactored to use the [ACA-Py Helm chart](https://github.com/openwallet-foundation/helm-charts/tree/main/charts/acapy) from the OpenWallet Foundation as a dependency, replacing the built-in ACA-Py templates. This change improves maintainability and alignment with the broader ACA-Py community.
8+
9+
### Migration Steps
10+
11+
> [!IMPORTANT]
12+
> The following migration steps assume the upgrade target is a working deployment of Traction using version `0.3.8` of the chart. Upgrades from previous versions have not been tested.
13+
14+
#### Update Global Configuration
15+
16+
```yaml
17+
# Move ingressSuffix to global section
18+
global:
19+
ingressSuffix: -dev.example.com # Move from root level
20+
```
21+
22+
#### Update ACA-Py Image Configuration
23+
24+
```yaml
25+
acapy:
26+
image:
27+
registry: ghcr.io # Add registry field
28+
repository: bcgov/traction-plugins-acapy # Remove registry prefix
29+
# ... keep other image settings
30+
```
31+
32+
#### Update Service Port Configuration
33+
34+
```yaml
35+
acapy:
36+
service:
37+
ports:
38+
http: 8021 # Update from httpPort: 8030
39+
admin: 8022 # Update from adminPort: 8031
40+
ws: 8023 # Add websocket port if needed
41+
```
42+
43+
#### Convert Plugin Configuration
44+
45+
> [!NOTE]
46+
> Plugins are now configured directly as CLI arguments, replace the `plugins` section with `extraArgs`
47+
48+
```yaml
49+
acapy:
50+
extraArgs:
51+
- --plugin 'aries_cloudagent.messaging.jsonld'
52+
- --plugin traction_plugins.traction_innkeeper.v1_0
53+
- --plugin multitenant_provider.v1_0
54+
- --plugin basicmessage_storage.v1_0
55+
- --plugin connections
56+
- --plugin connection_update.v1_0
57+
- --plugin rpc.v1_0
58+
- --plugin webvh
59+
```
60+
61+
#### Update Secrets Configuration
62+
63+
```yaml
64+
acapy:
65+
secrets:
66+
api:
67+
retainOnUninstall: true
68+
existingSecret: "" # Update from acapy.secret.adminApiKey.existingSecret
69+
secretKeys:
70+
adminApiKey: adminApiKey
71+
jwtKey: jwt
72+
walletKey: walletKey
73+
webhookapiKey: webhookapi
74+
```
75+
76+
#### Update Multitenancy Configuration
77+
78+
```yaml
79+
acapy:
80+
argfile.yml:
81+
multitenancy-config:
82+
- wallet_type=single-wallet-askar # Simplified array format
83+
```
84+
85+
#### Remove Obsolete Configurations
86+
87+
Remove these sections from your values file:
88+
89+
- `postgresql.*`
90+
- `acapy.plugins.*`
91+
- `acapy.secret.*` (replaced with `acapy.secrets.*`)
92+
93+
#### Update UI Configuration
94+
95+
```yaml
96+
ui:
97+
pluginInnkeeper: # New section for innkeeper config
98+
existingSecret: ""
99+
smtp:
100+
existingSecret: "" # Move from root level existingSecret
101+
```
102+
103+
> [!WARNING]
104+
>
105+
> 1. **Port Changes:** The default ACA-Py service ports have changed from 8030/8031 to 8021/8022. Update any external configurations accordingly.
106+
>
107+
> 2. **Database Configuration:** PostgreSQL configuration is now handled by the ACA-Py chart dependency, not directly in the Traction chart.
108+
>
109+
> 3. **Secret Structure:** Secret configuration has been restructured. Review your secret management approach.
110+
>
111+
> 4. **Plugin Configuration:** Plugins are now configured via command-line arguments rather than a dedicated plugins section.
112+
>
113+
> 5. **Resource Configuration:** Some resource limit configurations have been simplified to requests-only in the new structure.
114+
>
115+
> 6. **Template Changes:** Since ACA-Py templates are now provided by the dependency chart, any custom template modifications will need to be reconsidered.
116+
117+
<details>
118+
119+
<summary>Detailed list of changes for 0.4.0</summary>
120+
121+
### Chart.yaml Dependencies
122+
123+
**Old Structure (v0.3.8):**
124+
125+
```yaml
126+
dependencies:
127+
- name: postgresql
128+
version: 11.9.13
129+
repository: https://charts.bitnami.com/bitnami/
130+
condition: postgresql.enabled
131+
- name: common
132+
repository: "https://charts.bitnami.com/bitnami"
133+
version: 2.x.x
134+
```
135+
136+
**New Structure (v0.4.0+):**
137+
138+
```yaml
139+
dependencies:
140+
- name: acapy
141+
version: 0.2.3
142+
repository: https://openwallet-foundation.github.io/helm-charts/
143+
- name: common
144+
repository: "https://charts.bitnami.com/bitnami"
145+
version: 2.31.3
146+
```
147+
148+
### Values.yaml Structural Changes
149+
150+
#### Global Section (NEW)
151+
152+
**New Section:**
153+
154+
```yaml
155+
global:
156+
imageRegistry: ""
157+
imagePullSecrets: []
158+
ingressSuffix: -dev.example.com
159+
defaultStorageClass: ""
160+
security:
161+
allowInsecureImages: false
162+
compatibility:
163+
openshift:
164+
adaptSecurityContext: auto
165+
```
166+
167+
**Migration Required:**
168+
169+
- Move `ingressSuffix` from root level to `global.ingressSuffix`
170+
171+
#### ACA-Py Configuration Changes
172+
173+
**Old Agent Image Configuration:**
174+
175+
```yaml
176+
acapy:
177+
image:
178+
repository: ghcr.io/bcgov/traction-plugins-acapy
179+
pullPolicy: IfNotPresent
180+
pullSecrets: []
181+
tag: ""
182+
```
183+
184+
**New Agent Image Configuration:**
185+
186+
```yaml
187+
acapy:
188+
image:
189+
registry: ghcr.io # NEW: separate registry field
190+
repository: bcgov/traction-plugins-acapy # CHANGED: no registry prefix
191+
pullPolicy: IfNotPresent
192+
pullSecrets: []
193+
tag: ""
194+
digest: "" # NEW: digest support
195+
```
196+
197+
#### Configuration Files
198+
199+
**Removed Sections:**
200+
201+
- `acapy.argfile.yml.label` (now handled automatically)
202+
- `acapy.plugins.*` (replaced with `extraArgs`)
203+
204+
**New/Changed Sections:**
205+
206+
```yaml
207+
acapy:
208+
argfile.yml:
209+
# REMOVED: genesis-transactions-list: /home/aries/ledgers.yml
210+
# REMOVED: label: '{{ include "acapy.label" .}}'
211+
multitenancy-config: # NEW: array format instead of complex config
212+
- wallet_type=single-wallet-askar
213+
webhook-url: "" # NEW: explicit webhook URL field
214+
```
215+
216+
#### Plugin Configuration Changes
217+
218+
**Old Structure:**
219+
220+
```yaml
221+
acapy:
222+
plugins:
223+
basicmessageStorage: true
224+
connectionUpdate: true
225+
multitenantProvider: true
226+
tractionInnkeeper: true
227+
rpc: true
228+
```
229+
230+
**New Structure:**
231+
232+
```yaml
233+
acapy:
234+
extraArgs: # Plugins now configured directly as CLI arguments
235+
- --plugin 'aries_cloudagent.messaging.jsonld'
236+
- --plugin traction_plugins.traction_innkeeper.v1_0
237+
- --plugin-config-value traction_innkeeper.innkeeper_wallet.tenant_id="$(INNKEEPER_WALLET_TENANT_ID)"
238+
- --plugin-config-value traction_innkeeper.innkeeper_wallet.wallet_key="$(INNKEEPER_WALLET_WALLET_KEY)"
239+
- --plugin multitenant_provider.v1_0
240+
- --plugin basicmessage_storage.v1_0
241+
- --plugin connections
242+
- --plugin connection_update.v1_0
243+
- --plugin rpc.v1_0
244+
- --plugin webvh
245+
```
246+
247+
#### Service Configuration
248+
249+
**Old Structure:**
250+
251+
```yaml
252+
acapy:
253+
service:
254+
type: ClusterIP
255+
adminPort: 8031
256+
httpPort: 8030
257+
```
258+
259+
**New Structure:**
260+
261+
```yaml
262+
acapy:
263+
service:
264+
ports:
265+
http: 8021 # CHANGED: port number and structure
266+
admin: 8022 # CHANGED: port number and structure
267+
ws: 8023 # NEW: websocket port
268+
```
269+
270+
#### Secrets Configuration
271+
272+
**Old Structure:**
273+
274+
```yaml
275+
acapy:
276+
secret:
277+
adminApiKey:
278+
existingSecret: ""
279+
generated: true
280+
value: ""
281+
walletKey:
282+
existingSecret: ""
283+
pluginInnkeeper:
284+
existingSecret: ""
285+
generated: true
286+
walletkey: ""
287+
tenantid: ""
288+
```
289+
290+
**New Structure:**
291+
292+
```yaml
293+
acapy:
294+
secrets:
295+
api:
296+
retainOnUninstall: true
297+
existingSecret: ""
298+
secretKeys:
299+
adminApiKey: adminApiKey
300+
jwtKey: jwt
301+
walletKey: walletKey
302+
webhookapiKey: webhookapi
303+
seed:
304+
enabled: false
305+
```
306+
307+
#### Network and Ingress Changes
308+
309+
**New Additions:**
310+
311+
```yaml
312+
acapy:
313+
ingress: # NEW: ACA-Py specific ingress (disabled by default)
314+
agent:
315+
enabled: false
316+
hostname: ""
317+
admin:
318+
enabled: false
319+
hostname: ""
320+
321+
agentUrl: "" # NEW: override URLs
322+
adminUrl: "" # NEW: override URLs
323+
324+
extraEnvVars: [] # NEW: environment variables
325+
extraEnvVarsCM: "" # NEW: ConfigMap for env vars
326+
extraEnvVarsSecret: "" # NEW: Secret for env vars
327+
328+
websockets: # NEW: WebSocket support
329+
enabled: false
330+
```
331+
332+
#### Removed Sections
333+
334+
**Sections No Longer Available:**
335+
336+
- `acapy.persistence.*` (handled by ACA-Py chart)
337+
- `acapy.openshift.adminRoute.*` (simplified routing)
338+
- Most resource limit configurations (now use requests only)
339+
340+
### 3. Tenant UI Configuration Changes
341+
342+
#### SMTP Configuration Changes
343+
344+
**Old Structure:**
345+
346+
```yaml
347+
ui:
348+
existingSecret: "" # Root level secret
349+
smtp:
350+
# ... smtp config
351+
```
352+
353+
**New Structure:**
354+
355+
```yaml
356+
ui:
357+
pluginInnkeeper: # NEW: separate innkeeper config
358+
existingSecret: ""
359+
smtp:
360+
existingSecret: "" # NEW: SMTP-specific secret
361+
# ... smtp config
362+
```
363+
364+
#### New UI Features
365+
366+
**New Sections:**
367+
368+
```yaml
369+
ui:
370+
showOIDCReservationLogin: false # NEW: OIDC reservation login
371+
lokiUrl: "" # NEW: Loki logging endpoint
372+
```
373+
374+
### 4. PostgreSQL Removal
375+
376+
**Major Change:** The PostgreSQL subchart dependency has been removed. Database configuration is now handled through the ACA-Py chart dependency.
377+
378+
**Removed Section:**
379+
380+
```yaml
381+
postgresql:
382+
enabled: true
383+
# ... entire postgresql configuration
384+
```
385+
386+
</details>

0 commit comments

Comments
 (0)