Skip to content

Commit 78b6504

Browse files
armrumnencia
authored andcommitted
doc: review
Signed-off-by: Armando Ruocco <[email protected]>
1 parent 27d073a commit 78b6504

File tree

2 files changed

+71
-59
lines changed

2 files changed

+71
-59
lines changed

web/docs/resource-name-migration.md

Lines changed: 65 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ sidebar_position: 41
88

99
:::warning
1010
Before running the migration script or applying the manifest, please:
11-
1. **Review the complete manifest** on the [Migration Manifest](migration-manifest.md) page to understand what changes will be made
11+
1. **Review the complete manifest** at [migration-rbac.yaml](/migration-rbac.yaml) to understand what changes will be made
1212
2. **Test in a non-production environment** first if possible
1313
3. **Ensure you have proper backups** of your cluster configuration
14-
4. **Verify the resource names match** your current installation (default namespace is `cnpg-system`)
1514

1615
This migration will delete old RBAC resources and create new ones. While the operation is designed to be safe, you should review and understand the changes before proceeding. The maintainers of this project are not responsible for any issues that may arise during migration.
16+
17+
**Note:** This guide assumes you are using the default `cnpg-system` namespace.
1718
:::
1819

1920
## Overview
@@ -50,26 +51,16 @@ Using generic names for cluster-wide resources is discouraged as they may confli
5051
The migration process is straightforward and can be completed with a few kubectl commands.
5152

5253
:::danger Verify Resources Before Deletion
53-
**IMPORTANT**: The old resource names are generic and could potentially belong to other components in your cluster. Before deleting, verify they belong to the barman plugin by checking their labels:
54+
**IMPORTANT**: The old resource names are generic and could potentially belong to other components in your cluster.
5455

55-
```bash
56-
# Check if the resources have the barman plugin labels
57-
kubectl get clusterrole metrics-auth-role -o yaml | grep -A 5 "labels:"
58-
kubectl get clusterrole metrics-reader -o yaml | grep -A 5 "labels:"
59-
kubectl get clusterrole objectstore-viewer-role -o yaml | grep -A 5 "labels:"
60-
kubectl get clusterrole objectstore-editor-role -o yaml | grep -A 5 "labels:"
61-
kubectl get clusterrolebinding metrics-auth-rolebinding -o yaml | grep -A 5 "labels:"
62-
```
56+
**Before deleting each resource, verify it belongs to the barman plugin by checking:**
57+
- For `objectstore-*` roles: Look for `barmancloud.cnpg.io` in the API groups
58+
- For `metrics-*` roles: Check if they reference the `plugin-barman-cloud` ServiceAccount in `cnpg-system` namespace
59+
- For other roles: Look for labels like `app.kubernetes.io/name: plugin-barman-cloud`
6360

64-
Look for labels like `app.kubernetes.io/name: plugin-barman-cloud` or references to `barmancloud.cnpg.io` in the rules. If the resources don't have these indicators, **DO NOT DELETE THEM** as they may belong to another application.
61+
If a resource doesn't have these indicators, **DO NOT DELETE IT** as it may belong to another application.
6562

66-
If you're unsure, you can also check what the resources manage:
67-
```bash
68-
kubectl get clusterrole objectstore-viewer-role -o yaml
69-
kubectl get clusterrole objectstore-editor-role -o yaml
70-
```
71-
72-
These should reference `barmancloud.cnpg.io` API groups. If they don't, they are not barman plugin resources.
63+
In Step 1 below, carefully review the output of each verification command before proceeding with the delete.
7364
:::
7465

7566
:::tip Dry Run First
@@ -80,55 +71,91 @@ You can add `--dry-run=client` to any `kubectl delete` command to preview what w
8071

8172
**Only proceed if you've verified these resources belong to the barman plugin (see warning above).**
8273

