{"id":94067,"date":"2022-05-10T17:30:11","date_gmt":"2022-05-10T17:30:11","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=94067"},"modified":"2022-05-10T17:30:11","modified_gmt":"2022-05-10T17:30:11","slug":"run-kubernetes-clusters-locally-windows","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/devops\/containers-and-virtualization\/run-kubernetes-clusters-locally-windows\/","title":{"rendered":"How to run Kubernetes clusters locally on Windows"},"content":{"rendered":"<p>Kubernetes production clusters are typically run on cloud platforms. However, running and deploying Kubernetes applications on cloud platforms such as Google Kubernetes Engine is costly. These high costs can restrict the Kubernetes learning process for beginners. However, running Kubernetes clusters locally helps you efficiently test applications without disrupting the production environment or paying for cloud services.\u00a0<\/p>\n<p>To make things easier, the Kubernetes team developed two tools,\u00a0\u00a0<a href=\"https:\/\/minikube.sigs.k8s.io\/docs\/start\/\">Minikube<\/a>\u00a0and\u00a0<a href=\"https:\/\/kind.sigs.k8s.io\/\">Kind, <\/a>that allow Kubernetes users to run clusters locally without spending a dollar. This article will cover how to do it with Kind. Kind is a command-line tool used to run Kubernetes clusters locally on your computer using Docker containers. Kind works with Docker by loading Docker containers into Kind clusters. A Kubernetes cluster is a group of nodes used to run containerized applications.<\/p>\n<p>Kind uses a virtual machine on your pc to create nodes. Kind is also widely used to test and implement continuous integration tasks. Kind runs clusters locally from your computer making it easy to develop your Kubernetes applications without the need for a server.<\/p>\n<p>Kind is good at creating clusters with multiple nodes. The more nodes you have, the more containerized applications you can run. These clusters created by Kind can be operated and interacted with using Kubectl. Kubectl is a command line that enables you to execute commands that communicate with your Kubernetes cluster and make changes.<\/p>\n<p>In this article, you will learn how to install Kind on Windows. In addition, you will learn how to create a cluster using Kind and create a service.<\/p>\n<h2><a id=\"post-94067-_heading=h.30j0zll\"><\/a>Table of contents<\/h2>\n<ol>\n<li><a href=\"#Prerequisites\">Prerequisites<\/a><\/li>\n<li><a href=\"#howtoinstallkindonwindows\">How to install Kind on Windows<\/a><\/li>\n<li><a href=\"#Howtocreateanddeleteacluster\">How to create and delete a cluster<\/a><\/li>\n<li><a href=\"#Howtocreateaclusterwithmultiplenodes\">How to create a cluster with multiple nodes<\/a><\/li>\n<li><a href=\"#Howtocreateaservice\">How to create a service<\/a><\/li>\n<li><a href=\"#Howtoexportclusterlogs\">How to export cluster logs<\/a><\/li>\n<li><a href=\"#Conclusion\">Conclusion<\/a><\/li>\n<\/ol>\n<h2 id=\"Prerequisites\">Prerequisites<\/h2>\n<ul>\n<li>A Windows machine that has at least 8GB RAM. Using a machine that has less than 8GB of RAM will raise memory issues and complications when running a Kind cluster.<\/li>\n<li>You need to have installed Kubectl before starting this tutorial; if you haven&#8217;t installed Kubectl, you install it from <a href=\"https:\/\/www.vultr.com\/docs\/beginners-guide-to-kubernetes-using-kubectl\">here<\/a>.<\/li>\n<li>Kind cannot function without Docker, install Docker from <a href=\"https:\/\/docs.docker.com\/desktop\/windows\/install\/\">here<\/a>.<\/li>\n<li>In this tutorial, you will install Kind using Chocolatey. Download Chocolatey <a href=\"https:\/\/chocolatey.org\/install\">here<\/a>.<\/li>\n<li>Run Windows PowerShell as an Administrator whenever executing any Kind or Kubectl commands.<\/li>\n<\/ul>\n<h2 id=\"howtoinstallkindonwindows\">How to install Kind on Windows<\/h2>\n<p>In this article, you will learn how to download Kubernetes Kind using Chocolatey. Use the following command to download Kind using chocolatey:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">choco install kind<\/pre>\n<p>Chocolatey will install 6 packages. After Kind has been successfully installed, you will get the list of the installed artifacts:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true \">kb2919355 v1.0.20160915\r\ndotnetfx v4.8.0.20190930\r\ndocker-desktop v4.4.4\r\nkb2919442 v1.0.20160915\r\nchocolatey-dotnetfx.extension v1.0.1\r\nkind v0.11.1<\/pre>\n<p>To check if Kind has been installed successfully, execute the following command on Powershell:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind version<\/pre>\n<p>If Kind has been installed successfully you will get the version output and your computer&#8217;s processor:<\/p>\n<p class=\"color--white\">kind v0.11.1 go1.16.4 windows\/amd64<\/p>\n<p>Now you&#8217;re done installing Kind on Windows. You can now start creating clusters locally using kind. If you ever get stuck using Kind, use the command shown below to get all available commands:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind -h<\/pre>\n<p>You will get the following list of commands as output:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true \">Available Commands:\r\n\u00a0 build\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Build one of [node-image]\r\n\u00a0 completion\u00a0 Output shell completion code for the specified shell (bash, zsh or fish)\r\n\u00a0 create\u00a0\u00a0\u00a0\u00a0\u00a0 Creates one of [cluster]\r\n\u00a0 delete\u00a0\u00a0\u00a0\u00a0\u00a0 Deletes one of [cluster]\r\n\u00a0 export\u00a0\u00a0\u00a0\u00a0\u00a0 Exports one of [kubeconfig, logs]\r\n\u00a0 get\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Gets one of [clusters, nodes, kubeconfig]\r\n\u00a0 help\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Help about any command\r\n\u00a0 load\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Loads images into nodes\r\n\u00a0 version\u00a0\u00a0\u00a0\u00a0 Prints the kind CLI version\r\n\r\nFlags:\r\n\u00a0 -h, --help\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 help for kind\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 --loglevel string\u00a0\u00a0 DEPRECATED: see -v instead\r\n\u00a0 -q, --quiet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0silence all stderr output\r\n\u00a0 -v, --verbosity int32\u00a0\u00a0 info log verbosity\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 --version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 version for kind<\/pre>\n<p>Use the <code>-h<\/code> flag to get more information about any command. For example, executing this command:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind build -h<\/pre>\n<p>gives you the following detailed information about the build command:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true \">Usage:\r\nkind build [flags]\r\nkind build [command]\r\n\r\nAvailable Commands:\r\nnode-image Build the node image\r\n\r\nFlags:\r\n-h, --help help for build\r\n\r\nGlobal Flags:\r\n--loglevel string DEPRECATED: see -v instead\r\n-q, --quiet silence all stderr output\r\n-v, --verbosity int32 info log verbosity\r\n\r\nUse \"kind build [command] --help\" for more information about a command.<\/pre>\n<h2><a id=\"Howtocreateanddeleteacluster\"><\/a>How to create and delete a cluster<\/h2>\n<p>Clusters are the holy grail of Kubernetes. Clusters comprise containers with all the runtime resources needed to run applications in different operating systems.<\/p>\n<p>Use the following command to create a default Kind cluster:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\"> kind create cluster<\/pre>\n<p>The above command will create a default cluster called kind. If you want to use a specific name, add the <code>--name<\/code> flag to the <code>kind create cluster<\/code> command. Here is an example:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind create cluster --name simple-cluster<\/pre>\n<p>The Kind create command has the following arguments and options<\/p>\n<ul>\n<li><code>--quiet<\/code>: this flag silences all stderr output.<\/li>\n<li><code>--verbosity int32<\/code>: This flag will log verbosity information.<\/li>\n<\/ul>\n<p>When your cluster has been created successfully, you will get the following output:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true \">Creating cluster \"simple-cluster\" ...\r\n\u2022 Ensuring node image (kindest\/node:v1.21.1) \ud83d\uddbc ...\r\n\u2713 Ensuring node image (kindest\/node:v1.21.1) \ud83d\uddbc\r\n\u2022 Preparing nodes \ud83d\udce6 ...\r\n\u2713 Preparing nodes \ud83d\udce6\r\n\u2022 Writing configuration \ud83d\udcdc ...\r\n\u2713 Writing configuration \ud83d\udcdc\r\n\u2022 Starting control-plane \ud83d\udd79\ufe0f ...\r\n\u2713 Starting control-plane \ud83d\udd79\ufe0f\r\n\u2022 Installing CNI \ud83d\udd0c ...\r\n\u2713 Installing CNI \ud83d\udd0c\r\n\u2022 Installing StorageClass \ud83d\udcbe ...\r\n\u2713 Installing StorageClass \ud83d\udcbe\r\nSet kubectl context to \"kind-simple-cluster\"<\/pre>\n<p>After you have created your cluster, use the following command to check if the cluster has been created successfully or get the list of all Kind clusters running:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind get clusters<\/pre>\n<p>If you want to interact with a specific cluster locally. Use the following command and specify the name of the cluster (kind-&lt;cluster-name&gt;):<\/p>\n<pre class=\"lang:ps theme:powershell-ise\"> kubectl cluster-info --context kind-simple-cluster<\/pre>\n<p>You will get the following output which shows you where the Kubernetes control plane and CoreDNS are running at:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true \">Kubernetes control plane is running at https:\/\/127.0.0.1:2450\r\nCoreDNS is running at https:\/\/127.0.0.1:2450\/api\/v1\/namespaces\/kube-system\/services\/kube-dns:dns\/proxy<\/pre>\n<p>The cluster&#8217;s configuration access will be stored in the ${HOME}\/.kube\/config file. This file acts as your cluster&#8217;s manifest. Here is the configuration access of the default Kind cluster created earlier:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">apiVersion: v1\r\nclusters:\r\n- cluster:\r\n    certificate-authority-data:\r\n    server: https:\/\/127.0.0.1:2474\r\n  name: kind-kind\r\ncontexts:\r\n- context:\r\n    cluster: kind-kind\r\n    user: kind-kind\r\n  name: kind-kind\r\ncurrent-context: kind-kind\r\nkind: Config\r\npreferences: {}\r\nusers:\r\n- name: kind-kind\r\n  user:\r\n    client-certificate-data:\r\n    client-key-data:<\/pre>\n<p>A corresponding Docker container will be created automatically when creating a Kind cluster. Use the following docker command to see the corresponding docker container:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">docker ps<\/pre>\n<p>You will get the following information:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">CONTAINER ID: 22add82af339\r\nIMAGE: kindest\/node:v1.21.1\r\nCOMMAND:\"\/usr\/local\/bin\/entr...\"\r\nCREATED: About an hour ago\r\nSTATUS: Up About an hour\r\nPORTS: 127.0.0.1:2450-&gt;6443\/tcp NAMES:simple-cluster-control-plane<\/pre>\n<p>To view nodes created by the cluster, use the following command to view them:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kubectl get nodes<\/pre>\n<p>You will get the following information:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">NAME                         STATUS ROLES               AGE VERSION\r\nsimple-cluster-control-plane Ready control-plane,master 89m v1.21.1<\/pre>\n<p>Use the following command to delete a cluster:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind delete cluster<\/pre>\n<p>After the cluster has been successfully deleted, you will get the following information:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true \">Deleting cluster \"kind\" ...<\/pre>\n<p>To delete a cluster without the default name, use the &#8211;name flag.<\/p>\n<h2 id=\"howtocreateaclusterwithmutiplenodes\">How to create a cluster with multiple nodes<\/h2>\n<p>A Kubernetes node is a virtual machine that runs a cluster. There are two types of nodes which are:<\/p>\n<ul>\n<li>Worker node: A worker node executes and runs applications and containers assigned to it.<\/li>\n<li>control-plane: A control-plane controls all the worker nodes.<\/li>\n<\/ul>\n<p>You\u2019ll need a YAML file that defines the nodes when creating a multi-node cluster.<\/p>\n<p>A node can also be a physical machine. To add more nodes to your cluster, start by creating a cluster and adding different roles of nodes you want to add to your cluster. Save the following in kind-config.yaml.<\/p>\n<pre class=\"lang:c# theme:vs2012\">kind: Cluster\r\napiVersion: kind.x-k8s.io\/v1alpha4\r\nnodes:\r\n- role: control-plane\r\n- role: worker\r\n- role: worker<\/pre>\n<p>After saving the YAML file that has the above contents. Use the following command to apply changes:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\"> kind create cluster --name best-cluster --config kind-config.yaml<\/pre>\n<p>You will get the following output; this time the output will show that Kind is creating multiple nodes and show that it is joining worker nodes at the bottom of the output:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">Creating cluster \"best-cluster\" ...\r\n\u2022 Ensuring node image (kindest\/node:v1.21.1) \ud83d\uddbc ...\r\n\u2713 Ensuring node image (kindest\/node:v1.21.1) \ud83d\uddbc\r\n\u2022 Preparing nodes \ud83d\udce6 \ud83d\udce6 \ud83d\udce6 ...\r\n\u2713 Preparing nodes \ud83d\udce6 \ud83d\udce6 \ud83d\udce6\r\n\u2022 Writing configuration \ud83d\udcdc ...\r\n\u2713 Writing configuration \ud83d\udcdc\r\n\u2022 Starting control-plane \ud83d\udd79\ufe0f ...\r\n\u2713 Starting control-plane \ud83d\udd79\ufe0f\r\n\u2022 Installing CNI \ud83d\udd0c ...\r\n\u2713 Installing CNI \ud83d\udd0c\r\n\u2022 Installing StorageClass \ud83d\udcbe ...\r\n\u2713 Installing StorageClass \ud83d\udcbe\r\n\u2022 Joining worker nodes \ud83d\ude9c ...\r\n\u2713 Joining worker nodes \ud83d\ude9c\r\n\r\nSet kubectl context to \"kind-best-cluster\"<\/pre>\n<p>You can now use your cluster with: <\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">kubectl cluster-info --context kind-best-cluster\r\nThanks for using kind! \ud83d\ude0a<\/pre>\n<p>To check if the nodes have been created successfully and are ready, execute the following command:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kubectl get nodes<\/pre>\n<p>You will get the following output:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">NAME                       STATUS   ROLES                AGE   VERSION\r\nbest-cluster-control-plane Ready    control-plane,master 4m59s v1.21.1\r\nbest-cluster-worker        NotReady &lt;none&gt;               90s   v1.21.1\r\nbest-cluster-worker2       NotReady &lt;none&gt;               90s   v1.21.1<\/pre>\n<h2 id=\"Howtocreateaservice\">How to create a service<\/h2>\n<p>A Kubernetes service is used to expose your cluster and connect with authorized traffic outside your cluster. An ingress controller is a type of load balancer service that routes traffic to your service.<\/p>\n<p>The following YAML file creates a pod, service, and the ingress controller objects. The service will receive traffic through the <em>5678<\/em> port. The ingress controller version is set to <code>networking.k8s.io\/v1<\/code>.<\/p>\n<p>Start by creating a YAML file that will define and configure the service. Add the following content to the YAML file:<\/p>\n<pre class=\"lang:c# theme:vs2012\">kind: Pod\r\napiVersion: v1\r\nmetadata:\r\n  name: best-cluster\r\n  labels:\r\n    app: best-cluster\r\nspec:\r\n  containers:\r\n  - name: best-cluster\r\n    image: hashicorp\/http-echo:0.2.3\r\n    args:\r\n    - \"-You just deployed your first service\"\r\n---\r\nkind: Service\r\napiVersion: v1\r\nmetadata:\r\n  name: simple-service\r\nspec:\r\n  selector:\r\n    app: best-cluster\r\n  ports:\r\n  # Default port used by the image\r\n  - port: 5678\r\n---\r\napiVersion: networking.k8s.io\/v1\r\nkind: Ingress\r\nmetadata:\r\n  name: simple-ingress\r\nspec:\r\n  rules:\r\n  - http:\r\n      paths:\r\n      - pathType: Prefix\r\n        path: \"\/simple\"\r\n        backend:\r\n          service:\r\n            name: simple-service\r\n            port:\r\n              number: 5678\r\n---<\/pre>\n<p>After saving your YAML file, use the following command to deploy the service:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kubectl apply -f simple-service.yaml<\/pre>\n<p>Execute the following command to check if the service is running:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kubectl get services<\/pre>\n<p>You will get the following output:<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">NAME              TYPE      CLUSTER-IP    EXTERNAL-IP   PORT(S)  AGE\r\nkubernetes        ClusterIP 10.96.0.1     &lt;none&gt;        443\/TCP  72m\r\nsimple-service    ClusterIP 10.96.245.41  &lt;none&gt;        5678\/TCP 56s<\/pre>\n<p>The above output shows that your cluster is now ready to receive traffic from outside the cluster through the service you just created.<\/p>\n<h2 id=\"Howtoexportclusterlogs\">How to export cluster logs<\/h2>\n<p>Kubernetes logs give you visibility on how your cluster performs. Some vulnerabilities and defects will be identified when inspecting and auditing logs. Kind has the following command that is used to export cluster logs to your desired directory on your pc:<\/p>\n<pre class=\"lang:ps theme:powershell-ise\">kind export logs C:\\Users\\redgate<\/pre>\n<p>The above command will give you the following output, exporting logs of the default cluster. Use the &#8211;name flag if you have named the cluster something else:<\/p>\n<p>Exporting logs for cluster &#8220;kind&#8221; to: <br \/>\nC:\\Users\\redgate<\/p>\n<p>The structure of the logs will look like this in the folder you exported them to<\/p>\n<pre class=\"theme:powershell-output lang:ps decode:true\">\u251c\u2500\u2500 docker-info.txt\r\n\u2514\u2500\u2500 kind-control-plane\/ \u00a0\u00a0\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 containers \u00a0\u00a0\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 docker.log \u00a0\u00a0\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 inspect.json \u00a0\u00a0\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 journal.log \u00a0\u00a0\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 kubelet.log \u00a0\u00a0\u00a0\u00a0\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u251c\u2500\u2500 kubernetes-\r\nversion.txt\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u2514\u2500\u2500 pods\/<\/pre>\n<h2 id=\"conclusion\">Conclusion<\/h2>\n<p>In this article you have learned:<\/p>\n<ol>\n<li>How to install Kind on Windows.<\/li>\n<li>How to create a cluster using Kind.<\/li>\n<li>How to create a cluster with multiple nodes.<\/li>\n<li>How to create a service.<\/li>\n<\/ol>\n<p>The above skills are enough to get you started with the journey of creating Kubernetes clusters using Kind. You can advance your Kubernetes skills on the Kubernetes official page <a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/security\/\">here<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes production clusters are typically run on cloud platforms. However, running and deploying Kubernetes applications on cloud platforms such as Google Kubernetes Engine is costly. These high costs can restrict the Kubernetes learning process for beginners. However, running Kubernetes clusters locally helps you efficiently test applications without disrupting the production environment or paying for cloud&#8230;&hellip;<\/p>\n","protected":false},"author":339670,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143513,53],"tags":[95506],"coauthors":[146048],"class_list":["post-94067","post","type-post","status-publish","format-standard","hentry","category-containers-and-virtualization","category-featured","tag-automate"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/94067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/339670"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=94067"}],"version-history":[{"count":22,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/94067\/revisions"}],"predecessor-version":[{"id":94234,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/94067\/revisions\/94234"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=94067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=94067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=94067"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=94067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}