From 24cd9a41248694e1b0364f540e3b2da6c807243b Mon Sep 17 00:00:00 2001 From: Travis Beckham Date: Wed, 24 Jun 2026 14:32:03 -0500 Subject: [PATCH 1/3] Truncate opengraph and twitter card description to 160 chars Signed-off-by: Travis Beckham --- linkerd.io/layouts/_partials/head-meta.html | 4 +- .../layouts/_partials/head-opengraph.html | 78 +++++++++++++++++++ .../layouts/_partials/head-twitter-cards.html | 32 ++++++++ .../layouts/_partials/page-description.html | 2 +- 4 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 linkerd.io/layouts/_partials/head-opengraph.html create mode 100644 linkerd.io/layouts/_partials/head-twitter-cards.html diff --git a/linkerd.io/layouts/_partials/head-meta.html b/linkerd.io/layouts/_partials/head-meta.html index d2c9cd7cdc..a33720a5d0 100644 --- a/linkerd.io/layouts/_partials/head-meta.html +++ b/linkerd.io/layouts/_partials/head-meta.html @@ -4,5 +4,5 @@ -{{ partial "opengraph.html" . }} -{{ partial "twitter_cards.html" . }} +{{ partial "head-opengraph.html" . }} +{{ partial "head-twitter-cards.html" . }} diff --git a/linkerd.io/layouts/_partials/head-opengraph.html b/linkerd.io/layouts/_partials/head-opengraph.html new file mode 100644 index 0000000000..c6f042e0e7 --- /dev/null +++ b/linkerd.io/layouts/_partials/head-opengraph.html @@ -0,0 +1,78 @@ +{{- /* + +Modify Hugo’s embedded Open Graph template to truncate the description to 160 characters +https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_partials/opengraph.html + +*/}} + + +{{- with or site.Title site.Params.title | plainify }} + +{{- end }} + +{{- with or .Title site.Title site.Params.title | plainify }} + +{{- end }} + + + +{{- with or .Params.locale site.Language.Locale }} + +{{- end }} + +{{- if .IsPage }} + + {{- with .Section }} + + {{- end }} + {{- $ISO8601 := "2006-01-02T15:04:05-07:00" }} + {{- with .PublishDate }} + + {{- end }} + {{- with .Lastmod }} + + {{- end }} + {{- range .GetTerms "tags" | first 6 }} + + {{- end }} +{{- else }} + +{{- end }} + +{{- with partial "_funcs/get-page-images" . }} + {{- range . | first 6 }} + + {{- end }} +{{- end }} + +{{- with .Params.audio }} + {{- range . | first 6 }} + + {{- end }} +{{- end }} + +{{- with .Params.videos }} + {{- range . | first 6 }} + + {{- end }} +{{- end }} + +{{- range .GetTerms "series" }} + {{- range .Pages | first 7 }} + {{- if ne $ . }} + + {{- end }} + {{- end }} +{{- end }} + +{{- with site.Params.social }} + {{- if reflect.IsMap . }} + {{- with .facebook_app_id }} + + {{- else }} + {{- with .facebook_admin }} + + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/linkerd.io/layouts/_partials/head-twitter-cards.html b/linkerd.io/layouts/_partials/head-twitter-cards.html new file mode 100644 index 0000000000..41948c3ad9 --- /dev/null +++ b/linkerd.io/layouts/_partials/head-twitter-cards.html @@ -0,0 +1,32 @@ +{{- /* + +Modify Hugo’s embedded Twitter Cards template to truncate the description to 160 characters +https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_partials/twitter_cards.html + +*/}} +{{- $images := partial "_funcs/get-page-images" . }} +{{- with index $images 0 }} + + +{{- else }} + +{{- end }} + +{{- with or .Title site.Title site.Params.title | plainify }} + +{{- end }} + + + +{{- $twitterSite := "" }} +{{- with site.Params.social }} + {{- if reflect.IsMap . }} + {{- with .twitter }} + {{- $content := . }} + {{- if not (strings.HasPrefix . "@") }} + {{- $content = printf "@%v" . }} + {{- end }} + + {{- end }} + {{- end }} +{{- end }} diff --git a/linkerd.io/layouts/_partials/page-description.html b/linkerd.io/layouts/_partials/page-description.html index aca57e1dba..1016e73210 100644 --- a/linkerd.io/layouts/_partials/page-description.html +++ b/linkerd.io/layouts/_partials/page-description.html @@ -1,3 +1,3 @@ -{{- with or .Description (.Summary | truncate 160) site.Params.description | plainify | htmlUnescape }} +{{- with or .Description .Summary site.Params.description | truncate 160 | plainify | htmlUnescape }} {{- trim . "\n\r\t " | replaceRE "[\n\r\t]+" " " }} {{- end -}} From 1ca06b0a032a7d1408c1f36a2d7a99f1629d4b52 Mon Sep 17 00:00:00 2001 From: Travis Beckham Date: Wed, 24 Jun 2026 14:37:58 -0500 Subject: [PATCH 2/3] Bump Hugo to v0.158.0 to support locale Signed-off-by: Travis Beckham --- .devcontainer/on-create.sh | 2 +- linkerd.io/README.md | 4 ++-- linkerd.io/config/_default/params.yaml | 7 +++---- netlify.toml | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/.devcontainer/on-create.sh b/.devcontainer/on-create.sh index 7e6df42d8d..68440f5802 100755 --- a/.devcontainer/on-create.sh +++ b/.devcontainer/on-create.sh @@ -5,7 +5,7 @@ set -euo pipefail cd $(mktemp -d) # hugo -scurl -O https://github.com/gohugoio/hugo/releases/download/v0.156.0/hugo_0.156.0_linux-amd64.deb +scurl -O https://github.com/gohugoio/hugo/releases/download/v0.158.0/hugo_0.158.0_linux-amd64.deb sudo dpkg -i hugo*.deb rm hugo*.deb diff --git a/linkerd.io/README.md b/linkerd.io/README.md index 98bddea4fb..33df4a2823 100644 --- a/linkerd.io/README.md +++ b/linkerd.io/README.md @@ -31,9 +31,9 @@ Or download the release of Hugo from the GitHub ## Hugo version requirements -The minimum version of Hugo needed to build the site is `v0.156.0`. +The minimum version of Hugo needed to build the site is `v0.158.0`. -When linkerd.io is deployed to production, we use Hugo `v0.156.0`. +When linkerd.io is deployed to production, we use Hugo `v0.158.0`. ### Run Hugo locally diff --git a/linkerd.io/config/_default/params.yaml b/linkerd.io/config/_default/params.yaml index 9c272f5dc9..32bdf9a0a7 100644 --- a/linkerd.io/config/_default/params.yaml +++ b/linkerd.io/config/_default/params.yaml @@ -1,17 +1,16 @@ # Min/max version of Hugo required to build linkerd.io # Set `maxHugoVersion` to "latest" if there is not a max version required -minHugoVersion: "0.156.0" -maxHugoVersion: "latest" +minHugoVersion: '0.158.0' +maxHugoVersion: 'latest' # Open Graph and Twitter Card defaults description: |- Linkerd is an ultralight service mesh for Kubernetes. It gives you observability, reliability, and security without requiring any code changes. #images: [/logos/linkerd.png] - # Set the value of `twitter:site` in Twitter Card social: twitter: Linkerd # Latest major version of Linkerd -latestMajorVersion: "2.20" +latestMajorVersion: '2.20' diff --git a/netlify.toml b/netlify.toml index ade4d0684e..5f6ad0a851 100644 --- a/netlify.toml +++ b/netlify.toml @@ -4,7 +4,7 @@ publish = "public" command = "make production-build" [build.environment] -HUGO_VERSION = "0.156.0" +HUGO_VERSION = "0.158.0" [context.deploy-preview] command = "make preview-build" From dfca7adec1e72d3d542a847e7871fc7cf8a50609 Mon Sep 17 00:00:00 2001 From: Travis Beckham Date: Wed, 24 Jun 2026 16:14:15 -0500 Subject: [PATCH 3/3] Added meta title Signed-off-by: Travis Beckham --- linkerd.io/README.md | 5 +++-- .../index.md | 4 ++++ linkerd.io/layouts/_partials/head-meta.html | 2 +- linkerd.io/layouts/_partials/head-opengraph.html | 8 +++----- linkerd.io/layouts/_partials/head-twitter-cards.html | 8 +++----- .../{page-description.html => meta-description.html} | 0 linkerd.io/layouts/_partials/meta-title.html | 3 +++ 7 files changed, 17 insertions(+), 13 deletions(-) rename linkerd.io/layouts/_partials/{page-description.html => meta-description.html} (100%) create mode 100644 linkerd.io/layouts/_partials/meta-title.html diff --git a/linkerd.io/README.md b/linkerd.io/README.md index 33df4a2823..351c80d7eb 100644 --- a/linkerd.io/README.md +++ b/linkerd.io/README.md @@ -65,11 +65,12 @@ Next, create an `index.md` file in the folder with the following frontmatter: ```yaml title: # The title of your blog post -description: # The description of your blog post +description: # Optional meta description of your blog post, defaults to auto generated content summary date: # The date of your post in the format: `2024-01-01T00:00:00Z` -slug: # The URL slug for the page. Only set this param if you want to use a different slug than the title. +slug: # Optional URL slug for the page. Only set this param if you want to use a different slug than the title. keywords: [] # An array of keywords are used to relate blog posts params: + metaTitle: # Optional meta title of your blog post, defaults to title author: # The author of the blog post ``` diff --git a/linkerd.io/content/blog/2026/0624-federating-clusters-for-zero-downtime-kubernetes/index.md b/linkerd.io/content/blog/2026/0624-federating-clusters-for-zero-downtime-kubernetes/index.md index c3facd0340..f9214227d9 100644 --- a/linkerd.io/content/blog/2026/0624-federating-clusters-for-zero-downtime-kubernetes/index.md +++ b/linkerd.io/content/blog/2026/0624-federating-clusters-for-zero-downtime-kubernetes/index.md @@ -2,8 +2,12 @@ date: 2026-06-24T00:00:00Z title: |- Federating Clusters for Zero-Downtime Kubernetes +description: |- + Linkerd multicluster supports 3 modes: federated, flat, and gateway. Wire all 3 across 3 GKE clusters, run a chaos test, and see automatic failover in action. keywords: [linkerd, multicluster, federated] params: + metaTitle: |- + Linkerd Multicluster: Federation, Mirroring on GKE author: name: Dominik Táskai, Linkerd Ambassador avatar: dominik-taskai.jpg diff --git a/linkerd.io/layouts/_partials/head-meta.html b/linkerd.io/layouts/_partials/head-meta.html index a33720a5d0..0cbe8aaa63 100644 --- a/linkerd.io/layouts/_partials/head-meta.html +++ b/linkerd.io/layouts/_partials/head-meta.html @@ -2,7 +2,7 @@ {{ end }} - + {{ partial "head-opengraph.html" . }} {{ partial "head-twitter-cards.html" . }} diff --git a/linkerd.io/layouts/_partials/head-opengraph.html b/linkerd.io/layouts/_partials/head-opengraph.html index c6f042e0e7..5fbf51f95b 100644 --- a/linkerd.io/layouts/_partials/head-opengraph.html +++ b/linkerd.io/layouts/_partials/head-opengraph.html @@ -1,6 +1,6 @@ {{- /* -Modify Hugo’s embedded Open Graph template to truncate the description to 160 characters +Modified Open Graph template https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_partials/opengraph.html */}} @@ -10,11 +10,9 @@ {{- end }} -{{- with or .Title site.Title site.Params.title | plainify }} - -{{- end }} + - + {{- with or .Params.locale site.Language.Locale }} diff --git a/linkerd.io/layouts/_partials/head-twitter-cards.html b/linkerd.io/layouts/_partials/head-twitter-cards.html index 41948c3ad9..bff02454ba 100644 --- a/linkerd.io/layouts/_partials/head-twitter-cards.html +++ b/linkerd.io/layouts/_partials/head-twitter-cards.html @@ -1,6 +1,6 @@ {{- /* -Modify Hugo’s embedded Twitter Cards template to truncate the description to 160 characters +Modified Twitter Cards template https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_partials/twitter_cards.html */}} @@ -12,11 +12,9 @@ {{- end }} -{{- with or .Title site.Title site.Params.title | plainify }} - -{{- end }} + - + {{- $twitterSite := "" }} {{- with site.Params.social }} diff --git a/linkerd.io/layouts/_partials/page-description.html b/linkerd.io/layouts/_partials/meta-description.html similarity index 100% rename from linkerd.io/layouts/_partials/page-description.html rename to linkerd.io/layouts/_partials/meta-description.html diff --git a/linkerd.io/layouts/_partials/meta-title.html b/linkerd.io/layouts/_partials/meta-title.html new file mode 100644 index 0000000000..564da36de7 --- /dev/null +++ b/linkerd.io/layouts/_partials/meta-title.html @@ -0,0 +1,3 @@ +{{- with or .Params.metaTitle .Title site.Title site.Params.title | plainify }} + {{- . }} +{{- end -}}