|
6 | 6 | from typing import Dict, List, Tuple, Any |
7 | 7 | import re |
8 | 8 |
|
| 9 | +CERT_MANAGER_KUBEFLOW_RESOURCES = { |
| 10 | + ("ClusterIssuer", "kubeflow-self-signing-issuer"), |
| 11 | + ("NetworkPolicy", "cert-manager-webhook"), |
| 12 | + ("NetworkPolicy", "default-allow-same-namespace-cert-manager"), |
| 13 | +} |
| 14 | + |
| 15 | +CERT_MANAGER_KUBEFLOW_LABELS = { |
| 16 | + "app.kubernetes.io/component", |
| 17 | + "app.kubernetes.io/name", |
| 18 | +} |
| 19 | + |
9 | 20 | def load_manifests(file_path: str) -> List[Dict]: |
10 | 21 | """Load YAML manifests from file.""" |
11 | 22 | with open(file_path, 'r') as f: |
@@ -110,6 +121,9 @@ def normalize_manifest(manifest: Dict, component: str = "katib") -> Dict: |
110 | 121 |
|
111 | 122 | # Clean Helm-specific metadata |
112 | 123 | normalized = clean_helm_metadata(normalized, component) |
| 124 | + |
| 125 | + if component == "cert-manager": |
| 126 | + preserve_cert_manager_kubeflow_labels(manifest, normalized) |
113 | 127 |
|
114 | 128 | # Normalize Kustomize hash references |
115 | 129 | normalized = normalize_kustomize_refs(normalized) |
@@ -158,6 +172,24 @@ def remove_empty_values(obj): |
158 | 172 |
|
159 | 173 | return remove_empty_values(normalized) |
160 | 174 |
|
| 175 | +def preserve_cert_manager_kubeflow_labels(original: Dict, normalized: Dict) -> None: |
| 176 | + """Keep labels that are intentionally added by cert-manager's Kubeflow overlay.""" |
| 177 | + kind = original.get("kind", "") |
| 178 | + name = original.get("metadata", {}).get("name", "") |
| 179 | + |
| 180 | + if (kind, name) not in CERT_MANAGER_KUBEFLOW_RESOURCES: |
| 181 | + return |
| 182 | + |
| 183 | + labels = original.get("metadata", {}).get("labels", {}) |
| 184 | + preserved_labels = { |
| 185 | + key: value |
| 186 | + for key, value in labels.items() |
| 187 | + if key in CERT_MANAGER_KUBEFLOW_LABELS |
| 188 | + } |
| 189 | + |
| 190 | + if preserved_labels: |
| 191 | + normalized.setdefault("metadata", {}).setdefault("labels", {}).update(preserved_labels) |
| 192 | + |
161 | 193 | def get_resource_key(manifest: Dict, component: str = "katib") -> str: |
162 | 194 | """Generate a unique key for the resource.""" |
163 | 195 | kind = manifest.get('kind', 'Unknown') |
|
0 commit comments