{"id":4313,"date":"2018-12-31T14:13:20","date_gmt":"2018-12-31T14:13:20","guid":{"rendered":"http:\/\/howk.de\/w1\/blog-hands-on-with-linkerd-2-0\/"},"modified":"2018-12-31T14:13:20","modified_gmt":"2018-12-31T14:13:20","slug":"blog-hands-on-with-linkerd-2-0","status":"publish","type":"post","link":"https:\/\/howk.de\/?p=4313","title":{"rendered":"Blog: Hands On With Linkerd 2.0"},"content":{"rendered":"<p><strong>Author<\/strong>: Thomas Rampelberg (Buoyant)<\/p>\n<p>Linkerd 2.0 was recently announced as generally available (GA), signaling its readiness for production use. In this tutorial, we\u2019ll walk you through how to get Linkerd 2.0 up and running on your Kubernetes cluster in a matter seconds.<\/p>\n<p>But first, what is Linkerd and why should you care? Linkerd is a service sidecar that augments a Kubernetes service, providing zero-config dashboards and UNIX-style CLI tools for runtime debugging, diagnostics, and reliability. Linkerd is also a service mesh, applied to multiple (or all) services in a cluster to provide a uniform layer of telemetry, security, and control across them.<\/p>\n<p>Linkerd works by installing ultralight proxies into each pod of a service. These proxies report telemetry data to, and receive signals from, a control plane. This means that using Linkerd doesn\u2019t require any code changes, and can even be installed live on a running service. Linkerd is fully open source, Apache v2 licensed, and is hosted by the Cloud Native Computing Foundation (just like Kubernetes itself!)<\/p>\n<p>Without further ado, let\u2019s see just how quickly you can get Linkerd running on your Kubernetes cluster. In this tutorial, we\u2019ll walk you through how to deploy Linkerd on any Kubernetes 1.9+ cluster and how to use it to debug failures in a sample gRPC application.<\/p>\n<h2 id=\"step-1-install-the-demo-app\">Step 1: Install the demo app ?<\/h2>\n<p>Before we install Linkerd, let\u2019s start by installing a basic gRPC demo application called Emojivoto onto your Kubernetes cluster. To install Emojivoto, run:<\/p>\n<p><code>curl https:\/\/run.linkerd.io\/emojivoto.yml | kubectl apply -f -<\/code><\/p>\n<p>This command downloads the Kubernetes manifest for Emojivoto, and uses kubectl to apply it to your Kubernetes cluster. Emojivoto is comprised of several services that run in the \u201cemojivoto\u201d namespace. You can see the services by running:<\/p>\n<p><code>kubectl get -n emojivoto deployments<\/code><\/p>\n<p>You can also see the app live by running<\/p>\n<p><code>minikube -n emojivoto service web-svc --url # if you\u2019re on minikube<\/code><\/p>\n<p>\u2026 or:<\/p>\n<p><code>kubectl get svc web-svc -n emojivoto -o jsonpath=&quot;{.status.loadBalancer.ingress[0].*}&quot; #<\/code><\/p>\n<p>\u2026 if you\u2019re somewhere else<\/p>\n<p>Click around. You might notice that some parts of the application are broken! If you were to inspect your handly local Kubernetes dashboard, you wouldn\u2019t see very much interesting&mdash;as far as Kubernetes is concerned, the app is running just fine. This is a very common situation! Kubernetes understands whether your pods are running, but not whether they are responding properly.<\/p>\n<p>In the next few steps, we\u2019ll walk you through how to use Linkerd to diagnose the problem.<\/p>\n<h2 id=\"step-2-install-linkerd-s-cli\">Step 2: Install Linkerd\u2019s CLI<\/h2>\n<p>We\u2019ll start by installing Linkerd\u2019s command-line interface (CLI) onto your local machine.  Visit the <a href=\"https:\/\/github.com\/linkerd\/linkerd2\/releases\/\" target=\"_blank\">Linkerd releases page<\/a>, or simply run:<\/p>\n<p><code>curl -sL https:\/\/run.linkerd.io\/install | sh<\/code><\/p>\n<p>Once installed, add the <code>linkerd<\/code> command to your path with:<\/p>\n<p><code>export PATH=$PATH:$HOME\/.linkerd2\/bin<\/code><\/p>\n<p>You should now be able to run the command <code>linkerd version<\/code>, which should display:<\/p>\n<pre><code>Client version: v2.0\nServer version: unavailable\n<\/code><\/pre>\n<p>\u201cServer version: unavailable\u201d means that we need to add Linkerd\u2019s control plane to the cluster, which we\u2019ll do next. But first, let\u2019s validate that your cluster is prepared for Linkerd by running:<\/p>\n<p><code>linkerd check --pre<\/code><\/p>\n<p>This handy command will report any problems that will interfere with your ability to install Linkerd. Hopefully everything looks OK and you\u2019re ready to move on to the next step.<\/p>\n<h2 id=\"step-3-install-linkerd-s-control-plane-onto-the-cluster\">Step 3: Install Linkerd\u2019s control plane onto the cluster<\/h2>\n<p>In this step, we\u2019ll install Linkerd\u2019s lightweight control plane into its own namespace (\u201clinkerd\u201d) on your cluster. To do this, run:<\/p>\n<p><code>linkerd install | kubectl apply -f -<\/code><\/p>\n<p>This command generates a Kubernetes manifest and uses <code>kubectl<\/code> command to apply it to your Kubernetes cluster. (Feel free to inspect the manifest before you apply it.)<\/p>\n<p>(Note: if your Kubernetes cluster is on GKE with RBAC enabled, you\u2019ll need an extra step: you must grant a ClusterRole of cluster-admin to your Google Cloud account first, in order to install certain telemetry features in the control plane. To do that, run: <code>kubectl create clusterrolebinding cluster-admin-binding-$USER --clusterrole=cluster-admin --user=$(gcloud config get-value account)<\/code>.)<\/p>\n<p>Depending on the speed of your internet connection, it may take a minute or two for your Kubernetes cluster to pull the Linkerd images. While that\u2019s happening, we can validate that everything\u2019s happening correctly by running:<\/p>\n<p><code>linkerd check<\/code><\/p>\n<p>This command will patiently wait until Linkerd has been installed and is running.<\/p>\n<p>Finally, we\u2019re ready to view Linkerd\u2019s dashboard! Just run:<\/p>\n<p><code>linkerd dashboard<\/code><\/p>\n<p>If you see something like below, Linkerd is now running on your cluster. ?<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/1-dashboard.png\" width=\"700\"><\/center><\/p>\n<h2 id=\"step-4-add-linkerd-to-the-web-service\">Step 4: Add Linkerd to the web service<\/h2>\n<p>At this point we have the Linkerd control plane installed in the \u201clinkerd\u201d namespace, and we have our emojivoto demo app installed in the \u201cemojivoto\u201d namespace. But we haven\u2019t actually added Linkerd to our service yet. So let\u2019s do that.<\/p>\n<p>In this example, let\u2019s pretend we are the owners of the \u201cweb\u201d service. Other services, like \u201cemoji\u201d and \u201cvoting\u201d, are owned by other teams&ndash;so we don\u2019t want to touch them.<\/p>\n<p>There are a couple ways to add Linkerd to our service. For demo purposes, the easiest is to do something like this:<\/p>\n<p><code>kubectl get -n emojivoto deploy\/web -o yaml | linkerd inject - | kubectl apply -f -<\/code><\/p>\n<p>This command retrieves the manifest of the \u201cweb\u201d service from Kubernetes, runs this manifest through <code>linkerd inject<\/code>, and finally reapplies it to the Kubernetes cluster. The <code>linkerd inject<\/code> command augments the manifest to include Linkerd\u2019s data plane proxies. As with <code>linkerd install<\/code>, <code>linkerd inject<\/code> is a pure text operation, meaning that you can inspect the input and output before you use it. Since \u201cweb\u201d is a Deployment, Kubernetes is kind enough to slowly roll the service one pod at a time&ndash;meaning that \u201cweb\u201d can be serving traffic live while we add Linkerd to it!<\/p>\n<p>We now have a service sidecar running on the \u201cweb\u201d service!<\/p>\n<h2 id=\"step-5-debugging-for-fun-and-for-profit\">Step 5: Debugging for Fun and for Profit<\/h2>\n<p>Congratulations! You now have a full gRPC application running on your Kubernetes cluster with Linkerd installed on the \u201cweb\u201d service. Of course, that application is failing when you use it&ndash;so now let\u2019s use Linkerd to track down those errors.<\/p>\n<p>If you glance at the Linkerd dashboard (the <code>linkerd dashboard<\/code> command), you should see all services in the \u201cemojivoto\u201d namespace show up. Since \u201cweb\u201d has the Linkerd service sidecar installed on it, you\u2019ll also see success rate, requests per second, and latency percentiles show up.<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/2-web-overview.png\" width=\"700\"><\/center><\/p>\n<p>That\u2019s pretty neat, but the first thing you might notice is that success rate is well below 100%! Click on \u201cweb\u201d and let\u2019s dig in.<\/p>\n<p>You should now be looking at the Deployment page for the web service. The first thing you\u2019ll see here is that web is taking traffic from vote-bot (a service included in the Emojivoto manifest to continually generate a low level of live traffic), and has two outgoing dependencies, emoji and voting.<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/3-web-detail.png\" width=\"700\"><\/center><\/p>\n<p>The emoji service is operating at 100%, but the voting service is failing! A failure in a dependent service may be exactly what\u2019s causing the errors that web is returning.<\/p>\n<p>Let\u2019s scroll a little further down the page, we\u2019ll see a live list of all traffic endpoints that \u201cweb\u201d is receiving. This is interesting:<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/4-web-top.png\" width=\"700\"><\/center><\/p>\n<p>There are two calls that are not at 100%: the first is vote-bot\u2019s call the \u201c\/api\/vote\u201d endpoint. The second is the \u201cVotePoop\u201d call from the web service to the voting service. Very interesting! Since \/api\/vote is an incoming call, and \u201c\/VotePoop\u201d is an outgoing call, this is a good clue that the failure of the vote service\u2019s VotePoop endpoint is what\u2019s causing the problem!<\/p>\n<p>Finally, if we click on the \u201ctap\u201d icon for that row in the far right column, we\u2019ll be taken to live list of requests that match this endpoint. This allows us to confirm that the requests are failing (they all have <a href=\"https:\/\/godoc.org\/google.golang.org\/grpc\/codes#Code\" target=\"_blank\">gRPC status code 2<\/a>, indicating an error).<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/5-web-tap.png\" width=\"700\"><\/center><\/p>\n<p>At this point we have the ammunition we need to talk to the owners of the vote \u201cvoting\u201d service. We\u2019ve identified an endpoint on their service that consistently returns an error, and have found no other obvious sources of failures in the system.<\/p>\n<p>We hope you\u2019ve enjoyed this journey through Linkerd 2.0. There is much more for you to explore. For example, everything we did above using the web UI can also be accomplished via pure CLI commands, e.g. <code>linkerd top<\/code>, <code>linkerd stat<\/code>, and <code>linkerd tap<\/code>.<\/p>\n<p>Also, did you notice the little Grafana icon on the very first page we looked at? Linkerd ships with automatic Grafana dashboards for all those metrics, allowing you to view everything you\u2019re seeing in the Linkerd dashboard in a time series format. Check it out!<\/p>\n<p><center><img decoding=\"async\" src=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/6-grafana.png\" width=\"700\"><\/center><\/p>\n<h2 id=\"want-more\">Want more?<\/h2>\n<p>In this tutorial, we\u2019ve shown you how to install Linkerd on a cluster, add it as a service sidecar to just one service&ndash;while the service is receiving live traffic!&mdash;and use it to debug a runtime issue. But this is just the tip of the iceberg. We haven\u2019t even touched any of Linkerd\u2019s reliability or security features!<\/p>\n<p>Linkerd has a thriving community of adopters and contributors, and we\u2019d love for YOU to be a part of it. For more, check out the <a href=\"https:\/\/linkerd.io\/docs\" target=\"_blank\">docs<\/a> and <a href=\"https:\/\/github.com\/linkerd\/linkerd\" target=\"_blank\">GitHub<\/a> repo, join the <a href=\"https:\/\/slack.linkerd.io\/\" target=\"_blank\">Linkerd Slack<\/a> and mailing lists (<a href=\"https:\/\/lists.cncf.io\/g\/cncf-linkerd-users\" target=\"_blank\">users<\/a>, <a href=\"https:\/\/lists.cncf.io\/g\/cncf-linkerd-dev\" target=\"_blank\">developers<\/a>, <a href=\"https:\/\/lists.cncf.io\/g\/cncf-linkerd-announce\" target=\"_blank\">announce<\/a>), and, of course, follow <a href=\"https:\/\/twitter.com\/linkerd\" target=\"_blank\">@linkerd<\/a> on Twitter! We can\u2019t wait to have you aboard!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Author: Thomas Rampelberg (Buoyant) Linkerd 2.0 was recently announced as generally available (GA), signaling its readiness for production use. In this tutorial, we\u2019ll walk you through how to get Linkerd 2.0 up and running on your Kubernetes cluster in a matter seconds. But first, what is Linkerd and why should you care? Linkerd is a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Blog: Hands On With Linkerd 2.0 - Howk IT-Dienstleistungen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/howk.de\/?p=4313\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Blog: Hands On With Linkerd 2.0 - Howk IT-Dienstleistungen\" \/>\n<meta property=\"og:description\" content=\"Author: Thomas Rampelberg (Buoyant) Linkerd 2.0 was recently announced as generally available (GA), signaling its readiness for production use. In this tutorial, we\u2019ll walk you through how to get Linkerd 2.0 up and running on your Kubernetes cluster in a matter seconds. But first, what is Linkerd and why should you care? Linkerd is a [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/howk.de\/?p=4313\" \/>\n<meta property=\"og:site_name\" content=\"Howk IT-Dienstleistungen\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/howk.de\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-31T14:13:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/1-dashboard.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/howk.de\/?p=4313#article\",\"isPartOf\":{\"@id\":\"https:\/\/howk.de\/?p=4313\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/howk.de\/#\/schema\/person\/b029bd02d4f35dce869ef54c81a100c5\"},\"headline\":\"Blog: Hands On With Linkerd 2.0\",\"datePublished\":\"2018-12-31T14:13:20+00:00\",\"dateModified\":\"2018-12-31T14:13:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/howk.de\/?p=4313\"},\"wordCount\":1470,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/howk.de\/#organization\"},\"articleSection\":[\"Hi Tech\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/howk.de\/?p=4313#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/howk.de\/?p=4313\",\"url\":\"https:\/\/howk.de\/?p=4313\",\"name\":\"Blog: Hands On With Linkerd 2.0 - Howk IT-Dienstleistungen\",\"isPartOf\":{\"@id\":\"https:\/\/howk.de\/#website\"},\"datePublished\":\"2018-12-31T14:13:20+00:00\",\"dateModified\":\"2018-12-31T14:13:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/howk.de\/?p=4313#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/howk.de\/?p=4313\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/howk.de\/?p=4313#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/howk.de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog: Hands On With Linkerd 2.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/howk.de\/#website\",\"url\":\"https:\/\/howk.de\/\",\"name\":\"Howk IT-Dienstleistungen\",\"description\":\"Howk IT Services - Howk IT-Dienstleistungen\",\"publisher\":{\"@id\":\"https:\/\/howk.de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/howk.de\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/howk.de\/#organization\",\"name\":\"HowK\",\"url\":\"https:\/\/howk.de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/howk.de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/howk.de\/w1\/wp-content\/uploads\/2013\/12\/howk-logo.png\",\"contentUrl\":\"https:\/\/howk.de\/w1\/wp-content\/uploads\/2013\/12\/howk-logo.png\",\"width\":170,\"height\":170,\"caption\":\"HowK\"},\"image\":{\"@id\":\"https:\/\/howk.de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/howk.de\",\"http:\/\/de.linkedin.com\/in\/howkde\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/howk.de\/#\/schema\/person\/b029bd02d4f35dce869ef54c81a100c5\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/howk.de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b5a20f4d07bca1b73f25cff58a1116c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b5a20f4d07bca1b73f25cff58a1116c4?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/howk.de\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Blog: Hands On With Linkerd 2.0 - Howk IT-Dienstleistungen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/howk.de\/?p=4313","og_locale":"en_US","og_type":"article","og_title":"Blog: Hands On With Linkerd 2.0 - Howk IT-Dienstleistungen","og_description":"Author: Thomas Rampelberg (Buoyant) Linkerd 2.0 was recently announced as generally available (GA), signaling its readiness for production use. In this tutorial, we\u2019ll walk you through how to get Linkerd 2.0 up and running on your Kubernetes cluster in a matter seconds. But first, what is Linkerd and why should you care? Linkerd is a [&hellip;]","og_url":"https:\/\/howk.de\/?p=4313","og_site_name":"Howk IT-Dienstleistungen","article_publisher":"https:\/\/www.facebook.com\/howk.de","article_published_time":"2018-12-31T14:13:20+00:00","og_image":[{"url":"https:\/\/kubernetes.io\/images\/blog\/2018-09-18-2018-linkerd-2.0\/1-dashboard.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/howk.de\/?p=4313#article","isPartOf":{"@id":"https:\/\/howk.de\/?p=4313"},"author":{"name":"admin","@id":"https:\/\/howk.de\/#\/schema\/person\/b029bd02d4f35dce869ef54c81a100c5"},"headline":"Blog: Hands On With Linkerd 2.0","datePublished":"2018-12-31T14:13:20+00:00","dateModified":"2018-12-31T14:13:20+00:00","mainEntityOfPage":{"@id":"https:\/\/howk.de\/?p=4313"},"wordCount":1470,"commentCount":0,"publisher":{"@id":"https:\/\/howk.de\/#organization"},"articleSection":["Hi Tech"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/howk.de\/?p=4313#respond"]}]},{"@type":"WebPage","@id":"https:\/\/howk.de\/?p=4313","url":"https:\/\/howk.de\/?p=4313","name":"Blog: Hands On With Linkerd 2.0 - Howk IT-Dienstleistungen","isPartOf":{"@id":"https:\/\/howk.de\/#website"},"datePublished":"2018-12-31T14:13:20+00:00","dateModified":"2018-12-31T14:13:20+00:00","breadcrumb":{"@id":"https:\/\/howk.de\/?p=4313#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/howk.de\/?p=4313"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/howk.de\/?p=4313#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/howk.de\/"},{"@type":"ListItem","position":2,"name":"Blog: Hands On With Linkerd 2.0"}]},{"@type":"WebSite","@id":"https:\/\/howk.de\/#website","url":"https:\/\/howk.de\/","name":"Howk IT-Dienstleistungen","description":"Howk IT Services - Howk IT-Dienstleistungen","publisher":{"@id":"https:\/\/howk.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/howk.de\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/howk.de\/#organization","name":"HowK","url":"https:\/\/howk.de\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/howk.de\/#\/schema\/logo\/image\/","url":"https:\/\/howk.de\/w1\/wp-content\/uploads\/2013\/12\/howk-logo.png","contentUrl":"https:\/\/howk.de\/w1\/wp-content\/uploads\/2013\/12\/howk-logo.png","width":170,"height":170,"caption":"HowK"},"image":{"@id":"https:\/\/howk.de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/howk.de","http:\/\/de.linkedin.com\/in\/howkde"]},{"@type":"Person","@id":"https:\/\/howk.de\/#\/schema\/person\/b029bd02d4f35dce869ef54c81a100c5","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/howk.de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b5a20f4d07bca1b73f25cff58a1116c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b5a20f4d07bca1b73f25cff58a1116c4?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/howk.de\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/howk.de\/index.php?rest_route=\/wp\/v2\/posts\/4313"}],"collection":[{"href":"https:\/\/howk.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/howk.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/howk.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/howk.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4313"}],"version-history":[{"count":0,"href":"https:\/\/howk.de\/index.php?rest_route=\/wp\/v2\/posts\/4313\/revisions"}],"wp:attachment":[{"href":"https:\/\/howk.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/howk.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/howk.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}