Skip to content

Fix broken links - 2026.03 2#910

Closed
n-boshnakov wants to merge 9 commits intogardener:masterfrom
n-boshnakov:fix-broken-links-2026.03-2
Closed

Fix broken links - 2026.03 2#910
n-boshnakov wants to merge 9 commits intogardener:masterfrom
n-boshnakov:fix-broken-links-2026.03-2

Conversation

@n-boshnakov
Copy link
Copy Markdown
Contributor

@n-boshnakov n-boshnakov commented Mar 25, 2026

How to categorize this PR?

/kind documentation
/kind enhancement

What this PR does / why we need it:
This PR fixes broken links in the documentation.

Which issue(s) this PR fixes:
Fixes #

Special notes for your reviewer:

Summary by CodeRabbit

Release Notes

  • New Features

    • Added blog filtering by tags and free-text search with URL-based state persistence
    • Implemented blog post metadata display showing authors with GitHub profiles, publication dates, tags, and preview snippets
    • Introduced structured blog categorization system with standardized tags across content types, technical domains, cloud providers, and components
  • Documentation

    • Added blog tags reference guide documenting all supported tag categories and naming conventions
    • Updated blog contribution guidelines with new front-matter metadata requirements

- added a tagging system to the blog posts in order to satisfy Apeiro requirement
- added tags to existing blog posts
- improved the view of the blogs
- added author name + picture for each post
- converted Hugo shortcode syntax inside Markdown to the Vitepress component format in order to fix build issues
@n-boshnakov n-boshnakov requested a review from a team as a code owner March 25, 2026 06:42
@gardener-prow gardener-prow bot added the kind/enhancement Enhancement, improvement, extension label Mar 25, 2026
@gardener-prow
Copy link
Copy Markdown

gardener-prow bot commented Mar 25, 2026

@n-boshnakov: The label(s) kind/documentation cannot be applied, because the repository doesn't have them.

Details

In response to this:

How to categorize this PR?

/kind documentation
/kind enhancement

What this PR does / why we need it:
This PR fixes broken links in the documentation.

Which issue(s) this PR fixes:
Fixes #

Special notes for your reviewer:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 25, 2026

Deploy Preview for gardener-docs ready!

Name Link
🔨 Latest commit 7e95c5a
🔍 Latest deploy log https://app.netlify.com/projects/gardener-docs/deploys/69c383d3dbd7ed0008bb1d57
😎 Deploy Preview https://deploy-preview-910--gardener-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
Lighthouse
Lighthouse
1 paths audited
Performance: 66 (no change from production)
Accessibility: 97 (no change from production)
Best Practices: 100 (🟢 up 8 from production)
SEO: 98 (no change from production)
PWA: 90 (no change from production)
View the detailed breakdown and full score reports

To edit notification comments on pull requests, go to your Netlify project configuration.

@gardener-prow
Copy link
Copy Markdown

gardener-prow bot commented Mar 25, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign jordanjordanov for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@gardener-prow gardener-prow bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 25, 2026
@gardener-prow
Copy link
Copy Markdown

gardener-prow bot commented Mar 25, 2026

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@gardener-prow gardener-prow bot added the cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. label Mar 25, 2026
@gardener-prow gardener-prow bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Mar 25, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 25, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 62876da7-3544-42a3-ac41-4b88d55956b7

📥 Commits

Reviewing files that changed from the base of the PR and between 1d55eac and 7e95c5a.

