{"id":15633,"date":"2017-01-03T12:15:09","date_gmt":"2017-01-03T10:15:09","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=15633"},"modified":"2016-12-30T11:41:43","modified_gmt":"2016-12-30T09:41:43","slug":"deploying-docker-apps-kubernetes-codeship","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/","title":{"rendered":"Deploying Docker Apps to Kubernetes with Codeship"},"content":{"rendered":"<p><em>In the first post of this series, we introduced <a href=\"https:\/\/www.webcodegeeks.com\/devops\/using-kubernetes-deployments\/\">using Kubernetes for deployments<\/a>; in the second, we got started with <a href=\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\">integrating Codeship into the Kubernetes CI workflow<\/a>. Now, we\u2019ll wrap things up with how to update Kubernetes Deployments.<\/em><\/p>\n<h2>Updating Kubernetes Deployments<\/h2>\n<p>Once our push step is defined, we need to tell Kubernetes to update the appropriate Deployment to roll out the new image. This is where the previously defined <code>google_cloud_deployment<\/code> service comes into play. Thanks to this service, we are able to easily run authenticated commands against Google Cloud Platform without any additional overhead, which means that manipulating our Kubernetes platform from within Codeship is no different than working with it directly.<\/p>\n<p>Before we set up the Codeship step, though, let\u2019s take a look at how updating a Kubernetes Deployment actually works. According to the <a href=\"http:\/\/kubernetes.io\/docs\/user-guide\/deployments\/#updating-a-deployment\">Kubernetes documentation<\/a> (and as touched upon above), triggering a Deployment update is as simple as updating the Deployment\u2019s defined label or container image.<\/p>\n<p>For now, let\u2019s assume that we already have a defined Deployment for an Nginx server as per the documentation. All we have to do to roll out an updated Docker image to the Deployment is to change the defined image using the kubectl command like so:<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.42.44-AM.png\"><img decoding=\"async\" class=\"aligncenter wp-image-15639\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.42.44-AM.png\" width=\"860\" height=\"123\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.42.44-AM.png 927w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.42.44-AM-300x43.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.42.44-AM-768x110.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>Because we went through the work of tagging our image pushes earlier, this type of update will be relatively easy for us to set up. But, this is just a command \u2014 it doesn\u2019t show us how to actually update Deployments from Codeship.<\/p>\n<p>All it takes to accomplish this is a small script to run the few necessary commands to authenticate to the Google Cloud Platform and trigger a Kubernetes Deployment update.<\/p>\n<p>Thankfully, due to the work put in by Codeship already, the script we need to write consists of only a small handful of commands:<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.45.20-AM.png\"><img decoding=\"async\" class=\"aligncenter wp-image-15640\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.45.20-AM.png\" width=\"860\" height=\"402\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.45.20-AM.png 927w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.45.20-AM-300x140.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.45.20-AM-768x359.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>You can find the complete repository including the <code>codeship-steps.yml<\/code> and the <code>codeship-services.yml<\/code> files here: <a href=\"https:\/\/github.com\/codeship\/codeship-kubernetes-demo\">https:\/\/github.com\/codeship\/codeship-kubernetes-demo<\/a>.<\/p>\n<p>Let\u2019s step through the above script really quick. The first important command is the authentication piece. The <code>google_cloud_deployment<\/code> service needs to be authenticated with the Google Cloud Platform before we can run any commands.<\/p>\n<p>Since we set up the necessary environment variables already, all it takes to authenticate is to run the <code>codeship_google authenticate<\/code> command at the beginning of our script.<\/p>\n<p>Next, we need to set the compute zone. This example shows <code>us-central1-a<\/code>, but you should change this to suit your needs. The next set of commands is the actual Kubernetes interactions.<\/p>\n<p>The first sets the Kubernetes cluster that we need to interact with, while the second is the actual Deployment update command. As you can see, it\u2019s not very different from the example provided by Kubernetes itself. It\u2019s important to note here that Codeship provides an environment variable of the current build\u2019s timestamp, which allows us to correlate the Kubernetes command with the registry push step above.<\/p>\n<p>Now that we have our deployment script set up (I\u2019ve saved mine to the root of my project as <code>deploy.sh<\/code>), all we have left to do is add a step to the <code>codeship-steps.yml<\/code> file that calls it:<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.48.19-AM.png\"><img decoding=\"async\" class=\"aligncenter wp-image-15641\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.48.19-AM.png\" width=\"860\" height=\"193\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.48.19-AM.png 930w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.48.19-AM-300x67.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-29-at-11.48.19-AM-768x173.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<h2>Conclusion<\/h2>\n<p>Fortunately for us, most of the heavy lifting for this integration has been done by Codeship already, which means that interacting with the Google Cloud Platform during our CI\/CD process is as simple as running a command.<\/p>\n<p>Thanks to the flexibility of Codeship, interacting with any cloud platform that we choose is an incredibly straightforward process. Because we are only limited by the capabilities of Docker itself, our deployment workflows are completely customizable, so we can get our process just right.<\/p>\n<p>This has been Part Three of a series about Kubernetes, Docker, and Codeship. Want to read all three parts together? Download our free ebook, <a href=\"https:\/\/resources.codeship.com\/ebooks\/deploy-docker-kubernetes-codeship?\">Continuous Deployment for Docker Apps to Kubernetes<\/a>.<\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td><span class=\"reference\">Reference: <\/span><\/td>\n<td><a href=\"https:\/\/blog.codeship.com\/deploying-docker-apps-to-kubernetes-with-codeship\/\">Deploying Docker Apps to Kubernetes with Codeship<\/a> from our <a href=\"http:\/\/www.webcodegeeks.com\/join-us\/wcg\/\">WCG partner<\/a>\u00a0Zachary Flower at the <a href=\"http:\/\/blog.codeship.com\/\">Codeship Blog<\/a> blog.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the Kubernetes CI workflow. Now, we\u2019ll wrap things up with how to update Kubernetes Deployments. Updating Kubernetes Deployments Once our push step is defined, we need to tell Kubernetes to update the &hellip;<\/p>\n","protected":false},"author":200,"featured_media":10356,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[217,363],"class_list":["post-15633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","tag-docker","tag-kubernetes"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deploying Docker Apps to Kubernetes with Codeship - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying Docker Apps to Kubernetes with Codeship - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\" \/>\n<meta property=\"og:site_name\" content=\"Web Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webcodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-03T10:15:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Zachary Flower\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@webcodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zachary Flower\" \/>\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:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\"},\"author\":{\"name\":\"Zachary Flower\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/fad2572903e5f01809fc0ebd87f660cf\"},\"headline\":\"Deploying Docker Apps to Kubernetes with Codeship\",\"datePublished\":\"2017-01-03T10:15:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\"},\"wordCount\":654,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"keywords\":[\"Docker\",\"Kubernetes\"],\"articleSection\":[\"DevOps\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\",\"name\":\"Deploying Docker Apps to Kubernetes with Codeship - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2017-01-03T10:15:09+00:00\",\"description\":\"In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.webcodegeeks.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps\",\"item\":\"https:\/\/www.webcodegeeks.com\/category\/devops\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Deploying Docker Apps to Kubernetes with Codeship\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"name\":\"Web Code Geeks\",\"description\":\"Web Developers Resource Center\",\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.webcodegeeks.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\/\/www.webcodegeeks.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"contentUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webcodegeeks\",\"https:\/\/x.com\/webcodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/fad2572903e5f01809fc0ebd87f660cf\",\"name\":\"Zachary Flower\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cf21b18b45a53a55fbc1de5e222fe603b2602ee381f36abf004a8d6c81ffa1ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cf21b18b45a53a55fbc1de5e222fe603b2602ee381f36abf004a8d6c81ffa1ed?s=96&d=mm&r=g\",\"caption\":\"Zachary Flower\"},\"description\":\"Zachary Flower is a freelance web developer, writer, and polymath. He's built projects for the NSA and created features for companies like Name.com and Buffer.\",\"url\":\"https:\/\/www.webcodegeeks.com\/author\/zachary-flower\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deploying Docker Apps to Kubernetes with Codeship - Web Code Geeks - 2026","description":"In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the","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:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/","og_locale":"en_US","og_type":"article","og_title":"Deploying Docker Apps to Kubernetes with Codeship - Web Code Geeks - 2026","og_description":"In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the","og_url":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2017-01-03T10:15:09+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","type":"image\/jpeg"}],"author":"Zachary Flower","twitter_card":"summary_large_image","twitter_creator":"@webcodegeeks","twitter_site":"@webcodegeeks","twitter_misc":{"Written by":"Zachary Flower","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/"},"author":{"name":"Zachary Flower","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/fad2572903e5f01809fc0ebd87f660cf"},"headline":"Deploying Docker Apps to Kubernetes with Codeship","datePublished":"2017-01-03T10:15:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/"},"wordCount":654,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","keywords":["Docker","Kubernetes"],"articleSection":["DevOps"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/","url":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/","name":"Deploying Docker Apps to Kubernetes with Codeship - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2017-01-03T10:15:09+00:00","description":"In the first post of this series, we introduced using Kubernetes for deployments; in the second, we got started with integrating Codeship into the","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#primaryimage","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.webcodegeeks.com\/devops\/deploying-docker-apps-kubernetes-codeship\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.webcodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"DevOps","item":"https:\/\/www.webcodegeeks.com\/category\/devops\/"},{"@type":"ListItem","position":3,"name":"Deploying Docker Apps to Kubernetes with Codeship"}]},{"@type":"WebSite","@id":"https:\/\/www.webcodegeeks.com\/#website","url":"https:\/\/www.webcodegeeks.com\/","name":"Web Code Geeks","description":"Web Developers Resource Center","publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.webcodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.webcodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.webcodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webcodegeeks","https:\/\/x.com\/webcodegeeks"]},{"@type":"Person","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/fad2572903e5f01809fc0ebd87f660cf","name":"Zachary Flower","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cf21b18b45a53a55fbc1de5e222fe603b2602ee381f36abf004a8d6c81ffa1ed?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cf21b18b45a53a55fbc1de5e222fe603b2602ee381f36abf004a8d6c81ffa1ed?s=96&d=mm&r=g","caption":"Zachary Flower"},"description":"Zachary Flower is a freelance web developer, writer, and polymath. He's built projects for the NSA and created features for companies like Name.com and Buffer.","url":"https:\/\/www.webcodegeeks.com\/author\/zachary-flower\/"}]}},"_links":{"self":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/15633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/users\/200"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/comments?post=15633"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/15633\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media\/10356"}],"wp:attachment":[{"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/media?parent=15633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=15633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=15633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}