{"id":13728,"date":"2022-01-02T10:37:39","date_gmt":"2022-01-02T10:37:39","guid":{"rendered":"https:\/\/engineering.lusha.com\/blog\/?p=13728"},"modified":"2022-01-02T10:37:39","modified_gmt":"2022-01-02T10:37:39","slug":"vault-golang-and-kubernetes-integration","status":"publish","type":"post","link":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/","title":{"rendered":"Vault, Golang and Kubernetes Integration"},"content":{"rendered":"<p>Being a data company,\u00a0<a href=\"https:\/\/www.lusha.com\/homepage\" rel=\"follow\" target=\"_self\">Lusha<\/a> takes security issues very seriously. This is why we use <a href=\"https:\/\/www.vaultproject.io\/\" rel=\"nofollow noopener\" target=\"_blank\">Hashicorp&#8217;s Vault<\/a>.<\/p>\n<h2>What is Vault?<\/h2>\n<p>Vault by HashiCorp is an identity-based secret and encryption management system. It helps manage credentials effectively.<br \/>\nA modern system requires access to a multitude of secrets: database credentials, API keys for external services, etc.<br \/>\nVault helps store your secret securely, define dynamic secrets, lease, renew and revoke secrets.<\/p>\n<h2>Authentication Methods<\/h2>\n<p>Vault implements various authentication methods in order to assign identity and a set of policies to a user.<br \/>\nSome of Its auth methods includes: AppRole, Kubernetes, AWS, Github, Google Cloud, JWT\/OIDC,\u00a0 Kerberos, and Okta. For the sake of this article, I&#8217;ll focus on <a href=\"https:\/\/kubernetes.io\/\" rel=\"nofollow noopener\" target=\"_blank\">K8S<\/a> auth and show you how to implement Vault&#8217;s K8S auth with Golang,<\/p>\n<h2>Kubernetes Authentication<\/h2>\n<p>In this method, we will leverage the Kubernetes Service Account Token.<br \/>\nThis authentication method makes it easy to introduce a Vault token into a Kubernetes Pod.<\/p>\n<p>In the section below we will implement a function that will authenticate to vault using K8S auth and will help us implement secrets fetching later on.<\/p>\n<script src=\"https:\/\/gist.github.com\/393d4bbabbcc3597f42ca2723d4181c0.js\"><\/script>\n<p>Let&#8217;s begin by defining some constants based on our vault environment and configuration.<br \/>\nOnce that is done, we can initialize an HTTP client that will use us to authenticate to vault.<br \/>\nWe&#8217;ll use our new HTTP client to create a vault client, also configuring the address to our vault server.<br \/>\nWe are using vault&#8217;s command package and importing <code><a href=\"http:\/\/github.com\/hashicorp\/vault\/command\/agent\/auth\/kubernetes\" rel=\"nofollow noopener\" target=\"_blank\">vaultKube<\/a><\/code> to create a new <code>kubernetesAuthMethod<\/code> while using our predefined\u00a0<code>mountPath<\/code> and\u00a0<code>KubeTokenRole<\/code>.<br \/>\nUsing the\u00a0<code><span class=\"pl-s1\">authed<\/span>.<span class=\"pl-en\">Authenticate<\/span><\/code> method we&#8217;re able to read our token from the default service account path (that can also be configured while creating <code>kubernetesAuthMethod<\/code>), using the returned token we&#8217;ll send an auth request to vault with the <code><span class=\"pl-s1\">vc<\/span>.<span class=\"pl-en\">Logical<\/span>().<span class=\"pl-en\">Write<\/span><\/code> method, this method returns a client token which we will set on our <code>vaultClient<\/code>.<\/p>\n<p>Congrats! We&#8217;re now ready to observe our functioning vault client that will let us fetch secrets from vault.<\/p>\n<p>But the above process is wrapped in <code><span class=\"pl-s1\">sync<\/span>.Once<\/code>. To ensure this operation only occurs once, we need to only do it the first time we request the client. After this initial time, each call to the <code>GetVaultClient<\/code> function will only return the already authenticated client without authenticating again.<\/p>\n<h2>Getting a Secret<\/h2>\n<p>Now, after authenticating using K8S method we can start fetching our secrets.<br \/>\nLet&#8217;s see how it&#8217;s done and implement a helper function for it.<\/p>\n<script src=\"https:\/\/gist.github.com\/0bbfadf9c4c2dc7956fd320a5130a001.js\"><\/script>\n<h4>So what do we have here?<\/h4>\n<p>We&#8217;ve got two continuous functions: <code>GetVaultSecret<\/code>, which gets a path to a secret and returns it, and <code>extractSecret<\/code>, which casts vault&#8217;s response and assumes we are using JSON secret values. If you use a string of secrets, you can just replace the cast.<\/p>\n<p>Whenever we need a secret, we&#8217;ll call <code>GetVaultSecret<\/code> with the desired secret path.<br \/>\nAs we can see, this function calls the <code>GetVaultClient<\/code> function we implemented before, then reads the requested path from vault and pairs it using the <code>extractSecret<\/code> function that casts the response as explained above.<\/p>\n<p>If everything goes according to plan, we&#8217;ve got our secret! \ud83c\udf89<\/p>\n<p>Using Hashicorp&#8217;s Vault to manage secrets is highly recommended and will make your secret management easier. I hope I helped you with implementing your first Vault integration in golang.<\/p>\n<p>Have fun managing your secrets!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Being a data company,\u00a0Lusha takes security issues very seriously. This is why we use Hashicorp&#8217;s Vault. What is Vault? Vault by HashiCorp is an identity-based secret and encryption management system. It helps manage credentials effectively. A modern system requires access to a multitude of secrets: database credentials, API keys for external services, etc. Vault helps [&hellip;]<\/p>\n","protected":false},"author":60,"featured_media":13797,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[154,153,118,1,152],"tags":[136,124,151,150,149],"class_list":["post-13728","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-golang","category-kubernetes","category-technology","category-uncategorized","category-vault","tag-golang","tag-k8s","tag-kubernetes","tag-secret-management","tag-vault"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Vault, Golang and Kubernetes Integration - Lusha Engineering Blog<\/title>\n<meta name=\"description\" content=\"Managing secrets with vault, Kubernetes and Golang could never be easier. This article helps you implement Vault - Golang integration.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vault, Golang and Kubernetes Integration - Lusha Engineering Blog\" \/>\n<meta property=\"og:description\" content=\"Managing secrets with vault, Kubernetes and Golang could never be easier. This article helps you implement Vault - Golang integration.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/\" \/>\n<meta property=\"og:site_name\" content=\"Lusha Engineering Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LushaData\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-02T10:37:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/12\/Vault_-Golang-and-Kubernetes-Integration.png\" \/>\n\t<meta property=\"og:image:width\" content=\"996\" \/>\n\t<meta property=\"og:image:height\" content=\"560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Omer Zamir\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@lushadata\" \/>\n<meta name=\"twitter:site\" content=\"@lushadata\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Omer Zamir\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/\"},\"author\":{\"name\":\"Omer Zamir\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/person\\\/101c4209b8592f0631a1190f62c7be16\"},\"headline\":\"Vault, Golang and Kubernetes Integration\",\"datePublished\":\"2022-01-02T10:37:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/\"},\"wordCount\":564,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Vault_-Golang-and-Kubernetes-Integration.png\",\"keywords\":[\"Golang\",\"k8s\",\"Kubernetes\",\"secret management\",\"vault\"],\"articleSection\":{\"0\":\"Golang\",\"1\":\"Kubernetes\",\"2\":\"Technology\",\"4\":\"Vault\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/\",\"name\":\"Vault, Golang and Kubernetes Integration - Lusha Engineering Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Vault_-Golang-and-Kubernetes-Integration.png\",\"datePublished\":\"2022-01-02T10:37:39+00:00\",\"description\":\"Managing secrets with vault, Kubernetes and Golang could never be easier. This article helps you implement Vault - Golang integration.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#primaryimage\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Vault_-Golang-and-Kubernetes-Integration.png\",\"contentUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/12\\\/Vault_-Golang-and-Kubernetes-Integration.png\",\"width\":996,\"height\":560},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/vault-golang-and-kubernetes-integration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vault, Golang and Kubernetes Integration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/\",\"name\":\"Lusha Engineering Blog\",\"description\":\"Search less. Sell more.\",\"publisher\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#organization\",\"name\":\"Lusha\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/cropped-fav.png\",\"contentUrl\":\"https:\\\/\\\/engineering.lusha.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/cropped-fav.png\",\"width\":512,\"height\":512,\"caption\":\"Lusha\"},\"image\":{\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/LushaData\\\/\",\"https:\\\/\\\/x.com\\\/lushadata\",\"https:\\\/\\\/www.instagram.com\\\/lifeatlusha\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/lushadata\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCZNqzgRZFBub6WJxeaQcxUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/#\\\/schema\\\/person\\\/101c4209b8592f0631a1190f62c7be16\",\"name\":\"Omer Zamir\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c850d15a35a538f81c9b229665f5e03d844a83a964d9b7f2d21080de9dab963c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c850d15a35a538f81c9b229665f5e03d844a83a964d9b7f2d21080de9dab963c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c850d15a35a538f81c9b229665f5e03d844a83a964d9b7f2d21080de9dab963c?s=96&d=mm&r=g\",\"caption\":\"Omer Zamir\"},\"description\":\"A Data lover, Open Source enthusiast. Interested in Cloud architectures and Infra solutions. Mastering K8S and Cloud Native technologies .\",\"sameAs\":[\"https:\\\/\\\/github.com\\\/omerzamir\",\"www.linkedin.com\\\/in\\\/omerzamir\"],\"url\":\"https:\\\/\\\/engineering.lusha.com\\\/blog\\\/author\\\/omer\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vault, Golang and Kubernetes Integration - Lusha Engineering Blog","description":"Managing secrets with vault, Kubernetes and Golang could never be easier. This article helps you implement Vault - Golang integration.","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:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/","og_locale":"en_US","og_type":"article","og_title":"Vault, Golang and Kubernetes Integration - Lusha Engineering Blog","og_description":"Managing secrets with vault, Kubernetes and Golang could never be easier. This article helps you implement Vault - Golang integration.","og_url":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/","og_site_name":"Lusha Engineering Blog","article_publisher":"https:\/\/www.facebook.com\/LushaData\/","article_published_time":"2022-01-02T10:37:39+00:00","og_image":[{"width":996,"height":560,"url":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/12\/Vault_-Golang-and-Kubernetes-Integration.png","type":"image\/png"}],"author":"Omer Zamir","twitter_card":"summary_large_image","twitter_creator":"@lushadata","twitter_site":"@lushadata","twitter_misc":{"Written by":"Omer Zamir","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#article","isPartOf":{"@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/"},"author":{"name":"Omer Zamir","@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/person\/101c4209b8592f0631a1190f62c7be16"},"headline":"Vault, Golang and Kubernetes Integration","datePublished":"2022-01-02T10:37:39+00:00","mainEntityOfPage":{"@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/"},"wordCount":564,"commentCount":0,"publisher":{"@id":"https:\/\/engineering.lusha.com\/blog\/#organization"},"image":{"@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/12\/Vault_-Golang-and-Kubernetes-Integration.png","keywords":["Golang","k8s","Kubernetes","secret management","vault"],"articleSection":{"0":"Golang","1":"Kubernetes","2":"Technology","4":"Vault"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/","url":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/","name":"Vault, Golang and Kubernetes Integration - Lusha Engineering Blog","isPartOf":{"@id":"https:\/\/engineering.lusha.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#primaryimage"},"image":{"@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/12\/Vault_-Golang-and-Kubernetes-Integration.png","datePublished":"2022-01-02T10:37:39+00:00","description":"Managing secrets with vault, Kubernetes and Golang could never be easier. This article helps you implement Vault - Golang integration.","breadcrumb":{"@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#primaryimage","url":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/12\/Vault_-Golang-and-Kubernetes-Integration.png","contentUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/12\/Vault_-Golang-and-Kubernetes-Integration.png","width":996,"height":560},{"@type":"BreadcrumbList","@id":"https:\/\/engineering.lusha.com\/blog\/vault-golang-and-kubernetes-integration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/engineering.lusha.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Vault, Golang and Kubernetes Integration"}]},{"@type":"WebSite","@id":"https:\/\/engineering.lusha.com\/blog\/#website","url":"https:\/\/engineering.lusha.com\/blog\/","name":"Lusha Engineering Blog","description":"Search less. Sell more.","publisher":{"@id":"https:\/\/engineering.lusha.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/engineering.lusha.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/engineering.lusha.com\/blog\/#organization","name":"Lusha","url":"https:\/\/engineering.lusha.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/07\/cropped-fav.png","contentUrl":"https:\/\/engineering.lusha.com\/wp-content\/uploads\/2021\/07\/cropped-fav.png","width":512,"height":512,"caption":"Lusha"},"image":{"@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LushaData\/","https:\/\/x.com\/lushadata","https:\/\/www.instagram.com\/lifeatlusha","https:\/\/www.linkedin.com\/company\/lushadata","https:\/\/www.youtube.com\/channel\/UCZNqzgRZFBub6WJxeaQcxUQ"]},{"@type":"Person","@id":"https:\/\/engineering.lusha.com\/blog\/#\/schema\/person\/101c4209b8592f0631a1190f62c7be16","name":"Omer Zamir","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c850d15a35a538f81c9b229665f5e03d844a83a964d9b7f2d21080de9dab963c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c850d15a35a538f81c9b229665f5e03d844a83a964d9b7f2d21080de9dab963c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c850d15a35a538f81c9b229665f5e03d844a83a964d9b7f2d21080de9dab963c?s=96&d=mm&r=g","caption":"Omer Zamir"},"description":"A Data lover, Open Source enthusiast. Interested in Cloud architectures and Infra solutions. Mastering K8S and Cloud Native technologies .","sameAs":["https:\/\/github.com\/omerzamir","www.linkedin.com\/in\/omerzamir"],"url":"https:\/\/engineering.lusha.com\/blog\/author\/omer\/"}]}},"_links":{"self":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts\/13728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/users\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/comments?post=13728"}],"version-history":[{"count":10,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts\/13728\/revisions"}],"predecessor-version":[{"id":13803,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/posts\/13728\/revisions\/13803"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/media\/13797"}],"wp:attachment":[{"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/media?parent=13728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/categories?post=13728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/engineering.lusha.com\/blog\/wp-json\/wp\/v2\/tags?post=13728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}