74+
For each resource below, first verify it belongs to barman, then delete it:
75+
8376
```bash
84-
# Only delete if this belongs to barman plugin (check labels first)
85-
kubectl delete clusterrole metrics-auth-role
77+
# 1. Check metrics-auth-rolebinding FIRST (we'll check the role after)
78+
# Look for references to plugin-barman-cloud ServiceAccount
79+
kubectl describe clusterrolebinding metrics-auth-rolebinding
80+
# If it references plugin-barman-cloud ServiceAccount in cnpg-system namespace, delete it:
81+
kubectl delete clusterrolebinding metrics-auth-rolebinding
8682

87-
# Only delete if this belongs to barman plugin (check labels first)
88-
kubectl delete clusterrole metrics-reader
83+
# 2. Check metrics-auth-role
84+
# Look for references to authentication.k8s.io and authorization.k8s.io
85+
kubectl describe clusterrole metrics-auth-role
86+
# Verify it's not being used by any other rolebindings:
87+
kubectl get clusterrolebinding -o json | jq -r '.items[] | select(.roleRef.name=="metrics-auth-role") | .metadata.name'
88+
# If the above returns nothing (role is not in use) and the role looks like the barman one, delete it (see warnings section):
89+
kubectl delete clusterrole metrics-auth-role
8990

90-
# Only delete if this belongs to barman plugin (check labels first)
91+
# 3. Check objectstore-viewer-role
92+
# Look for barmancloud.cnpg.io API group or app.kubernetes.io/name: plugin-barman-cloud label
93+
kubectl describe clusterrole objectstore-viewer-role
94+
# If it shows barmancloud.cnpg.io in API groups, delete it:
9195
kubectl delete clusterrole objectstore-viewer-role
9296

93-
# Only delete if this belongs to barman plugin (check labels first)
97+
# 4. Check objectstore-editor-role
98+
# Look for barmancloud.cnpg.io API group or app.kubernetes.io/name: plugin-barman-cloud label
99+
kubectl describe clusterrole objectstore-editor-role
100+
# If it shows barmancloud.cnpg.io in API groups, delete it:
94101
kubectl delete clusterrole objectstore-editor-role
95102

96-
# Only delete if this belongs to barman plugin (check labels first)
97-
kubectl delete clusterrolebinding metrics-auth-rolebinding
103+
# 5. Check metrics-reader (MOST DANGEROUS - very generic name)
104+
# First, check if it's being used by any rolebindings OTHER than barman's:
105+
kubectl get clusterrolebinding -o json | jq -r '.items[] | select(.roleRef.name=="metrics-reader") | "\(.metadata.name) -> \(.subjects[0].name) in \(.subjects[0].namespace)"'
106+
# If this shows ANY rolebindings, review them carefully. Only proceed if they're all barman-related.
107+
# Then check the role itself:
108+
kubectl describe clusterrole metrics-reader
109+
# If it ONLY has nonResourceURLs: /metrics and NO other rolebindings use it, delete it:
110+
kubectl delete clusterrole metrics-reader
98111
```
99112

100-
If any resource is not found, that's okay - it means it was never created or already deleted.
113+
:::warning
114+
The `metrics-reader` role is particularly dangerous to delete blindly. Many monitoring systems use this exact name. Only delete it if:
115+
1. You've verified it ONLY grants access to `/metrics`
116+
2. No other rolebindings reference it (checked with the jq command above)
117+
3. You're certain it was created by the barman plugin
118+
119+
If you're unsure, it's safer to leave it and let the new `barman-plugin-metrics-reader` role coexist with it.
120+
:::
121+
122+
If any resource is not found during the `describe` command, that's okay - it means it was never created or already deleted. Simply skip the delete command for that resource.
101123

102124
### Step 2: Delete Old Namespace-scoped Resources
103125

104-
These are less likely to conflict, but you should still verify they're in the correct namespace. Replace `cnpg-system` with your namespace if different:
126+
Delete the old namespace-scoped resources in the `cnpg-system` namespace:
105127

106128
```bash
107-
# First, verify these exist in your namespace
108-
kubectl get role leader-election-role -n cnpg-system
109-
kubectl get rolebinding leader-election-rolebinding -n cnpg-system
110-
111-
# Then delete them
129+
# Delete the old leader-election resources
112130
kubectl delete role leader-election-role -n cnpg-system
113131
kubectl delete rolebinding leader-election-rolebinding -n cnpg-system
114132
```
115133

134+
If any resource is not found, that's okay - it means it was never created or already deleted.
135+
116136
### Step 3: Apply the New RBAC Manifest
117137

118138
Download and apply the new manifest with the updated resource names:
119139

120140
```bash
121-
kubectl apply -f https://cloudnative-pg.io/plugin-barman-cloud/migration-rbac.yaml -n cnpg-system
141+
kubectl apply -f https://cloudnative-pg.io/plugin-barman-cloud/migration-rbac.yaml
122142
```
123143

124-
Alternatively, you can copy the complete YAML from the [Migration Manifest](migration-manifest.md) page, save it to a file, and apply it locally:
144+
Alternatively, you can download the [migration-rbac.yaml](/migration-rbac.yaml) file and review it locally before applying:
125145

126146
```bash
127-
kubectl apply -f barman-rbac-new.yaml -n cnpg-system
147+
# Download the file
148+
curl -O https://cloudnative-pg.io/plugin-barman-cloud/migration-rbac.yaml
149+
150+
# Review it
151+
cat migration-rbac.yaml
152+
153+
# Apply it
154+
kubectl apply -f migration-rbac.yaml
128155
```
129156

130157
:::info
131-
The new manifest will create all RBAC resources with the `barman-plugin-` prefix. Review the [Migration Manifest](migration-manifest.md) page to see exactly what will be created.
158+
The new manifest will create all RBAC resources with the `barman-plugin-` prefix in the `cnpg-system` namespace. You can review the complete YAML at [migration-rbac.yaml](/migration-rbac.yaml).
132159
:::
133160

134161
## Impact
@@ -170,20 +197,6 @@ If the plugin fails to start after migration, check:
170197
kubectl describe clusterrolebinding barman-plugin-metrics-auth-rolebinding
171198
```
172199

173-
### Old Resources Still Present
174-
175-
If old resources weren't deleted properly, you can force delete them:
176-
177-
```bash
178-
kubectl delete clusterrole metrics-auth-role --ignore-not-found
179-
kubectl delete clusterrole metrics-reader --ignore-not-found
180-
kubectl delete clusterrole objectstore-viewer-role --ignore-not-found
181-
kubectl delete clusterrole objectstore-editor-role --ignore-not-found
182-
kubectl delete clusterrolebinding metrics-auth-rolebinding --ignore-not-found
183-
kubectl delete role leader-election-role -n cnpg-system --ignore-not-found
184-
kubectl delete rolebinding leader-election-rolebinding -n cnpg-system --ignore-not-found
185-
```
186-
187200
## Support
188201

189202
If you encounter issues during migration, please open an issue on the [GitHub repository](https://github.com/cloudnative-pg/plugin-barman-cloud/issues).

web/static/migration-rbac.yaml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
# This manifest contains the RBAC resources for the plugin-barman-cloud migration.
22
#
3-
# IMPORTANT: This manifest should be applied with the namespace flag:
4-
# kubectl apply -f migration-rbac.yaml -n cnpg-system
5-
#
6-
# If you are using a different namespace, replace 'cnpg-system' with your namespace.
7-
# The namespace-scoped resources (ServiceAccount, Role, RoleBinding) will be created
8-
# in the namespace you specify, while cluster-scoped resources (ClusterRole, ClusterRoleBinding)
9-
# will be created globally but will reference the ServiceAccount in your specified namespace.
3+
# This manifest is configured for the 'cnpg-system' namespace.
4+
# Simply apply it with:
5+
# kubectl apply -f migration-rbac.yaml
106
#
117
apiVersion: v1
128
kind: ServiceAccount
@@ -15,6 +11,7 @@ metadata:
1511
app.kubernetes.io/managed-by: kustomize
1612
app.kubernetes.io/name: plugin-barman-cloud
1713
name: plugin-barman-cloud
14+
namespace: cnpg-system
1815
---
1916
apiVersion: rbac.authorization.k8s.io/v1
2017
kind: Role
@@ -23,6 +20,7 @@ metadata:
2320
app.kubernetes.io/managed-by: kustomize
2421
app.kubernetes.io/name: plugin-barman-cloud
2522
name: barman-plugin-leader-election-role
23+
namespace: cnpg-system
2624
rules:
2725
- apiGroups:
2826
- ""
@@ -209,6 +207,7 @@ metadata:
209207
app.kubernetes.io/managed-by: kustomize
210208
app.kubernetes.io/name: plugin-barman-cloud
211209
name: barman-plugin-leader-election-rolebinding
210+
namespace: cnpg-system
212211
roleRef:
213212
apiGroup: rbac.authorization.k8s.io
214213
kind: Role

0 commit comments

Comments
 (0)