Skip to content

Commit 94f0d80

Browse files
committed
Vale still smells
Signed-off-by: Nic Cope <[email protected]>
1 parent 3da9a37 commit 94f0d80

File tree

2 files changed

+75
-9
lines changed

2 files changed

+75
-9
lines changed

content/master/managed-resources/managed-resource-activation-policies.md

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,22 @@ description: ManagedResourceActivationPolicies control which ManagedResourceDefi
77
---
88

99
{{<hint "important">}}
10-
Managed resource activation policies work with [managed resource definitions]({{<ref "managed-resource-definitions">}}), which are enabled by default in Crossplane v2.0+. To disable this behavior, set `--enable-custom-to-managed-resource-conversion=false` when installing Crossplane.
10+
Managed resource activation policies work with [managed resource definitions]({{<ref "managed-resource-definitions">}}), which Crossplane v2.0+ enables by default. To disable this behavior, set `--enable-custom-to-managed-resource-conversion=false` when installing Crossplane.
1111
{{</hint>}}
1212

1313
A `ManagedResourceActivationPolicy` (MRAP) controls which [ManagedResourceDefinitions]({{<ref "managed-resource-definitions">}}) become active in your cluster. MRAPs enable selective installation of provider resources, allowing you to activate only the 10 managed resources you need instead of the 100+ that a provider ships.
1414

1515
## The selective activation problem
1616

17-
Modern Crossplane providers can ship dozens or hundreds of managed resources, but most users only need a small subset. Before MRAPs, it was "all or nothing" - installing a provider meant getting every managed resource it supported, consuming unnecessary cluster resources.
17+
Modern Crossplane providers can ship dozens or hundreds of managed resources, but most users only need a small subset. Before MRAPs, you got "all or nothing" - installing a provider meant getting every managed resource it supported, consuming unnecessary cluster resources.
1818

19-
MRAPs solve this by providing pattern-based activation of ManagedResourceDefinitions, letting you choose exactly which provider resources to enable.
19+
MRAPs solve this by providing pattern-based activation of ManagedResourceDefinitions, letting you choose which provider resources to enable.
2020

21+
<!-- vale Google.Headings = NO -->
22+
<!-- vale Microsoft.HeadingAcronyms = NO -->
2123
## How MRAPs work
24+
<!-- vale Microsoft.HeadingAcronyms = YES -->
25+
<!-- vale Google.Headings = YES -->
2226

2327
MRAPs contain activation patterns that match ManagedResourceDefinition names. When you create or update an MRAP, Crossplane:
2428

@@ -45,7 +49,7 @@ When you apply this MRAP, Crossplane activates the specified S3 Bucket, RDS Inst
4549

4650
- **Pattern-based matching**: Use wildcards to activate groups of resources
4751
- **Multiple policy support**: Different MRAPs can activate different resource sets
48-
- **Status tracking**: See exactly which resources each policy activated
52+
- **Status tracking**: See which resources each policy activated
4953
- **Automatic activation**: New MRDs matching existing patterns activate automatically
5054

5155
## Pattern matching
@@ -75,7 +79,7 @@ spec:
7579
```
7680

7781
{{<hint "important">}}
78-
MRAPs use prefix-only wildcards, not full regular expressions. Only `*` at the beginning of a pattern is supported (e.g., `*.s3.aws.crossplane.io`). Patterns like `s3.*.aws.crossplane.io` or `*.s3.*` are not valid.
82+
MRAPs use prefix-only wildcards, not full regular expressions. Only `*` at the beginning of a pattern works (for example, `*.s3.aws.crossplane.io`). Patterns like `s3.*.aws.crossplane.io` or `*.s3.*` aren't valid.
7983
{{</hint>}}
8084

8185
{{<hint "tip">}}
@@ -165,7 +169,11 @@ spec:
165169
- databases.rds.aws.crossplane.io # Just RDS databases
166170
```
167171

172+
<!-- vale Google.Headings = NO -->
173+
<!-- vale Microsoft.HeadingAcronyms = NO -->
168174
## Multiple MRAPs
175+
<!-- vale Microsoft.HeadingAcronyms = YES -->
176+
<!-- vale Google.Headings = YES -->
169177

170178
You can have multiple MRAPs in your cluster. Crossplane processes all MRAPs together and activates any MRD that matches at least one pattern.
171179

@@ -213,17 +221,29 @@ spec:
213221
- certificates.acm.aws.crossplane.io # For HTTPS
214222
```
215223

224+
<!-- vale Google.Headings = NO -->
225+
<!-- vale Microsoft.HeadingAcronyms = NO -->
216226
## Working with MRAPs
227+
<!-- vale Microsoft.HeadingAcronyms = YES -->
228+
<!-- vale Google.Headings = YES -->
217229

230+
<!-- vale Google.Headings = NO -->
231+
<!-- vale Microsoft.HeadingAcronyms = NO -->
218232
### Creating MRAPs
233+
<!-- vale Microsoft.HeadingAcronyms = YES -->
234+
<!-- vale Google.Headings = YES -->
219235

220236
Apply an MRAP like any Kubernetes resource:
221237

222238
```shell
223239
kubectl apply -f my-activation-policy.yaml
224240
```
225241

242+
<!-- vale Google.Headings = NO -->
243+
<!-- vale Microsoft.HeadingAcronyms = NO -->
226244
### Viewing MRAPs
245+
<!-- vale Microsoft.HeadingAcronyms = YES -->
246+
<!-- vale Google.Headings = YES -->
227247

228248
List all MRAPs:
229249

@@ -256,18 +276,34 @@ status:
256276
- vpcs.ec2.aws.crossplane.io
257277
```
258278

279+
<!-- vale Google.Headings = NO -->
280+
<!-- vale Microsoft.HeadingAcronyms = NO -->
259281
## MRAP status conditions
282+
<!-- vale Microsoft.HeadingAcronyms = YES -->
283+
<!-- vale Google.Headings = YES -->
260284

261285
### Healthy condition
262286

263-
- **`Healthy: True, Reason: Running`**: MRAP is working correctly
287+
<!-- vale write-good.Weasel = NO -->
288+
- **`Healthy: True, Reason: Running`**: MRAP works correctly
289+
<!-- vale write-good.Weasel = YES -->
264290
- **`Healthy: Unknown, Reason: EncounteredErrors`**: Some MRDs failed to activate
265291

292+
<!-- vale Google.Headings = NO -->
293+
<!-- vale Microsoft.HeadingAcronyms = NO -->
266294
## Troubleshooting MRAPs
295+
<!-- vale Microsoft.HeadingAcronyms = YES -->
296+
<!-- vale Google.Headings = YES -->
267297

298+
<!-- vale Google.Headings = NO -->
299+
<!-- vale Microsoft.HeadingAcronyms = NO -->
268300
### MRAP exists but resources aren't activated
301+
<!-- vale Microsoft.HeadingAcronyms = YES -->
302+
<!-- vale Google.Headings = YES -->
269303

304+
<!-- vale Google.Colons = NO -->
270305
**Symptoms**: MRAP shows `activated: []` or missing expected resources
306+
<!-- vale Google.Colons = YES -->
271307

272308
**Causes and solutions:**
273309

@@ -282,7 +318,9 @@ status:
282318

283319
2. **MRDs don't exist yet**
284320
- Install the required provider first
285-
- MRDs are created when providers start
321+
- <!-- vale write-good.Passive = NO -->
322+
Providers create MRDs when they start
323+
<!-- vale write-good.Passive = YES -->
286324

287325
3. **Provider doesn't support activation**
288326
```shell
@@ -291,9 +329,15 @@ status:
291329
# Look for "safe-start"
292330
```
293331

332+
<!-- vale Google.Headings = NO -->
333+
<!-- vale Microsoft.HeadingAcronyms = NO -->
294334
### MRAP shows activation errors
335+
<!-- vale Microsoft.HeadingAcronyms = YES -->
336+
<!-- vale Google.Headings = YES -->
295337

338+
<!-- vale Google.Colons = NO -->
296339
**Symptoms**: MRAP has `Healthy: Unknown` status with errors
340+
<!-- vale Google.Colons = YES -->
297341

298342
**Status condition example:**
299343

@@ -305,20 +349,32 @@ conditions:
305349
message: "failed to activate 2 of 5 ManagedResourceDefinitions"
306350
```
307351

352+
<!-- vale Google.Colons = NO -->
308353
**Solution**: Check MRAP events for specific failure details:
354+
<!-- vale Google.Colons = YES -->
309355

310356
```shell
311357
kubectl describe mrap <name>
312358
# Look at the Events section for activation errors
313359
```
314360

315-
### Resources activate unexpectedly
361+
### <!-- vale Microsoft.Adverbs = NO -->
362+
<!-- vale write-good.Weasel = NO -->
363+
Resources activate unexpectedly
364+
<!-- vale write-good.Weasel = YES -->
365+
<!-- vale Microsoft.Adverbs = YES -->
316366

367+
<!-- vale Google.Colons = NO -->
317368
**Symptoms**: More resources are active than expected
369+
<!-- vale Google.Colons = YES -->
318370

371+
<!-- vale Google.Colons = NO -->
319372
**Cause**: Multiple MRAPs with overlapping patterns (this is normal behavior)
373+
<!-- vale Google.Colons = YES -->
320374

375+
<!-- vale Google.Colons = NO -->
321376
**Solution**: Review all MRAP patterns to understand which policies are activating which resources
377+
<!-- vale Google.Colons = YES -->
322378

323379
```shell
324380
# List all MRAP activation patterns
@@ -333,10 +389,12 @@ kubectl get mrap -o jsonpath='{range .items[*]}{.metadata.name}: {.status.activa
333389
MRAPs are additive - multiple MRAPs can activate the same resource without conflicts. This enables team-based activation strategies and Configuration package dependencies.
334390

335391
1. **Start specific, broaden as needed** - Begin with exact resource names, add wildcards only when beneficial for maintainability
336-
2. **Plan for provider evolution** - Design wildcard patterns that accommodate new resources as providers add them (e.g., `*.s3.aws.crossplane.io` works for future S3 resources)
392+
2. **Plan for provider evolution** - Design wildcard patterns that accommodate new resources as providers add them (for example, `*.s3.aws.crossplane.io` works for future S3 resources)
337393
3. **Group related resources logically** - Create MRAPs that activate resources teams actually use together
338394
4. **Include activation dependencies in Configuration packages** - Configuration packages should declare what MRDs they need rather than assuming resources are available
395+
<!-- vale alex.ProfanityUnlikely = NO -->
339396
5. **Use conservative patterns in shared environments** - Avoid overly broad wildcards that activate unnecessary resources when multiple teams share providers
397+
<!-- vale alex.ProfanityUnlikely = YES -->
340398

341399
## Next steps
342400

utils/vale/styles/Crossplane/spelling-exceptions.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@ one-time
4848
One-time
4949
one-way
5050
Operation-level
51+
pattern-based
52+
Pattern-based
53+
prefix-only
54+
Provider-specific
55+
safe-start
56+
Service-specific
57+
Team-based
58+
team-based
5159
per-element
5260
performant
5361
per-object

0 commit comments

Comments
 (0)