{"id":5125,"date":"2020-05-02T18:40:37","date_gmt":"2020-05-02T17:40:37","guid":{"rendered":"https:\/\/blog.fabianpiau.com\/?p=5125"},"modified":"2022-09-05T16:06:49","modified_gmt":"2022-09-05T15:06:49","slug":"flagger-get-started-with-istio-and-kubernetes","status":"publish","type":"post","link":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/","title":{"rendered":"Flagger &#8211; Get Started with Istio and Kubernetes"},"content":{"rendered":"<p><a class=\"lang\" href=\"https:\/\/blog.fabianpiau.com\/fr\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/\" title=\"Lire en fran\u00e7ais\"><strong class=\"labellang\"><span class=\"fr\">&nbsp;<\/span>Version fran\u00e7aise disponible<\/strong><\/a><\/p>\n<div class=\"info\"><strong class=\"label\">Update<\/strong><br \/>\n<strong>October, 17th, 2020 : <\/strong> Use newer versions (Helm 3, Kube 18, Istio 1.7).\n<\/div>\n<p>This series of articles is dedicated to <a href=\"https:\/\/flagger.app\/\" target=\"_blank\" title=\"Flagger\" rel=\"noopener noreferrer\">Flagger<\/a>, a tool that integrates with <a href=\"https:\/\/kubernetes.io\/\" target=\"_blank\" title=\"Kubernetes\" rel=\"noopener noreferrer\">Kubernetes<\/a>, the popular container orchestration platform. Flagger enables automated deployments and will be one step closer to a continuous deployment process.<\/p>\n<p>This article is the first of the series and also the only one where we won&#8217;t use Flagger yet&#8230; this article will walk through how you to run a Kubernetes cluster on your local environment and deploy an application which will be accessible via an <a href=\"https:\/\/istio.io\/\" target=\"_blank\" title=\"Istio\" rel=\"noopener noreferrer\">Istio<\/a> gateway.<\/p>\n<div class=\"info\"><strong class=\"label\">Note<\/strong><br \/>\nThis is a hands-on guide and can be followed step by step on MacOS. It will require some adjustments if you are using a Windows or Linux PC. It is important to note that this article will not go into details and only grasp the concepts &#038; technologies so if you are not familiar with Docker, Kubernetes, Helm or Istio, I strongly advise you to check some documentation yourself before continuing reading.\n<\/div>\n<p><br clear=\"none\" \/><\/p>\n<h4>Docker<\/h4>\n<p>Install Docker by installing the <a href=\"https:\/\/hub.docker.com\/editions\/community\/docker-ce-desktop-mac\/\" target=\"_blank\" title=\"Docker for Mac\" rel=\"noopener noreferrer\">Docker Desktop for Mac<\/a> application, you can refer to the <a href=\"https:\/\/docs.docker.com\/docker-for-mac\/install\/\" target=\"_blank\" title=\"Install Docker for Mac\" rel=\"noopener noreferrer\">official installation guide<\/a>. For Windows users, the equivalent application &#8220;Docker for Windows&#8221; exists.<\/p>\n<p>In the next part, we will also use Docker for Mac to set up our local Kubernetes cluster. Note that this tutorial has been tested with <a href=\"https:\/\/docs.docker.com\/docker-for-mac\/release-notes\/#docker-desktop-community-2400\" target=\"_blank\" title=\"Docker for Mac 2.4.0.0\" rel=\"noopener noreferrer\">Docker for Mac 2.4.0.0<\/a> that includes a Kubernetes Cluster in version 1.18.8, this is the latest at the moment of writing.<\/p>\n<blockquote><p>\nIf you use a different version, technology is moving fast so I cannot guarantee that the commands used in this series will work without any adjustment.\n<\/p><\/blockquote>\n<p><br clear=\"none\" \/><\/p>\n<h4>Mirror HTTP Server<\/h4>\n<p>First a few words about the application <a href=\"https:\/\/github.com\/eexit\/mirror-http-server\" target=\"_blank\" title=\"Mirror HTTP Server\" rel=\"noopener noreferrer\">Mirror HTTP Server<\/a> we will use in this series of articles.<\/p>\n<p>MHS is a very simple JavaScript application based  on <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\" title=\"Node.js\" rel=\"noopener noreferrer\">Node.js<\/a> using the framework <a href=\"https:\/\/expressjs.com\/\" target=\"_blank\" title=\"Express\" rel=\"noopener noreferrer\">Express<\/a> which allows you to customize the HTTP response received by setting specific HTTP headers in the request. The Docker image is <a href=\"https:\/\/hub.docker.com\/r\/eexit\/mirror-http-server\" target=\"_blank\" title=\"Mirror HTTP Server Docker Image\" rel=\"noopener noreferrer\">publicly available on the Docker Hub<\/a>. You can consult the <a href=\"https:\/\/github.com\/eexit\/mirror-http-server\" target=\"_blank\" title=\"Mirror HTTP Server\" rel=\"noopener noreferrer\">Github repo of the project <\/a> to find out more, please note that I am not the author.<\/p>\n<p>This little app is exactly what we need to test the capabilities of Flagger to simulate 200 OK responses and 500 Internal Server Error responses.<\/p>\n<p>Let&#8217;s pull the Docker image:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">docker<\/span> pull eexit\/mirror-http-server<br \/><\/div>\n\n<p>And run a new container that uses it:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">docker<\/span> run -itp 8080:80 eexit\/mirror-http-server<br \/><\/div>\n\n<p>Then let&#8217;s make sure it is functioning properly:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">curl<\/span> -I <span class=\"wp-shkshell-string\">'http:\/\/localhost:8080'<\/span><br \/><\/div>\n\n<p>You should receive an HTTP 200 OK response:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">HTTP<\/span>\/1.1 200 OK<br \/>X-Powered-By: Express<br \/>Date: Fri, 01 May 2020 17:57:17 GMT<br \/>Connection: keep-alive<br \/><\/div>\n\n<p>While:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">curl<\/span> -I -H X-Mirror-Code:500 <span class=\"wp-shkshell-string\">'http:\/\/localhost:8080'<\/span><br \/><\/div>\n\n<p>will return an HTTP 500 response:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">HTTP<\/span>\/1.1 500 Internal Server Error<br \/>X-Powered-By: Express<br \/>Date: Fri, 01 May 2020 17:57:45 GMT<br \/>Connection: keep-alive<br \/><\/div>\n\n<blockquote><p>\nFor simplicity, we use the curl command, but you can use your favourite tool, e.g. <a href=\"https:\/\/www.postman.com\/\" target=\"_blank\" title=\"Postman\" rel=\"noopener noreferrer\">Postman<\/a>.\n<\/p><\/blockquote>\n<p><br clear=\"none\" \/><\/p>\n<h4>Kubernetes<\/h4>\n<p>Now that you&#8217;ve installed Docker for Mac, having a Kubernetes cluster running locally will be a simple formality. You just need to check a box!<\/p>\n<div style=\"max-width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/docker-for-mac-enable-new.png?ssl=1\" rel=\"shadowbox[sbpost-5125];player=img;\" title=\"Enable Kubernetes with Docker for Mac\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/docker-for-mac-enable-new-thumbnail.png?resize=550%2C349&#038;ssl=1\" alt=\"Enable Kubernetes with Docker for Mac\" title=\"Enable Kubernetes with Docker for Mac\" width=\"550\" height=\"349\" class=\"size-medium wp-image-257\" \/><\/a><p class=\"wp-caption-text\">Enable Kubernetes with Docker for Mac<\/p><\/div>\n<p>If the light is green, then your Kubernetes cluster has successfully started. Please note, this requires a significant amount of resources, so don&#8217;t panic if the fan is running at full speed and it takes a bit of time to start&#8230;<\/p>\n<p><br clear=\"none\" \/><\/p>\n<h4>Kube dashboard<\/h4>\n<p>We will install our first application in our Kubernetes cluster.<\/p>\n<p>Kubernetes via Docker does not come with the dashboard by default, you have to install it yourself. This dashboard is very practical and provides a graphical interface of what is going on in your cluster and will save you from having to enter <code>kubectl<\/code> commands.<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/dashboard\/v2.0.4\/aio\/deploy\/recommended.yaml<br \/><\/div>\n\n<p>The dashboard is protected, but you can use the default user to access it. You can generate a default token via this command:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> -n kube-system describe secret default <span class=\"wp-shkshell-special\">|<\/span> <span class=\"wp-shkshell-command\">grep<\/span> token: <span class=\"wp-shkshell-special\">|<\/span> <span class=\"wp-shkshell-command\">awk<\/span> <span class=\"wp-shkshell-string\">'{print <span class=\"wp-shkshell-variable\">$2<\/span>}'<\/span><br \/><\/div>\n\n<p>Copy it.<\/p>\n<blockquote><p>\nYou will need to re-use this command and \/or the token copied if your session has expired, this happens when you don&#8217;t interact with the dashboard for a little while.\n<\/p><\/blockquote>\n<p>Finally, create a proxy to access the dashboard from the browser (this command will need to run indefinitely):<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> proxy<br \/><\/div>\n\n<p>If you access http:\/\/localhost:8001\/api\/v1\/namespaces\/kube-system\/services\/https:kubernetes-dashboard:\/proxy\/#!\/login and use the token that you copied to authenticate, you should see this screen.<\/p>\n<div style=\"max-width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/kube-dashboard-new.png?ssl=1\" rel=\"shadowbox[sbpost-5125];player=img;\" title=\"Kube Dashboard\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/kube-dashboard-new-thumbnail.png?resize=550%2C316&#038;ssl=1\" alt=\"Kube Dashboard\" title=\"Kube Dashboard\" width=\"550\" height=\"316\" class=\"size-medium wp-image-257\" \/><\/a><p class=\"wp-caption-text\">Kube Dashboard<\/p><\/div>\n<p><br clear=\"none\" \/><\/p>\n<h4>Helm<\/h4>\n<p>We use <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" title=\"Homebrew\" rel=\"noopener noreferrer\">Homebrew<\/a> for the installation of Helm. Homebrew is a handy package manager available for Mac.<\/p>\n<p>We will use <a href=\"https:\/\/helm.sh\/\" target=\"_blank\" title=\"Helm\" rel=\"noopener noreferrer\">Helm<\/a> to install Istio and the MHS application in our cluster. Helm is a bit like Homebrew, but for Kubernetes. We are using version 3. Helm will save you from having to enter many <code>kubectl apply<\/code> commands.<\/p>\n<p>Let&#8217;s install Helm 3 with:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">brew<\/span> install helm@3<br \/><\/div>\n\n<p>To verify that Helm has been installed:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">helm<\/span> version<br \/><\/div>\n\n<p>You should have a similar output (note that Helm 3.3.4 is the latest version at the time of writing):<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">version<\/span>.BuildInfo{Version:\"v3.3.4\", GitCommit:\"a61ce5633af99708171414353ed49547cf05013d\", GitTreeState:\"dirty\", GoVersion:\"go1.15.2\"}<br \/><\/div>\n\n<p><br clear=\"none\" \/><\/p>\n<h4>Istio &#038; Prometheus<\/h4>\n<p>Now, we are going to install the Istio Service Mesh. For full explanations and the benefits of using a Service Mesh, I invite you to read the <a href=\"https:\/\/istio.io\/latest\/about\/service-mesh\/\" target=\"_blank\" title=\"What is Istio\" rel=\"noopener noreferrer\">official documentation<\/a>.<\/p>\n<p>First of all, you must increase the memory limits of your Kubernetes via Docker, otherwise you will run into deployment issues. Your laptop&#8217;s fans will recover, don&#8217;t worry&#8230;<\/p>\n<p>Here is my configuration:<\/p>\n<div style=\"max-width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/docker-for-mac-config-new.png?ssl=1\" rel=\"shadowbox[sbpost-5125];player=img;\" title=\"Kubernetes Configuration in Docker for Mac for Istio\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/docker-for-mac-config-new-thumbnail.png?resize=550%2C349&#038;ssl=1\" alt=\"Kubernetes Configuration in Docker for Mac for Istio\" title=\"Kubernetes Configuration in Docker for Mac for Istio\" width=\"550\" height=\"349\" class=\"size-medium wp-image-257\" \/><\/a><p class=\"wp-caption-text\">Kubernetes Configuration in Docker for Mac for Istio<\/p><\/div>\n<p>I followed the <a href=\"https:\/\/istio.io\/latest\/docs\/setup\/platform-setup\/docker\/\" target=\"_blank\" title=\"Docker Desktop recommendations for Istio\" rel=\"noopener noreferrer\">Docker Desktop recommendations for Istio<\/a>.<\/p>\n<p>Let&#8217;s go and install Istio 1.7.3 (the latest version at the time of writing). First, download the source:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">curl<\/span> -L https:\/\/istio.io\/downloadIstio <span class=\"wp-shkshell-special\">|<\/span> <span class=\"wp-shkshell-command\">ISTIO_VERSION<\/span>=1.7.3 sh -<br \/><span class=\"wp-shkshell-prompt\"><\/span> <br \/><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">cd<\/span> istio-1.7.3<br \/><\/div>\n\n<p>Add the <code>istioctl<\/code> client to your path:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">export<\/span> PATH=<span class=\"wp-shkshell-variable\">$PWD<\/span>\/bin:<span class=\"wp-shkshell-variable\">$PATH<\/span><br \/><\/div>\n\n<p>Install Istio with the provided client, we use the <a href=\"https:\/\/istio.io\/latest\/docs\/setup\/additional-setup\/config-profiles\/\" rel=\"noopener noreferrer\" title=\"Istio Installation Configuration Profiles\" target=\"_blank\">demo profile<\/a>:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">istioctl<\/span> install --set profile=demo<br \/><\/div>\n\n<p>After a few minutes, you should get a message confirming that Istio has been installed. And voil\u00e0!<\/p>\n<blockquote><p>\nTo install the latest version of Istio, you can simply replace the first line with <code>curl -L https:\/\/istio.io\/downloadIstio | sh -<\/code>.\n<\/p><\/blockquote>\n<p>Add Prometheus as it&#8217;s required for Flagger:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> apply -f https:\/\/raw.githubusercontent.com\/istio\/istio\/release-1.7\/samples\/addons\/prometheus.yaml<br \/><\/div>\n\n<p>From the Kube dashboard, verify that a new namespace has been created <code>istio-system<\/code> and that it contains the Istio tools including <a href=\"https:\/\/prometheus.io\/\" target=\"_blank\" title=\"Prometheus\" rel=\"noopener noreferrer\">Prometheus<\/a>.<\/p>\n<div style=\"max-width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/istio-deployed-new.png?ssl=1\" rel=\"shadowbox[sbpost-5125];player=img;\" title=\"Istio is deployed in your cluster\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/istio-deployed-new-thumbnail.png?resize=550%2C316&#038;ssl=1\" alt=\"Istio is deployed in your cluster\" title=\"Istio is deployed in your cluster\" width=\"550\" height=\"316\" class=\"size-medium wp-image-257\" \/><\/a><p class=\"wp-caption-text\">Istio is deployed in your cluster<\/p><\/div>\n<blockquote><p>\nWhy is Prometheus important? Because it is an essential component for Flagger which will provide the metrics to show if the new version of your application is healthy or not, thus it will know when to promote or rollback a version. I will come back to this in detail in the next article.\n<\/p><\/blockquote>\n<p><br clear=\"none\" \/><\/p>\n<h4>Deploying Mirror HTTP Server<\/h4>\n<p>Before deploying MHS, let&#8217;s create a new namespace <code>application<\/code>, we don&#8217;t want to use the default one at the root of the cluster (this is good practice). The name is too generic, but sufficient for this tutorial, in general you will use the name of the team or the name of a group of features.<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> create ns application<br \/><\/div>\n\n<p>Do not forget to activate Istio on this new namespace:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> label namespace application istio-injection=enabled<br \/><\/div>\n\n<p>To deploy MHS, I created a <a href=\"https:\/\/helm.sh\/docs\/topics\/charts\/\" target=\"_blank\" title=\"Helm Chart\" rel=\"noopener noreferrer\">Helm chart<\/a>.<\/p>\n<p><a href=\"https:\/\/github.com\/fabianpiau\/mhs-chart\" target=\"_blank\" title=\"MHS Helm Chart\" rel=\"noopener noreferrer\">This chart<\/a> was created with the <code>helm create mhs-chart<\/code> command, then I updated to <a href=\"https:\/\/github.com\/fabianpiau\/mhs-chart\/commit\/bb992384546ad2dfc231c6264629d23cea7203e4\" target=\"_blank\" title=\"First commit\" rel=\"noopener noreferrer\">use the latest image of MHS<\/a>. I also added <a href=\"https:\/\/github.com\/fabianpiau\/mhs-chart\/commit\/ecbde2e254e8887b3ed73b081ea5a763860e6ce6\" target=\"_blank\" title=\"Second commit\" rel=\"noopener noreferrer\">a gateway.yaml file to configure the Istio gateway<\/a> so it can be accessible outside of the cluster.<\/p>\n<p>Clone the chart repo:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">git<\/span> clone https:\/\/github.com\/fabianpiau\/mhs-chart.git<br \/><\/div>\n\n<p>And install MHS:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">cd<\/span> mhs-chart<br \/>helm install --name mhs --namespace application .\/mhs<br \/><\/div>\n\n<p>After a few moments, if you look at the dashboard, you should see 1 replica of MHS in the namespace <code>application<\/code>.<\/p>\n<div style=\"max-width: 560px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/mhs-deployed-new.png?ssl=1\" rel=\"shadowbox[sbpost-5125];player=img;\" title=\"MHS is deployed in your cluster\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/post\/00095\/mhs-deployed-new-thumbnail.png?resize=550%2C316&#038;ssl=1\" alt=\"MHS is deployed in your cluster\" title=\"MHS is deployed in your cluster\" width=\"550\" height=\"316\" class=\"size-medium wp-image-257\" \/><\/a><p class=\"wp-caption-text\">MHS is deployed in your cluster<\/p><\/div>\n<p>You now have 1 MHS pod running in your Kubernetes cluster. The pod is exposed to the outside world via an Istio gateway.<\/p>\n<p>To test, use the similar commands that we used against the docker container earlier:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">curl<\/span> -I -H Host:mhs.example.com <span class=\"wp-shkshell-string\">'http:\/\/localhost'<\/span><br \/><\/div>\n\n<p>You should receive an HTTP 200 OK response that was handled by <a href=\"https:\/\/www.envoyproxy.io\/\" target=\"_blank\" title=\"Envoy proxy\" rel=\"noopener noreferrer\">Envoy<\/a>, the proxy used by Istio:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">HTTP<\/span>\/1.1 200 OK<br \/>x-powered-by: Express<br \/>date: Fri, 01 May 2020 17:37:19 GMT<br \/>x-envoy-upstream-service-time: 17<br \/>server: istio-envoy<br \/>transfer-encoding: chunked<br \/><\/div>\n\n<p>And:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">curl<\/span> -I -H Host:mhs.example.com -H X-Mirror-Code:500 <span class=\"wp-shkshell-string\">'http:\/\/localhost'<\/span><br \/><\/div>\n\n<p>should return an HTTP 500 response:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">HTTP<\/span>\/1.1 500 Internal Server Error<br \/>x-powered-by: Express<br \/>date: Fri, 01 May 2020 17:38:34 GMT<br \/>x-envoy-upstream-service-time: 2<br \/>server: istio-envoy<br \/>transfer-encoding: chunked<br \/><\/div>\n\n<p>Congratulations, you&#8217;ve come to the end of this first tutorial!<\/p>\n<blockquote><p>\nFor information, you can also access MHS with your favourite browser if you run a proxy command first to expose the pod:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">export<\/span> POD_NAME=$(<span class=\"wp-shkshell-command\">kubectl<\/span> get pods --namespace application -l <span class=\"wp-shkshell-string\">\"app.kubernetes.io\/name=mhs,app.kubernetes.io\/instance=mhs\"<\/span> -o jsonpath=\"{.items[<span class=\"wp-shkshell-command\">0<\/span>].metadata.name}\")<br \/><span class=\"wp-shkshell-prompt\"><\/span> <br \/><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> port-forward --namespace application <span class=\"wp-shkshell-variable\">$POD_NAME<\/span> 8080:80<br \/><\/div>\n\n<p>Then, navigate to <a href=\"http:\/\/localhost:8080\/\" target=\"_blank\" title=\"Localhost MHS\" rel=\"noopener noreferrer\">http:\/\/localhost:8080\/<\/a>.<\/p>\n<p>You should see a&#8230; blank page. This is normal, MHS does not return a body in the response and there is no HTML output!\n<\/p><\/blockquote>\n<p><br clear=\"none\" \/><\/p>\n<h4>Cleaning up resources<\/h4>\n<p>You can delete the MHS application and its namespace.<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">helm<\/span> delete mhs --namespace application<br \/><span class=\"wp-shkshell-prompt\"><\/span> <br \/><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> delete namespaces application<br \/><\/div>\n\n<p>We don&#8217;t remove Istio \/ Prometheus because we will need it in the next article, but if you want to free up some resources, you can use these commands:<\/p>\n\n<div class=\"wp-shkshell\"><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> delete -f https:\/\/raw.githubusercontent.com\/istio\/istio\/release-1.7\/samples\/addons\/prometheus.yaml<br \/><span class=\"wp-shkshell-prompt\"><\/span> <br \/><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">istioctl<\/span> manifest generate --set profile=demo <span class=\"wp-shkshell-special\">|<\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> delete -f -<br \/><span class=\"wp-shkshell-prompt\"><\/span> <br \/><span class=\"wp-shkshell-prompt\"><\/span> <span class=\"wp-shkshell-command\">kubectl<\/span> delete namespaces istio-system<br \/><\/div>\n\n<p><br clear=\"none\" \/><\/p>\n<h4>What&#8217;s next?<\/h4>\n<p>The <a href=\"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/19\/flagger-canary-deployments-on-kubernetes\/\" rel=\"noopener\" title=\"Flagger \u2013 Canary deployments on Kubernetes\">next article<\/a> will focus on the installation of Flagger and use different versions of MHS to try canary deployments. Stay tuned! In the meantime, you can stop the Kubernetes cluster by unchecking the box and restarting Docker Desktop. Your computer deserves a break.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;Version fran\u00e7aise disponible Update October, 17th, 2020 : Use newer versions (Helm 3, Kube 18, Istio 1.7). This series of articles is dedicated to Flagger, a tool that integrates with Kubernetes, the popular container orchestration platform. Flagger enables automated deployments and will be one step closer to a continuous deployment process. This article is the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[110,292,289,291,290,288],"class_list":["post-5125","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile-programming","tag-cloud","tag-docker","tag-flagger","tag-helm","tag-istio","tag-kubernetes"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Flagger - Get Started with Istio and Kubernetes | CarmaBlog<\/title>\n<meta name=\"description\" content=\"&nbsp;English version available Mise \u00e0 jour 17 Octobre 2020 : Utilisation de versions plus r\u00e9centes (Helm 3, Kube 18, Istio 1.7). Cette s\u00e9rie d&#039;articles\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flagger - Get Started with Istio and Kubernetes | CarmaBlog\" \/>\n<meta property=\"og:description\" content=\"&nbsp;English version available Mise \u00e0 jour 17 Octobre 2020 : Utilisation de versions plus r\u00e9centes (Helm 3, Kube 18, Istio 1.7). Cette s\u00e9rie d&#039;articles\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"CarmaBlog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/fabian.piau\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/fabian.piau\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-02T17:40:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-05T15:06:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fabian Piau\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@fabianpiau\" \/>\n<meta name=\"twitter:site\" content=\"@fabianpiau\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fabian Piau\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/\"},\"author\":{\"name\":\"Fabian Piau\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"headline\":\"Flagger &#8211; Get Started with Istio and Kubernetes\",\"datePublished\":\"2020-05-02T17:40:37+00:00\",\"dateModified\":\"2022-09-05T15:06:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/\"},\"wordCount\":2897,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1\",\"keywords\":[\"cloud\",\"docker\",\"flagger\",\"helm\",\"istio\",\"kubernetes\"],\"articleSection\":[\"Agile programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.fabianpiau.com\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/\",\"name\":\"Flagger - Get Started with Istio and Kubernetes | CarmaBlog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1\",\"datePublished\":\"2020-05-02T17:40:37+00:00\",\"dateModified\":\"2022-09-05T15:06:49+00:00\",\"description\":\"&nbsp;English version available Mise \u00e0 jour 17 Octobre 2020 : Utilisation de versions plus r\u00e9centes (Helm 3, Kube 18, Istio 1.7). Cette s\u00e9rie d'articles\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[[\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/\"]]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2020\\\/05\\\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1\",\"width\":300,\"height\":300,\"caption\":\"kubernetes\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/2020\\\/05\\\/02\\\/flagger-get-started-with-istio-and-kubernetes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Homepage\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmation agile\",\"item\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/category\\\/agile-programming\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Flagger &#8211; Get Started with Istio and Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/\",\"name\":\"CarmaBlog\",\"description\":\"Agility, Java programming, New technologies and more...\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.fabianpiau.com\\\/en\\\/#\\\/schema\\\/person\\\/c5cbffd7cf0b10117877f5dfd1b35f14\",\"name\":\"Fabian Piau\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\",\"width\":567,\"height\":667,\"caption\":\"Fabian Piau\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/blog.fabianpiau.com\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/fabian-pro-small.jpg?fit=567%2C667&ssl=1\"},\"description\":\"Java developer, Fabian is interested in new technologies and their use within an Agile environment.\",\"sameAs\":[\"https:\\\/\\\/blog.fabianpiau.com\",\"https:\\\/\\\/www.facebook.com\\\/fabian.piau\",\"https:\\\/\\\/www.instagram.com\\\/fabianpiau\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/fabianpiau\\\/\",\"https:\\\/\\\/x.com\\\/fabianpiau\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flagger - Get Started with Istio and Kubernetes | CarmaBlog","description":"&nbsp;English version available Mise \u00e0 jour 17 Octobre 2020 : Utilisation de versions plus r\u00e9centes (Helm 3, Kube 18, Istio 1.7). Cette s\u00e9rie d'articles","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:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/","og_locale":"en_US","og_type":"article","og_title":"Flagger - Get Started with Istio and Kubernetes | CarmaBlog","og_description":"&nbsp;English version available Mise \u00e0 jour 17 Octobre 2020 : Utilisation de versions plus r\u00e9centes (Helm 3, Kube 18, Istio 1.7). Cette s\u00e9rie d'articles","og_url":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/","og_site_name":"CarmaBlog","article_publisher":"https:\/\/www.facebook.com\/fabian.piau","article_author":"https:\/\/www.facebook.com\/fabian.piau","article_published_time":"2020-05-02T17:40:37+00:00","article_modified_time":"2022-09-05T15:06:49+00:00","og_image":[{"width":300,"height":300,"url":"https:\/\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png","type":"image\/png"}],"author":"Fabian Piau","twitter_card":"summary_large_image","twitter_creator":"@fabianpiau","twitter_site":"@fabianpiau","twitter_misc":{"Written by":"Fabian Piau","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.fabianpiau.com\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#article","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/"},"author":{"name":"Fabian Piau","@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"headline":"Flagger &#8211; Get Started with Istio and Kubernetes","datePublished":"2020-05-02T17:40:37+00:00","dateModified":"2022-09-05T15:06:49+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/"},"wordCount":2897,"commentCount":0,"publisher":{"@id":"https:\/\/blog.fabianpiau.com\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1","keywords":["cloud","docker","flagger","helm","istio","kubernetes"],"articleSection":["Agile programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.fabianpiau.com\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/","url":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/","name":"Flagger - Get Started with Istio and Kubernetes | CarmaBlog","isPartOf":{"@id":"https:\/\/blog.fabianpiau.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/blog.fabianpiau.com\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1","datePublished":"2020-05-02T17:40:37+00:00","dateModified":"2022-09-05T15:06:49+00:00","description":"&nbsp;English version available Mise \u00e0 jour 17 Octobre 2020 : Utilisation de versions plus r\u00e9centes (Helm 3, Kube 18, Istio 1.7). Cette s\u00e9rie d'articles","breadcrumb":{"@id":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":[["https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/"]]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#primaryimage","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1","width":300,"height":300,"caption":"kubernetes"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.fabianpiau.com\/en\/2020\/05\/02\/flagger-get-started-with-istio-and-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Homepage","item":"https:\/\/blog.fabianpiau.com\/en\/"},{"@type":"ListItem","position":2,"name":"Programmation agile","item":"https:\/\/blog.fabianpiau.com\/en\/category\/agile-programming\/"},{"@type":"ListItem","position":3,"name":"Flagger &#8211; Get Started with Istio and Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/blog.fabianpiau.com\/en\/#website","url":"https:\/\/blog.fabianpiau.com\/en\/","name":"CarmaBlog","description":"Agility, Java programming, New technologies and more...","publisher":{"@id":"https:\/\/blog.fabianpiau.com\/en\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.fabianpiau.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.fabianpiau.com\/en\/#\/schema\/person\/c5cbffd7cf0b10117877f5dfd1b35f14","name":"Fabian Piau","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","contentUrl":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1","width":567,"height":667,"caption":"Fabian Piau"},"logo":{"@id":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2022\/08\/fabian-pro-small.jpg?fit=567%2C667&ssl=1"},"description":"Java developer, Fabian is interested in new technologies and their use within an Agile environment.","sameAs":["https:\/\/blog.fabianpiau.com","https:\/\/www.facebook.com\/fabian.piau","https:\/\/www.instagram.com\/fabianpiau\/","https:\/\/www.linkedin.com\/in\/fabianpiau\/","https:\/\/x.com\/fabianpiau"]}]}},"views":1473,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/blog.fabianpiau.com\/wp-content\/uploads\/2020\/05\/kubernetes-thumbnail.png?fit=300%2C300&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbSHyl-1kF","_links":{"self":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts\/5125","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/comments?post=5125"}],"version-history":[{"count":0,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/posts\/5125\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/media\/5126"}],"wp:attachment":[{"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/media?parent=5125"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/categories?post=5125"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fabianpiau.com\/en\/wp-json\/wp\/v2\/tags?post=5125"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}