📒 Files selected for processing (104)
  • .vitepress/data/blog.data.ts
  • .vitepress/shared/blogMetadata.ts
  • .vitepress/theme/components/BlogIndex.vue
  • .vitepress/theme/components/BlogPostMeta.vue
  • .vitepress/theme/index.ts
  • hack/apply-blog-tags.mjs
  • hack/preview.sh
  • website/adopter/_index.md
  • website/archived/blog/2018/06.11-Frontend-HTTPS.md
  • website/archived/blog/2019/06.11-Cluster-Overprovisioning.md
  • website/archived/blog/2019/06.11-Manually-Adding-a-Node-to-an-Existing-Cluster.md
  • website/archived/contribute/code/30_deploy_seed_into_aks/_index.md
  • website/blog/2018/06/06.11-anti-patterns.md
  • website/blog/2018/06/06.11-auditing-kubernetes-for-secure-setup.md
  • website/blog/2018/06/06.11-big-things-come-in-small-packages.md
  • website/blog/2018/06/06.11-hardening-the-gardener-community-setup.md
  • website/blog/2018/06/06.11-kubernetes-is-available-in-docker-for-mac-17-12-ce.md
  • website/blog/2018/06/06.11-namespace-isolation.md
  • website/blog/2018/06/06.11-namespace-scope.md
  • website/blog/2018/06/06.11-readwritemany-dynamically-provisioned-persistent-volumes-using-amazon-efs.md
  • website/blog/2018/06/06.11-shared-storage-with-s3-backend.md
  • website/blog/2018/06/06.11-watching-logs-of-several-pods.md
  • website/blog/2018/07/07.11-hibernate-a-cluster-to-save-money.md
  • website/blog/2018/12/12.22-cookies-are-dangerous.md
  • website/blog/2018/12/12.25-gardener-cookies.md
  • website/blog/2019/05/05.24-cluster-api-machine-abstractions-kubecon-talk.md
  • website/blog/2019/06/06.11-feature-flags-in-kubernetes-applications.md
  • website/blog/2019/06/06.11-organizing-access-using-kubeconfig-files.md
  • website/blog/2020/05/05.11-new-website-same-green-flower.md
  • website/blog/2020/08/08.06-gardener-v1.8.0-released.md
  • website/blog/2020/09/09.11-gardener-v1.9-and-v1.10-released.md
  • website/blog/2020/10/10.19-gardener-integrates-with-kubevirt.md
  • website/blog/2020/10/10.19-shoot-reconciliation-details.md
  • website/blog/2020/11/11.04-gardener-v1.11-and-v1.12-released.md
  • website/blog/2020/11/11.20-case-study-migrating-etcd-volumes-in-production.md
  • website/blog/2020/11/11.23-gardener-v1.13-released.md
  • website/blog/2020/12/12.03-stackit-kubernetes-engine-with-gardener.md
  • website/blog/2021/01/01.25-machine-controller-manager.md
  • website/blog/2021/02/02.01-happy-anniversary-gardener.md
  • website/blog/2021/09/09.12-navigating-cloud-native-security.md
  • website/blog/2022/02/02.17-gardener-community-meeting-february.md
  • website/blog/2022/03/03.23-gardener-community-meeting-march.md
  • website/blog/2022/06/06.17-gardener-community-meeting-june.md
  • website/blog/2022/10/10.06-gardener-community-meeting-october.md
  • website/blog/2022/10/10.20-gardener-community-meeting-october-2.md
  • website/blog/2023/03/03-27-high-availability-and-zone-outage-toleration.md
  • website/blog/2024/04/04-05-kubecon-cloudnativecon-europe-2024-highlights.md
  • website/blog/2024/04/04-18-spinkube-gardener-shoot-cluster.md
  • website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md
  • website/blog/2024/05/05-21-innovation-unleashed-a-deep-dive-into-the-5th-gardener-community-hackathon.md
  • website/blog/2024/10/10-24-gardener-kubecon-cloudnativecon-na-2024-announcement.md
  • website/blog/2024/11/11-06-promcon-eu-2024.md
  • website/blog/2024/11/11-09-demo.md
  • website/blog/2024/12/12-08-unleashing-potential-highlights-from-the-6th-gardener-community-hackathon.md
  • website/blog/2025/03/03-18-gardener-kubecon-cloudnativecon-europe-2025-announcement.md
  • website/blog/2025/04/04-17-leaner-clusters-lower-bills.md
  • website/blog/2025/05/05-12-gardener-neonephos.md
  • website/blog/2025/05/05-19-enhanced-network-flexibility-gardener-now-supports-cidr-overlap-for-non-ha-shoots.md
  • website/blog/2025/05/05-19-enhanced-node-management-introducing-in-place-updates-in-gardener.md
  • website/blog/2025/05/05-19-gardener-dashboard-180-streamlined-credentials-enhanced-cluster-views-and-real-time-updates.md
  • website/blog/2025/05/05-21-fine-tuning-kube-proxy-readiness-ensuring-accurate-health-checks-during-node-scale-down.md
  • website/blog/2025/05/05-21-new-in-gardener-forceful-redeployment-of-gardenlets-for-enhanced-operational-control.md
  • website/blog/2025/05/05-21-streamlined-node-onboarding-introducing-gardenadm-token-and-gardenadm-join.md
  • website/blog/2025/06/06-17-taking-gardener-to-the-next-level-highlights-from-the-7th-gardener-community-hackathon-in-schelklingen.md
  • website/blog/2025/06/06-18-enabling-seamless-ipv4-to-dual-stack-migration-for-kubernetes-clusters-on-gcp.md
  • website/blog/2025/06/06-18-enhanced-extension-management-introducing-autoenable-and-clustercompatibility.md
  • website/blog/2025/06/06-18-enhanced-internal-traffic-management-l7-load-balancing-for-kube-apiservers-in-gardener.md
  • website/blog/2025/06/06-18-gardener-enhances-observability-with-opentelemetry-integration-for-logging.md
  • website/blog/2025/06/06-25-enhanced-health-checks-for-node-rolling-updates.md
  • website/blog/2025/06/06-25-enhancing-meltdown-protection-with-dependency-watchdog-annotations.md
  • website/blog/2025/06/06-25-improving-credential-management-for-seed-backups.md
  • website/blog/2025/06/06-25-introducing-gardenadm-bootstrap-for-autonomous-shoots.md
  • website/blog/2025/06/06-30-getting-started-with-opentelemetry-on-gardener-shoot-cluster.md
  • website/blog/2025/07/07-16-enhancing-data-protection-with-immutable-backup-buckets.md
  • website/blog/2025/07/07-30-enhanced-network-flexibility-cidr-overlap-now-supported-for-ha-shoots.md
  • website/blog/2025/08/08-04-cluster-api-provider-gardener.md
  • website/blog/2025/08/08-13-keeping-track-of-your-resources-with-inventory.md
  • website/blog/2025/08/08-27-enabling-node-local-dns-without-node-rollouts.md
  • website/blog/2025/08/08-27-new-emergency-brake-for-gardener-shoot-reconciliations.md
  • website/blog/2025/09/09-05-ipv6-update.md
  • website/blog/2025/09/09-10-explicit-internal-dns-configuration-for-seeds.md
  • website/blog/2025/09/09-10-modernizing-gardeners-logging-stack-with-opentelemetry.md
  • website/blog/2025/10/10-08-efs-filestore-csi-drivers.md
  • website/blog/2025/10/10-22-extensible-advertised-addresses-for-shoots.md
  • website/blog/2025/10/10-22-useunifiedhttpproxy-feature-gate.md
  • website/blog/2025/10/10-27-unifying-dns-behavior-custom-coredns-configurations-now-supported-in-node-local-dns.md
  • website/blog/2025/11/11-12-gardener-ai-conformance.md
  • website/blog/2025/11/11-13-promcon-eu-2025.md
  • website/blog/2026/01/01-28-introducing-automated-credential-rotation.md
  • website/blog/2026/02/02-18-enhanced-security-for-helm-deployments-gardener-adds-custom-ca-support-for-oci-registries.md
  • website/blog/2026/02/02-18-seamlessly-switch-calicos-overlay-network-in-gardener.md
  • website/blog/2026/02/02-18-simplify-multi-cluster-configuration-with-static-manifest-propagation.md
  • website/blog/index.md
  • website/community/hackathons/2025-06.md
  • website/community/hackathons/2025-11.md
  • website/community/review-meetings/2025-reviews.md
  • website/community/steering/_index.md
  • website/documentation/contribute/code/roles.md
  • website/documentation/contribute/documentation/blog-tags.md
  • website/documentation/contribute/documentation/style-guide/_index.md
  • website/documentation/getting-started/observability/components.md
  • website/documentation/guides/administer-shoots/gpu.md
  • website/documentation/resources/videos/livecheck-readiness.md
  • website/news/003/release.md

