{"id":15534,"date":"2016-12-29T12:15:30","date_gmt":"2016-12-29T10:15:30","guid":{"rendered":"https:\/\/www.webcodegeeks.com\/?p=15534"},"modified":"2016-12-24T20:41:51","modified_gmt":"2016-12-24T18:41:51","slug":"continuous-deployment-docker-apps-kubernetes","status":"publish","type":"post","link":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/","title":{"rendered":"Continuous Deployment of Docker Apps to Kubernetes"},"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 this post, we\u2019ll get started with integrating Codeship into the workflow.<\/em><\/p>\n<p>Given a functioning Kubernetes Deployment (remember our discussion from the last post about the difference between deployment and Kubernetes\u2019 Deployment), how do we integrate it into our Codeship workflow? The answer to this question ultimately depends on your Kubernetes host, but because the official documentation uses Google Cloud as an example, this is the platform I\u2019ll address.<\/p>\n<h2>Integrating Codeship with Kubernetes<\/h2>\n<p>Codeship has already built out some <a href=\"https:\/\/documentation.codeship.com\/docker\/continuous-deployment\/google-cloud\/\">Google Cloud<\/a> integrations into their CI Platform for Docker that we can use to authenticate and deploy new images to Google Cloud.<\/p>\n<p>Before we can do anything, however, we need to create an encrypted environment file using Codeship\u2019s CLI tool in order to authenticate to Google Cloud. <a href=\"https:\/\/documentation.codeship.com\/docker\/getting-started\/encryption\/\">Codeship already has a tutorial<\/a> of how to do this, so I won\u2019t go over it here. But the environment variables that need to be set are:<\/p>\n<ul>\n<li>a Google Cloud Key \u2013 <code>GOOGLE_AUTH_JSON<\/code><\/li>\n<li>a Google Authentication Email \u2013 <code>GOOGLE_AUTH_EMAIL<\/code><\/li>\n<li>and a Google Project ID \u2013 <code>GOOGLE_PROJECT_ID<\/code><\/li>\n<\/ul>\n<p>Once we have an encrypted environment file (and have saved our Google Cloud environment variables to <code>gc.env.encrypted<\/code>), we next need to define the Google Cloud service in the <code>codeship-services.yml<\/code> file.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.05.03-PM.png\"><img decoding=\"async\" class=\"aligncenter wp-image-15549\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.05.03-PM.png\" width=\"860\" height=\"305\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.05.03-PM.png 926w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.05.03-PM-300x106.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.05.03-PM-768x272.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>Notice that there are two services defined, rather than one. This is because one is for interacting with Google Cloud services (<code>google_cloud_deployment<\/code>), while another is used to enable Docker image push functionality to the Google Cloud Registry (<code>gcr_dockercfg<\/code>). We\u2019ve built <a href=\"https:\/\/github.com\/codeship-library\/gcr-dockercfg-generator\">a turnkey version of this for you here<\/a>.<\/p>\n<p>This is only half of the puzzle, however. Although it creates the necessary services for interacting with Google Cloud, it doesn\u2019t automatically deploy newly built images or update a Kubernetes Deployment.<\/p>\n<h2>Google Container Registry Pushing<\/h2>\n<p>Thanks to Codeship\u2019s <a href=\"https:\/\/documentation.codeship.com\/docker\/getting-started\/steps\/#push-steps\">built-in push steps<\/a>, deploying a Docker image to a remote registry is a pretty painless process. Using the <code>gcr_dockercfg<\/code> service defined above, all we need to do is add a step to the <code>codeshipsteps.yml<\/code> file with our Google Container Registry URL as the destination.<\/p>\n<p>It\u2019s important to remember here that we will be deploying our application image, so be sure to replace the app service name with the name of the service your own application is running on.<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.09.56-PM.png\"><img decoding=\"async\" class=\"aligncenter wp-image-15550\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.09.56-PM.png\" width=\"860\" height=\"218\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.09.56-PM.png 923w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.09.56-PM-300x76.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.09.56-PM-768x195.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>The parameters above should be pretty self-explanatory, but the basic idea is that the app image gets pushed up to the Google Container Registry using the previously defined <code>gcr_dockercfg<\/code> service for authentication.<\/p>\n<p>While this step does push updated images to the registry, there is a problem with it as currently defined. Without a set Docker image tag, Codeship will push updated images to the <code>latest<\/code> tag. Now, this isn\u2019t a bad thing in and of itself (in fact, it\u2019s expected), but in order to trigger automatic Kubernetes Deployment updates, we need to be able to set a distinct tag for each push.<\/p>\n<p>To accomplish this, Codeship provides an <code>image_tag<\/code> declaration that allows us to set any tag other than <code>latest<\/code> to push our image up to. <a href=\"https:\/\/documentation.codeship.com\/docker\/getting-started\/docker-push\/#pushing-to-tags\">Codeship has a nice list of variables<\/a> that can be used for this declaration; however, to keep things simple, let\u2019s use the current build\u2019s Unix timestamp because it\u2019s relatively unique and repeatable.<\/p>\n<p>With the new <code>image_tag<\/code> declaration, the previous step should now look like this:<\/p>\n<p><a href=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.13.14-PM.png\"><img decoding=\"async\" class=\"aligncenter wp-image-15551\" src=\"http:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.13.14-PM.png\" width=\"860\" height=\"218\" srcset=\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.13.14-PM.png 926w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.13.14-PM-300x76.png 300w, https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/12\/Screen-Shot-2016-12-21-at-7.13.14-PM-768x195.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/a><\/p>\n<p>Now, when we push up our app image to the Google Container Registry, it will be tagged with the current build\u2019s Unix timestamp.<\/p>\n<p>Check in next week when we finish out this series with a tutorial for how to update Kubernetes Deployments.<\/p>\n<p>This has been Part Two of a series about Kubernetes, Docker and Codeship. Can\u2019t wait for Part Three? Download our free ebook, <a href=\"https:\/\/resources.codeship.com\/ebooks\/deploy-docker-kubernetes-codeship?utm_source=CodeshipBlog&amp;utm_campaign=cd-docker-kubernetes\">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\/continuous-deployment-of-docker-apps-to-kubernetes\/\">Continuous Deployment of Docker Apps to Kubernetes<\/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 this post, we\u2019ll get started with integrating Codeship into the workflow. Given a functioning Kubernetes Deployment (remember our discussion from the last post about the difference between deployment and Kubernetes\u2019 Deployment), how do we integrate it into our Codeship workflow? 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-15534","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>Continuous Deployment of Docker Apps to Kubernetes - Web Code Geeks - 2026<\/title>\n<meta name=\"description\" content=\"In the first post of this series, we introduced using Kubernetes for deployments. In this post, we\u2019ll get 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\/continuous-deployment-docker-apps-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Continuous Deployment of Docker Apps to Kubernetes - Web Code Geeks - 2026\" \/>\n<meta property=\"og:description\" content=\"In the first post of this series, we introduced using Kubernetes for deployments. In this post, we\u2019ll get started with integrating Codeship into the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\" \/>\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=\"2016-12-29T10:15:30+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\/continuous-deployment-docker-apps-kubernetes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\"},\"author\":{\"name\":\"Zachary Flower\",\"@id\":\"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/fad2572903e5f01809fc0ebd87f660cf\"},\"headline\":\"Continuous Deployment of Docker Apps to Kubernetes\",\"datePublished\":\"2016-12-29T10:15:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\"},\"wordCount\":645,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#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\/continuous-deployment-docker-apps-kubernetes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\",\"url\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\",\"name\":\"Continuous Deployment of Docker Apps to Kubernetes - Web Code Geeks - 2026\",\"isPartOf\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg\",\"datePublished\":\"2016-12-29T10:15:30+00:00\",\"description\":\"In the first post of this series, we introduced using Kubernetes for deployments. In this post, we\u2019ll get started with integrating Codeship into the\",\"breadcrumb\":{\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#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\/continuous-deployment-docker-apps-kubernetes\/#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\":\"Continuous Deployment of Docker Apps to Kubernetes\"}]},{\"@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":"Continuous Deployment of Docker Apps to Kubernetes - Web Code Geeks - 2026","description":"In the first post of this series, we introduced using Kubernetes for deployments. In this post, we\u2019ll get 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\/continuous-deployment-docker-apps-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Continuous Deployment of Docker Apps to Kubernetes - Web Code Geeks - 2026","og_description":"In the first post of this series, we introduced using Kubernetes for deployments. In this post, we\u2019ll get started with integrating Codeship into the","og_url":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/","og_site_name":"Web Code Geeks","article_publisher":"https:\/\/www.facebook.com\/webcodegeeks","article_published_time":"2016-12-29T10:15:30+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\/continuous-deployment-docker-apps-kubernetes\/#article","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/"},"author":{"name":"Zachary Flower","@id":"https:\/\/www.webcodegeeks.com\/#\/schema\/person\/fad2572903e5f01809fc0ebd87f660cf"},"headline":"Continuous Deployment of Docker Apps to Kubernetes","datePublished":"2016-12-29T10:15:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/"},"wordCount":645,"commentCount":0,"publisher":{"@id":"https:\/\/www.webcodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#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\/continuous-deployment-docker-apps-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/","url":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/","name":"Continuous Deployment of Docker Apps to Kubernetes - Web Code Geeks - 2026","isPartOf":{"@id":"https:\/\/www.webcodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.webcodegeeks.com\/wp-content\/uploads\/2016\/01\/docker-logo.jpg","datePublished":"2016-12-29T10:15:30+00:00","description":"In the first post of this series, we introduced using Kubernetes for deployments. In this post, we\u2019ll get started with integrating Codeship into the","breadcrumb":{"@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.webcodegeeks.com\/devops\/continuous-deployment-docker-apps-kubernetes\/#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\/continuous-deployment-docker-apps-kubernetes\/#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":"Continuous Deployment of Docker Apps to Kubernetes"}]},{"@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\/15534","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=15534"}],"version-history":[{"count":0,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/posts\/15534\/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=15534"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/categories?post=15534"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webcodegeeks.com\/wp-json\/wp\/v2\/tags?post=15534"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}