📝 Walkthrough

Walkthrough

A comprehensive blog system enhancement that restructures VitePress blog data loading to compute and expose rich metadata: authors (with GitHub profiles), tags (canonicalized across the catalog), and previews (extracted from markdown). New filterable BlogIndex and BlogPostMeta components render this metadata. Shared metadata normalization utilities handle author/tag parsing. An automation script backfills tags and author logins across 80+ existing blog posts. Documentation on blog tags and style is added.

Changes

Cohort / File(s) Summary
VitePress Blog Data & Metadata
.vitepress/data/blog.data.ts, .vitepress/shared/blogMetadata.ts
Expanded Post interface to include authors, tags, and preview. Restructured data loader with render mode, date extraction, preview generation from markdown/HTML, author/tag normalization via new shared utilities (canonicalizeTag, normalizeTags, normalizeAuthors). Added date parsing helpers and preview sanitization functions.
Blog Theme Components
.vitepress/theme/components/BlogIndex.vue, .vitepress/theme/components/BlogPostMeta.vue, .vitepress/theme/index.ts
Added filterable BlogIndex with tag/text query filtering, URL-based state management, and per-post author/tag rendering. Added BlogPostMeta for post header metadata display. Integrated both into theme doc-before slot.
Blog Automation Script
hack/apply-blog-tags.mjs
New executable script to scan blog posts, infer tags from content (domain/component/cloud/project keywords, content-type heuristics), normalize against aliases, merge with existing tags, and update frontmatter with canonical tag list.
Documentation & References
website/documentation/contribute/documentation/blog-tags.md, website/documentation/contribute/documentation/style-guide/_index.md, website/documentation/guides/administer-shoots/gpu.md
Added blog tags reference documenting content-type, domain, component, provider, and project tag categories. Updated style guide with blog frontmatter requirements (title, newsSubtitle, authors with avatar/login/name, tags).
Blog Post Metadata Updates
website/blog/*/**/*.md, website/archived/blog/*/**/*.md
Applied 80+ frontmatter updates across blog posts: replaced author email fields with GitHub logins, backfilled/standardized tags (e.g., technical-deep-dive, feature-announcement, provider-* tags, content-type classification). Updated a handful of GEP reference links from old gardener/gardener proposal paths to gardener/enhancements GEP READMEs.
Blog Index & Navigation
website/blog/index.md, hack/preview.sh, website/adopter/_index.md
Simplified blog index to component-only rendering. Fixed docker preview script port argument quoting. Updated adopter link path.
Miscellaneous Documentation
website/community/*/\*/*.md, website/documentation/*/\*/*.md, website/news/*/\*.md
Updated internal documentation links (GEP/proposal references) and corrected relative paths. Removed example link and adjusted link references in community/steering docs.

Sequence Diagram

sequenceDiagram
    participant User as Browser/User
    participant BlogIndex as BlogIndex Component
    participant DataLoader as blog.data.ts
    participant MarkdownSource as Markdown Files
    participant Normalize as Metadata Utils<br/>(blogMetadata.ts)
    participant Render as VitePress Renderer

    User->>BlogIndex: Mount page / navigate
    BlogIndex->>DataLoader: Load blog posts data
    DataLoader->>MarkdownSource: Read frontmatter & content
    MarkdownSource-->>DataLoader: YAML + Markdown body
    DataLoader->>Normalize: parseDateValue(frontmatter.date/publishdate)
    Normalize-->>DataLoader: {time, string}
    DataLoader->>Normalize: extractPreviewFromMarkdown() / extractPreviewFromHtml()
    Normalize-->>DataLoader: preview text
    DataLoader->>Normalize: normalizeAuthors(frontmatter.authors)
    Normalize-->>DataLoader: BlogAuthor[] (with logins, avatars)
    DataLoader->>Normalize: normalizeTags(frontmatter.tags)
    Normalize-->>DataLoader: string[] (canonicalized)
    DataLoader->>Render: Render HTML fragment
    Render-->>DataLoader: rendered HTML
    DataLoader-->>BlogIndex: Post[] (with authors, tags, preview, date)
    BlogIndex->>BlogIndex: Parse tag/text query from URL
    BlogIndex->>BlogIndex: Filter posts (AND tag logic + text search)
    BlogIndex->>User: Render filtered posts with<br/>tags, authors, preview, date
    User->>BlogIndex: Click tag / change search
    BlogIndex->>BlogIndex: Update URL state (replaceState)
    BlogIndex->>BlogIndex: Re-filter & re-render
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

Suggested labels

kind/feature, size/XXL, area/documentation, area/blog, needs/review

Suggested reviewers

  • BoHristova

Poem

🐰 Hop hop, the blog now blooms with tags so bright,
Authors linked to profiles, metadata shining light,
Eighty posts rejuvenated with care and wit,
A filterable garden—let readers browse and sit! 🌻

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Betterleaks (1.1.1)
website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md

/bin/bash: -c: line 1: unexpected EOF while looking for matching `''

🔧 markdownlint-cli2 (0.21.0)
website/blog/2024/04/04-22-gardener's-registry-cache-extension-another-cost-saving-win-and-more.md

/bin/bash: -c: line 1: unexpected EOF while looking for matching `''


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla: yes Indicates the PR's author has signed the cla-assistant.io CLA. kind/enhancement Enhancement, improvement, extension needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant