DevOps with Azure, Kubernetes, and Helm

DAN: Thanks for waiting for us to get started here I’m sitting here next to to Jessica Deen She’s got her own camera on her as well I’m really excited to have everybody here today Jessica has prepared a really fantastic presentation We’ve been looking over it that last few days, and really, this is something that’s been developing probably over the last year almost JESSICA: Yeah DAN: I mean, I feel that I’ve seen evolutions of this, and now, it’s much more refined and impressive and awesome So, we’re very excited to have that Why don’t you go ahead and introduce yourself? I’ll turn off my mic, and you need your mic, and I think it’ll work best that way JESSICA: OK Let me make sure that I unmute myself Perfect Perfect transition! Look at this teamwork No, it really has been about a year It’s actually kind of cool, because we met at a swampUP back in May of last year DAN: Yeah, which is coming up again JESSICA: I know! We’re both going to be there again DAN: Yeah JESSICA: Imagine that SwampUP, JFrog So, I am Jessica Deen A little about me, my background… I am super into Linux, open source, containers, IT/Ops—so, primarily not a developer background—and I don’t often throw DevOps into that particular bulletpoint, because I kind of feel like all four of those areas kind of imply DevOps, and we’ll talk about that We’ll talk about how DevOps is really just kind of the world that we all live in at this point Some nontechnical things about me… I am super into CrossFit and training I try to drop into a CrossFit gym wherever I am—or at the very least, a gym—and I’m usually doing crazy that people end up looking at me funny for I’m also a huge Disney and Star Wars fan, and I don’t just say that lightly I actually have Han Solo’s blaster tattooed on me and Luke Skywalker’s hilt I have a fandom crossover theme with some Star Wars quote and Gallifreyan from Doctor Who DAN: Plus, it used to be that you had to compete between Disney and Star Wars, and now you can just love them together JESSICA: I can, and I can love Marvel now I no longer have to cheat on my geeky loves And then one more thing that goes back to tech is I’m also a member of what we call the League of Extraordinary Cloud DevOps Advocates What that is, is we are a team of cloud developer advocates (or DevOps-focused) at Microsoft, and our job is to focus specifically on the DevOps culture and to kind of educate developers and IT operations on good—not good, best—best DevOps practices What I love most about our team is we are actually really well-balanced We have Abel and Damien on the left there Myself and Steven on the right side tends to have more of an operations background The left, including our fearless leader, Donovan Brown, has more of a developer background, so we really get to kind of embody that developer and operations/DevOps kind of culture that we’ll talk about today You can reach out to us by hashtagging on Twitter #LoECDA That’s actually our bat signal We’ll get a notification in our Microsoft Teams room any time that hashtag is used, and if you have a question or comment or want to talk about Star Wars, we’ll all come to your rescue A little bit more is, while our team is awesome, we are only a small part of a larger cloud developer advocacy group at Microsoft There are about 60 of us worldwide, and we have all different focuses from Linux, open source, ASP.net, DevOps, machine learning, AI, IoT We have some really amazingly talented individuals on our team, who if you have, again, any kind of issue, #azureavengers or follow us @azureadvocates, and you’ll get 60 people coming to your rescue to answer your question DAN: Yeah, I’ve pinged the team a few times on Twitter and found them very responsive JESSICA: Yeah, again, 60 people around the world We have every time zone covered It’s pretty awesome Now, let’s talk about Codefresh DAN: Let’s swap mics again, so we can get a proper… 3, 2, 1… JESSICA: Otherwise, we’re going to get this inception… DAN: I’ll tell you what Codefresh is Codefresh, basically, what we found is that it’s people are adopting Kubernetes that there are so many things to figure out: how to build images, store the images, how to deploy them, how to change management And we found that it would be really, really effective to build a platform that basically brought all of these elements into one place Codefresh is really the workhorse engine of your engineering team [00:05:00] and DevOps

team, where it’s going to build your images, it’s going to store them for you, and it’s going to connect all of your testing It has built-in steps for working with Helm, etc Really, it’s four main components We have these Kubernetes CI/CD pipelines That means they’re pipelines that are designed to get code onto Kubernetes and get it deployed There are self-service environments, so you can actually spin up instances of your application on demand, which you’ll actually see today, so you can, basically, get your full application suite, your full micro-services architecture running We have release management through Helm, and then we have Docker and Helm registry built in That’s what Codefresh is Basically, the goal is you want to commit code, you want to go through a build process, you want to build your chart, you want to run integration tests, performance tests, security tests, really functional tests that take into account the micro-service architecture and test the infrastructure code, because with Helm and Docker, you can actually define the code for your infrastructure Let’s test that, and then let’s push it all up and deploy it into production That’s what Codefresh is, and that’s the intro for Codefresh JESSICA: And we’ll get to see, actually, just how awesome that is today I work with a lot of different CI/CD tools, but one of the things that Codefresh has that no other tool has is the ability to visualize your deployments with your Kubernetes clusters, with your Helm deployments You actually have a built-in dash that’s really powerful and insightful, so we’ll show that today DAN: I’m going to put that on a t-shirt, Jessica JESSICA: I’ll wear it Look, I’m even wearing my Codefresh container shirt! I plan ahead So, let’s go ahead and kind of dive into it I know we only have an hour, and there’s a lot to cover First off, we’re going to go through a DevOps overview, and that’s really essential so we can understand more about container orchestration and how it plays into DevOps Then, we’ll talk about Kubernetes, we’ll talk about Helm, and then we’ll go into a live demo First off, let’s go ahead and talk about IT—and when I say IT, I mean the developer world and the operations world We’re changing, and we’re changing rapidly This was a study that was done a few years ago by Gartner, and we are going digital, if not some of us has have already gone digital They estimated in their study that by 2020, 1 million devices per hour would be coming online 1 million That’s a lot of devices! The average age of an S&P 500 corporation by that same year would be 12 years of age Compare that to the 1960s, where it was 60 years of age Then, I always save the last statistic for last, not only because it is last, but because I find this to be, actually, the most shocking They estimate that 60% of computing will be done in the public cloud by 2025, but that’s only about 7 years away, and we’re already seeing such a shift to the cloud We’re seeing workloads being done either in hybrid scenarios, full-cloud scenarios, or on-prem companies already pushing for “Where’s the cloud? How do I get to the cloud?” You have your grandmother talking about the cloud, but when she does, it’s “the cloud.” There are air quotes Actually, I told this story when I was in Orlando I was having breakfast at this place called Angelina’s, and there happened to be another mother and daughter sitting next to me that spoke English, which was refreshing She asked me what I do and what I was in Paris for—this was a few weeks ago—and I told her I worked for Microsoft, and I, essentially, am a public speaker She looks at me immediately and says, “Do you know where the cloud is?” I said, “I do know where the cloud is! Actually, I talk about the cloud constantly.” DAN: “It’s where I work!” JESSICA: “I work in the cloud!” Well, her immediate reply when I told her I knew where it was, was, “I’m going to tell everyone I met the cloud, and the cloud’s name is Jessica!” I thought that was hilarious But it’s true, right? We have to start thinking about the cloud From a Microsoft perspective, we wanted to take a poll from both developers and operations If you’re on the dev side, tell me if any of these sound familiar… “I need to create applications at a competitive rate without worrying about IT.” “New applications run smoothly on my machine, but it malfunctions as soon as it hits your server, Mr. and Mrs. IT person,” which I would get that all the time “Well, it works fine on my machine What’s wrong with your server?” And then the final is “My productivity and application innovation become suspended when I have to wait on IT, so become the bottleneck for the developer.” But then, on the flip side, because we have to give love also to IT, what we end up hearing is that “I need to manage servers and maintain compliance without any kind of disruption, so I can’t just give you, Mr. and Mrs. Developer, access to my servers.” Also, [00:10:00] “I’m unsure of how to integrate unfamiliar applications, and I need

to work with you as the developer.” “I’m unable to focus on both server protection and application compliance.” There’s really kind of this gap that we have to figure out how to meet between developers and operations That’s really kind of where the conversation for DevOps starts In this particular slide, IT stress points, it’s not just IT or operations; it’s IT and developers We all have to worry about security threats We all have to worry about efficiency, and we all have to support this rapid innovation we’re talking about That’s why the cloud is important It’s the new way to think about your data center The old traditional model was dedicated infrastructure for each application The hardware you used was purpose-built Your infrastructure and operations teams were distinct and separated, especially from your developers And the processes and configurations you had were customized for each project, but it’s not really scalable Now, with the cloud model, you have loosely coupled apps and micro-services, compared to giant, monolithic applications that fell under the traditional model You now have industry-standard hardware Your teams that you have for infrastructure, operations, and development are service-focused DevOps teams, and your processes and configurations now are standardized across the board, so each project is going to be able to be repeatable and immutable, and that’s really why the cloud model is important That’s where the conversation for DevOps starts We start with people, as we’ve talked about—developers and IT—and then we have to go into process and products I love the quote, actually My boss (the little Dono dude down there) is a South Park character! But I love this quote, and he actually spent 30 days coming up with this quote so that every single word here is something that he could stand behind and something that every single one of his team members can stand behind “DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.” And I’m very specific when I use the word “products” as opposed to “tools,” because again, a tool, if you think of a hammer or nail or some 4×4’s, and you’re trying to build a house, the tools individually aren’t going to build a house, but if you, again, have the union of the right people, a process and a plan in mind, and then you use these products to your benefit, you’re able to create a really beautiful end result And more importantly, you’re able to produce something valuable to whomever your audience is That’s really where DevOps comes in, and that’s why it’s important We’ve talked about people Now, we’re going to move right on into process The process is kind of four parts You have a plan where you have to know where you’re going You map out what your goal is for this particular product release or application release, and you move right into your development stage You have your development tests, and that’s where we would call that more of CI or continuous integration if you’re using DevOps practice words You heard Dan mention earlier Codefresh is a CI/CD tool, but often, since we in tech use so many acronyms, and it becomes alphabet soup, we forget to define what that means Continuous integration is your build that’s continuously building with some automation After you have your build with your unit tests and your code and everything in your version control and source control, you take an artifact that’s been tested, that’s been ready for release to your dev, your QA, and your production environments, and then you hand it off to the third step, to your release stage Your release is also your continuous deployment (or your CD step) We’ll walk through that when we get to the demo The fourth step is also really essential, is “What products can we use that will give us insight into how successful our deployment was? How can we monitor and learn from what went right and what went wrong, and be able to repeat that in the next iteration, the next release?” Again, you heard me use some of these words You have continuous integration and continuous deployment for your build and release Infrastructure as code (IaC) is also a new one specifically to IT That’s where you’re able to take your infrastructure, keep it in source control, but be able to stand it up as part of your code That’s why Dan mentioned that Helm and Kubernetes really give us that ability by standing up our services, standing up our networking, standing up our infrastructure that we previously… Back when I first started, I would have to set up a virtual machine and configure everything

manually [00:15:00] Now, I can deploy the app, the infrastructure, everything simultaneously, and it’s all in source control, so if I have a failure, I can roll back to something previously validated, but the idea is, in the build stage, it’s already tested, and I don’t have to worry about it potentially failing in production DAN: Yeah, and I would add that this is really kind of the dream of… the Holy Grail of Kubernetes and Docker and containers This infrastructure is, essentially, ephemeral, that we’re not sending up environments; we’re defining environments, and we’re allowing the scheduler to set it up for us This also goes back to testing your code is one thing, and testing your infrastructure is the next layer down, and it’s actually super critical because most of us think about introducing errors and regressions as code things, but in fact, most real downtime that happens… When AWS went down last year, people couldn’t turn off their ovens anymore—sad state of affairs It was because of a configuration change that wasn’t tested So, making it so that we can… Infrastructure as code means we can test it as code JESSICA: Yep DAN: It’s incredibly powerful JESSICA: We can have the same unit test the developers have been using with their code We tie that into our architecture, which again, coming from an IT operations background, that wasn’t something that was native, but now, having these tools that make it simple, we don’t have to think about it a second time Then, other things… Load testing and auto-scale, feature flags… There are so many different practices, but some of these keywords you’ll see how continual orchestration plays on, and specifically, Kubernetes and Helm I have a funny video This was a video I recorded at KubeCon last year in Austin Dan was there, too The funny thing… It’s very basic container orchestration It’s supposed to help understand what container orchestration is from a very, very high level Before we actually finished wrapping, a woman had come by, and she was watching us as we were finishing our last take She actually tells us that she had been at KubeCon all week—she was one of the volunteers—but she didn’t actually understand what was going on She’s not technical, and after watching the video, she actually said, “I think I finally get it When something fails, it’s still up.” We’re like, “Yeah, from a very high level, that’s the entire purpose That’s what we want you to take away.” I’ll go ahead and play it It’s less than two minutes JESSICA: Hi My name is Jessica Deen, and I’m a cloud developer advocate at Microsoft here at KubeCon ERIK: And I am Erik St. Martin, and I’m also a cloud developer advocate at Microsoft, but I am not at KubeCon JESSICA: Then how are you right next to me? ERIK: You’re not at KubeCon either JESSICA: What? ERIK: We’ve got a green screen and an amazing producer JESSICA: This is some really good virtualization So, what are we doing today? ERIK: We’re going to do a live demonstration of container orchestration in something like Kubernetes JESSICA: I’m really excited Let’s get started ERIK: Over here, we have our image repository, filled with containers that we would like to deploy Jessica is going to be our scheduler JESSICA: Apparently ERIK: So, here’s your first container—and go! We’ve fixed the Docker file, and we’re going to deploy this one JESSICA: Yay! ERIK: Sweet JESSICA: And we can have multiple schedulers, especially for the sake of time ERIK: Here we go Containers… Lots of containers! JESSICA: So, let’s make sure that we also get our bin packing in order here ERIK: We don’t want any leftover memory JESSICA: Nope We’ve got to be efficient Always efficient Look at all of these apps we’re deploying This is going to be the best node ever I’m so excited for this node Look at this! It’s so pretty I just can’t wait to see this node done This is going to be my favorite node ever ERIK: It’s the best one Hey, Zach ZACH: What’s up, man? What are you guys doing? ERIK: We’re trying to show container orchestration JESSICA: Yeah, we just deployed a node one on the server with a bunch of apps ZACH: Do you mind if I— JESSICA: Well, actually, now we have node failure What are we going to do? ZACH: I don’t know! ERIK: We actually have a Kubernetes cluster JESSICA: That’s right! ERIK: So, let’s see what happens… JESSICA: Yeah, let’s go over to our other node Look at that! Thanks to Kubernetes, we’ve taken all of our failed containers, and now we’ve migrated them over to this awesome second node This is fantastic ERIK: Magic JESSICA: I really hope this helps explain how orchestration works Thanks for watching, social media! JESSICA: So, the video itself, obviously, is meant to be funny I have to restart my camera here The video, obviously, is meant to be funny In case it didn’t come through in the webinar, I know that Dan, I think, might have placed a video or something… We’ll make sure that the video itself is included at the end, so you can go watch it smoothly on your own But again, it’s supposed to kind of help explain from a very high level Let’s go ahead and dive into containers

[00:20:00] One of the questions when I first started giving this session was, “That’s really great information I love that you’re passionate about Kubernetes and Helm and all these deployment tools, but what is a container? What is an image?” Very simply put, containers is operating system virtualization Traditional virtual machines was hardware virtualization So, if you think about the difference, you actually have the operating system itself The containers are sitting on top of the kernel, whereas with virtual machines, you have individual virtual machines and individual operating systems sitting on top of that, so it’s just another way to kind of take that box and make it faster and more portable You can also get into Windows containers, where even if you went into Hyper V, that’s additional isolation and additional performance Hyper V containers will actually isolate the kernel itself Let’s go to the next Container itself, it’s very blunt It’s not an actual real thing It’s an application delivery mechanism with process isolation, and it’s based on several Linux kernel features, actually Again, my background coming from open source, really kind of seeing how even with Windows containers, it’s playing off of these key features, right? You’ll hear, especially in Kubernetes, two different words probably You’ll end up hearing “namespaces,” and you’ll hear “Cgroups.” To, again, separate it and make it simple, namespaces is what a process can see—that’s your PID, your mount, your network, your user, and your Cgroup But the Cgroup itself is what a process can use That’s the memory, the CPU, devices, etc And then people asked, “OK, that’s great with containers, but what is Docker? How does Docker play in? We’re talking about Kubernetes Why is Docker a part of this as well with your Docker image?” Docker is an open-source runtime It has Mac, Windows, and Linux support It is also a command line tool They do also have GUI as well for people who prefer clicky-clicky to typing a command line My hashtag is “no clicky-clicky,” so I use the command line And then, it actually uses what’s called the Dockerfile file format for building these container images It allows you to encapsulate your runtime environment in one file The Docker image format, actually, is a layered file system, which is really key Here’s a sample Docker file that’s the world’s simplest You have FROM, COPY, and CMD, and then you use the Docker build command to build it The “-t” would tag it or create a name for it, and the period at the end of that particular command is that it’s assuming you’re in the local directory where your file is, and then you would run is by simply saying “docker run,” and then the name of what you called your image, and that’s going to run “hello.” But here’s how that layer works… So, you actually see individual image layers that are read only, and they sit on top of a base image In this case, we’re doing Ubuntu 15.04 The top part, which is the random UUID, that’s the actual container up there where read/write goes into that particular layer Codefresh actually does something really unique with the way the Docker layers for images are handled Dan, do you want to talk about that? DAN: Yes So, basically, the key element here is that when you’re building a Docker image, it’s made up of all these layers, and this is actually going to be really important when you’re building your build source, so whatever it is that you’re going to use to automatically build these images, you want to make sure that you can actually cache these layers and reuse them, because a lot of the changes that you make to an image happen at the top layer because that’s where your software is All of your dependencies and things, they’re down in these lower layers, so you can actually get a ton of speed out of optimizing your build flow to take these layers into account, which is something that we’ve done at Codefresh as one of our core optimizations that we do make sure that our build times are really fast JESSICA: I love that part Again, just the faster that everything is, the faster the build can produce, and you’re able to move forward with your cycle—remember the circle? So, let’s take another look at virtualization versus containerization You kind of have two different types of virtualization One uses a hypervisor sitting on top of a host operating system, sitting on top of hardware The other is just a hypervisor on top of hardware You can think of VMWare ESXi on Type 1, and then, say Hyper V as part of a Windows server sitting on top of hardware as Type 2 And the containerization is pretty much anything

You have the hardware [00:25:00] You have the host operating system The Docker engine sits on top of that, and then you have any dependencies sitting on top of the Docker engine and your containers with any application dependencies sitting on top of that, completely encapsulated Advantages of using containers… Remember, we talked about the pain points for both developers and IT and how they’re different Containers really addresses both of those issues For developers, it addresses fast iteration, agile delivery, immutable (it can work the same [inaudible 00:25:37]) And for IT, efficient deployment and even elastic bursting We have to move from a private into a public cloud immediately, based on demand So, we’ve talked about containers We’ve talked about Docker images We’re going to dive right into container orchestration Elements of orchestration are scheduling You’ve heard Dan mention the word scheduling, which ties into Kubernetes You have affinity and anti-affinity health monitoring, failover, scaling, networking, service discovery, and even coordinated app upgrades Using a container orchestrator gives you all of these benefits DAN: Yeah, and I would add, if you’re feeling like this is a lot of information—and it certainly is—we will post it, and we’ll have the slides available A lot of this is going make sense as we demonstrate some of it live JESSICA: Yeah There’s a lot When I start going into the demo… I used to do a lot more of a demo-heavy, but the feedback I would get at the end is, “I still don’t understand what Kubernetes is or how it works It’s so big, and it has so much that ties into it, and I don’t understand how Docker plays into these images, and how are all of these pieces actually fitting together?” So, I know this is a lot of information, but we kind of just have to go through it so that it makes the demo make more sense So, Kubernetes is the de-facto orchestrator It’s portable, meaning it can run on public, private, hybrid, or multi-cloud environments It’s extensible, and most importantly, it’s self-healing You have auto placement, auto restore, auto replication, auto scaling, just like we saw in the video Kubernetes as a whole empowers you to do more You can deploy your applications quickly and predictably You can scale your applications You can roll out new features seamlessly, and you’re able to also limit hardware usage to require resources only So, now let’s dive even further into just Kubernetes What is Kubernetes? Just like we defined Docker, Kubernetes is an open-source container orchestrator that automates deployment, scaling, and management of applications It was originally created by Google, actually, and it was donated to the Cloud Native Foundation, actually As of, I think, just a few weeks ago, it was the first, as of right now, and only project to have graduated from the Cloud Native Foundation, and you can go read about that, actually, on their blog But features that it includes: automatic bin-packing (which, again, you heard of in the video), self-healing, horizontal scaling, service discovery and load balancing All of these features Kubernetes brings play right into container orchestration and DevOps practices We keep talking about how portable it is and agile Here’s a visualization You have your server sitting down at the bottom, you have a happy little developer IT person off to the left, and you have your container orchestrator right there in the middle with the blue It’s agile By having the container orchestrator, I can seamlessly move those apps over into the orchestrator space, and it’s sitting on top of several servers It’s scalable I can, in one command, add more workers or nodes to that server cluster so that when I want to deploy more applications, I’m able to do so seamlessly And the most important, as we demoed in the video, it’s reliable, so in the event that we do have servers that go down, especially when you’re using a managed Kubernetes service, it’s self-healing, so it will spin new servers up, and the apps that you deployed are still up as well So, if you want to go and play with Kubernetes and get started, you can actually go to Minikube You can go to GitHub and download Minikube That’s a local that doesn’t require any kind of cloud You can get started with it there In the cloud, Azure has several different options You can do ACS, AKS (which we’re going to talk about today), and ACI (which is just an Azure container instance, but it’s backed by Kubernetes) Amazon has their EKS, and Google, for their Google cloud platform, has GKE for Google Kubernetes Engine Every major cloud provider has some access for Kubernetes The ACS and AKS that Microsoft offers is our container service, but one is managed, and one is unmanaged, and we’ll talk about what that means So, with AKS, it is [00:30:00] your Kubernetes cluster completely, and it’s managed by

Azure; it’s managed by us We really recommend and push AKS because it is the fastest path to Kubernetes on Azure, and you can get up and running with three simple commands I like to argue it’s technically two if you already have the local Kubernetes tool installed on your system It’s easy to manage You can do automated upgrades and patching, you can easily scale the cluster up and down, and it’s a self-healing control plane It’s also 100% upstream Kubernetes When is aid you can get started with three commands, I meant three commands So, getting started means that to create my cluster, I simply do an “az” for Azure CLI: “az aks create.” I put my resource group name in and my cluster name I can tell it to generate ssh keys if I want, or I can specify my own, and it will go create the cluster The second command for “az aks install-cli” is actually optional That’s where it’s going to download kubectl to your local system, but if you already have that installed, you don’t have to run that command again The third command is actually what’s going to create the link from your local system to your Kubernetes cluster in Azure The “az aks get-credentials” is going to take your context, your config file and save that locally And what’s cool about this command is even if you have multiple clusters you want to manage, every time you run that command, it’s just going to merge your clusters It’s not going to override anything DAN: Yeah, and I would add that what you find, because there are some people in the chat talking about Minikube… Minikube is really great for learning the mechanics of the underlying principles of Kubernetes It doesn’t quite replicate a real Kubernetes cluster There are some nuances And actually, in order to just get something up and running and start playing with it, I find that this is actually a lot easier I mean, it’s just “az aks create,” and you’re basically off to the races, and even you’ll install the kubectl for me Three commands to have a Kubernetes cluster up and running I can play with it I can try to deploy to it It’s a really, really great way to get up and running and get started and just see how easy it can be to start using Kubernetes You don’t have to understand all of the etcd underlying node architecture to actually get value out of it, which is true, too, of… I mean, if you think about it, we all used VPS back in the day We’ve all used EC2 instances We may not understand the underlying architecture or how people make that happen, but we can use it, and I think this is perfect for getting something that’s managed and works JESSICA: And what’s also really interesting is that command gives you three nodes, so rather than just having Minikube, which is local on one system, you actually get three servers, three workers that are going to automatically be spun up for you by default You can easily, as we’ll see on the next slide, add more agents or workers with the “az aks scale” command If I want to upgrade the version of Kubernetes I’m running, I simply use the upgrade command I don’t have to worry about upgrading any of the other pieces, like Dan was saying, like Minikube, or if I’m using (on the next slide) ACS, which is Azure Container Service, with Kubernetes (but it’s unmanaged—it’s not the AKS), I’m also in charge of, in addition to my agents and my workers, the master VMs I have to control the hardware and the canonical updates and everything else that’s a part of the control plane Whereas with AKS, Microsoft Azure, we take care of that for you All you have to worry about is the agent pool itself So, it’s just like Dan said—it’s really powerful, and it’s the fastest way to get started Now, we’ll dive in a little bit further into release automation tools And I apologize There’s actually, I think, an icon that somehow went missing on the right, but that’s supposed to say COS-G We are going to focus today specifically on Helm, which is the package manager for Kubernetes Helm itself is the best way to find, share, and use software that is purposely built for Kubernetes You can manage complexity You can very easily update and even roll back if you need to It’s very simple to share because you can take your Helm charts (they’re called charts for your releases), and you can actually package them as tarballs You can put them into your repository, which Codefresh actually supports You can add your own Helm repository to Codefresh, and then you can, as I mentioned with rollback, you can roll back also to an older version of a release with Helm So, Helm Charts as a whole allows you to define, install, and upgrade even the most complex Kubernetes applications So, for some of the [00:35:00] people in the chat that might already have some experience

with Kubernetes, you know that you have to define your deployments and your services and your load balancers and your databases And for really large and complex workloads, that can become very hard very quickly to manage Having a Helm chart really allows you to take all of that and keep that organized because it’s essentially a template or parameterized file where you’re able to seamlessly deploy everything all at once We’ll demo that today Just a little bit more about how Helm works… It is the Kubernetes package manager It combines multiple Kubernetes resources I mentioned templates, and you can do things like easily upgrade There are key concepts that I want to go over first, so you can understand Helm itself is a local client It communicates to Tiller, which runs, actually, on your Kubernetes cluster Tiller (because you’ll hear that word) is on Kubernetes, and Helm is the local tool Helm is the CLI, essentially, and Tiller is, again, the in-service server that interacts with the Kubernetes API Chart, as I mentioned, is the collection of resources This is the visualization I really wanted to show You have Helm in the purple box right there: “helm install, upgrade, delete,” those are the local commands that are going to be running, but it’s talking to Kubernetes, where Tiller is listening, hands the request off to the kube-apiserver listening to Kubernetes, and then handles the release for your chart, and that includes your services, your deployments, and your config maps, pods, etc It’s really, really powerful Now, if you want to get started with Helm, you can do Helm.sh and go check it out, but we are ready for our demo And I thank everyone for kind of bearing with me on the slides I know it’s a lot, but we want to make sure that all these pieces really make sense when we go right into it First off, you can also completely recreate this demo on your own I will have a blog post going live later today that will actually explain kind of all these pieces, including my Codefresh YAML, so you can copy and paste, get started with Codefresh, and set this up in a matter of minutes, really, all on your own to learn But you can go check out the rebuild that I’m doing for this demo My GitHub and major source of contacting is jldeen—no relation to James Dean—and then croc-hunter This particular demo was originally written by Levi Evanson, who is actually part of the Helm team at Microsoft He actually wrote it for Jenkins, and we made it work with Codefresh, and I think it’s actually a lot more seamless Let’s take a look at how it’s kind of working I have the Croc Hunter game right here at codefresh.k8s.az.jessicadeen.com (and I’ll explain that alias in my blog post), but it’s a very simple game I can see the host name, which is the pod that my application is running on You can zoom in right here I can see the release, which again, we talked about Helm release I can even see the commit ID and any other information I define When I start, I can shoot lasers or fish, depending on what image the game is using DAN: This is a triple-A game! JESSICA: Oh, yeah We spare no expense here But how this is working and how this is deployed, actually, is right down here on the workflow is that YAML that I mentioned that I’m going to make available This is really where Codefresh kind of makes everything powerful I have steps, and I’m able to build my Docker image in these steps I can tag it based on a naming convention that makes sense for me, but you saw in my particular game, I have down here the commit ID I’m actually getting that commit ID as part of my building image So, to do that as part of my build pipeline, I’m actually using a build argument that Codefresh allows me to specify I can specify any define build arguments and pass whatever variables I want, and Codefresh will build it for me What’s also interesting is I have two different deploy steps because I have two different branches I have a dev branch, and I have a master branch For my master branch, I actually have it deploying my Helm chart, but in the dev branch, I want to make sure that my deployment is successful before it gets over into master So, again, using the same step convention, Codefresh actually allows me to specify a dry-run flag with Helm, so the same kind of commands I can run locally from my Helm client, Codefresh allows me to specify it as part of a pipeline So, this is all that deployment infrastructure as code, and I can immediately build it For example, we built one right before we hopped on this call, and you can see [00:40:00]

this particular master build We’ll zoom in here really quickly 92aed96, and if I zoom out, we see that is the same exact commit ID here Codefresh is just building whatever is getting released, and with the deploy step, we can see the commands that were actually run We can see that it is running my Helm upgrade commands It’s installing the chart for me It is cloning my repository It’s building my Docker image And you’ll notice here, when Dan was talking about how Codefresh caches the images or the layers of the image, it’s already saying, “This layer exists.” It’s only pushing different layers that have changed That’s what sits on top Now, this looks like a lot, and in any CI/CD tool, this is the hardest one to explain, because it’s all command, and it’s all code, right? This is where Codefresh really accelerates They have direct Kubernetes integration I can actually visually see my Kubernetes cluster from within the tool I don’t have to do a kubectl proxy command and open up the UI, attach separately in different windows, and move around I can manage my CI, CD, build, release, Kubernetes, Helm, all from the same exact tool I can see that I created a namespace We talked about namespaces I created a namespace for my cluster, and I have a service running I have three different replicas, which is what I defined, and I’m also using an image actually built in from Codefresh It looks like you guys gave me a private repository DAN: Yeah Codefresh has… Basically, you saw, in the pipeline, out-of-the-box steps for working with Kubernetes And as I kind of mentioned in the beginning, we really wanted to take all of the components that you really have to have when you’re doing DevOps with Kubernetes, and we wanted to build them in one place, we have a built-in private Docker registry that’s included for free Of course, it doesn’t stop you from integrating with any external You can, basically, just two-click add any other external registry JESSICA: I can add, before, when Dan and I first started working together, we added an Azure for the registry This Kubernetes cluster, obviously, is an Azure Kubernetes cluster, so an AS cluster I spun it up just yesterday, brand new, for Codefresh And when you actually click even on status, here’s the other insightful stuff It’ll actually give me my service status, my deployment status, my replica status, and my pods status There have been times where I’ve been testing out a new image and new build, and before I can even get the information from my command line, I can see that my build or my release failed because it’s having an image pull error I didn’t create a secret with my credentials for that private repository in Codefresh, and Codefresh will tell me that before even my kubectrl will, because for that, it’s kind of a manual process I have to run the command to get that information So, again, it’s really powerful there I can also see that this was a Helm release This was a chart that I deployed You’ll see there are actually two revisions If I click on it, I can see, again, the image that was used, any labels, and the status I can even click on the history as far as if I upgraded it just did the install DAN: Oh, yeah, click on that arrow It’ll show you if nothing in your chart changed when you applied this last time JESSICA: Exactly I just spun up a release, and it did the upgrade I can also hit any of these buttons to roll back to the different versions of release If I hit the “Chart” button, I can see the files in my Helm chart I can get really granular information I can see the values that we used I actually put… As part of my deployment, I want the commit sha, I want to know the image, I want to know the name of the PullSecret, and I want to know the image tag You’ll also see that I’m using an ingress controller, so that’s the hostname that I specified So, I’ll explain this a little bit deeper in depth, because it gets into some networking in my blog post later, but if you saw under Helm releases, I have a few different charts Crochunter is what I deployed, but I actually have nginx that I also deploy through Helm That’s an nginx ingress controller And then, I have kube-lego, which another Helm project This is actually one that the Helm team manages, and I can quickly deploy and set up So, any deployment for a web application I push, even through Codefresh, will actually be backed by my nginx ingress controller, and kube-lego will assign an SSL certificate to it, a self-signed on When we go to this alias, we see that it is SLL-backed, and all of these are using Helm charts, and Codefresh is able to seamlessly tie in to any of my releases Again, I’ll go a little bit more in depth in the blog post, how that’s all configured, but all something that [00:45:00] with AKS, Codefresh, and a fork of this repo anybody

on this call can recreate It’s ridiculously powerful One cool thing also, even taking the releases further, is the Helm charts that Codefresh gives you, right built in You have KubeApps, which is how you can quickly go get started with Helm They’re managed, tried and true, stable releases of Helm charts by the deas team There are tons of them There’s artifactory by JFrog There’s WordPress There’s Jenkins You can very quickly and easily go set up any one of these services and pods But we also tie right into Azure, so you can actually even start getting started with some Azure charts or Azure Service Broker or Drupal, whereas previously, to get started, you might have to run a command Again, from Codefresh, you can just simply click the install button And the install button will allow you to select your Kubernetes cluster, select any namespaces you want to deploy, or create a new one, and then you can even specify any kind of values that you need to define Really, anything that you would have to instinctively know from command line, Codefresh really kind of walks you through this It’s probably one of the easiest ways—if not the easiest way I can think of—to get started with all of this DAN: Yeah, and going back a few months, as we kind of baked a lot of this into our platform, I remember, it was almost seven months ago that we were still talking about using Docker Swarm You came over to the office, and we were talking about supporting Swarm, and I said, “Hey, you know what? Let’s try some Kubernetes stuff here.” JESSICA: Yeah DAN: We sat down, and a week later, we were like, “Oh, yeah, we’re all Kubernetes experts now.” JESSICA: Yep DAN: Because we’ve deployed it, we’ve played with it, we’ve got applications up and running, and we’ve changed networking Now, we’re starting to modify the configuration files, but it really is a great way of onboarding your team I mean, not to sell it too hard, but talking to the team over at Giphy, they serve, I think 2 or 3 billion gifs a day, and they’re a Codefresh customer, and I was talking to them the other day We’re getting into a case study But they, basically, said that when they wanted everyone to start using Kubernetes, their first step was to get everybody in a room, pull up Codefresh, and have everybody just start using it, and that by doing that, they were able to get everybody migrated within a few hours JESSICA: Yeah, it’s really powerful I actually clicked into the Account Settings, by the way When you set up your Codefresh account, you can, under your name, click on Account Settings and go to “Integration.” Again, under “Integration,” there’s a Kubernetes option There’s even a Helm option That’s where you could your own Helm repository But this is how easy it is to really add your cluster, and they have all major providers: Azure, Google, Amazon, a custom provider That day that Dan talked about, of “Let’s just see if we can do this,” we didn’t have official Azure support, so I clicked “Custom Provider,” and this is truly how simple it is This is the process you go through I’ll zoom in here just a little You hit “Add Cluster,” all you have to do is run They actually have a blog post You run three different commands to get your host, your certificate, and token They have a test button that will help you test the information you provide, and you give it a name, whatever you want, and that’s it Your cluster is already added So, all the information I’m getting from this particular Kubernetes service dashboard, I got just from doing those three commands and adding my cluster in, which was funny because we had spent probably about two months, I think, to try to do different types of Docker Swarm support, and due to some SSH tunneling and redirects, there were still a lot of things that weren’t perfect—and definitely not easy With Kubernetes, you just add it in, and it was just seamless DAN: Yes And we’re actually, probably starting to get into the questions zone here, because I see a lot of people starting to ask questions in the Q&A Feel free to keep pushing those in there, and we’re going to address all of those But I’ll say, on the Kubernetes side, one of the things I’ve seen a lot of people do who are in the cloud migration phase is they’ll use Codefresh to actually connect to their on-prem cluster, where maybe they’ve got an instance of, I don’t know… I want to say Tectonic or maybe OpenShift or something like that They’ll have those private Kubernetes clusters connected to Codefresh through the Codefresh agent, and Codefresh can be deployed on prem as well Then, they’ll also connect to an Azure cluster, and that gives them the flexibility to say, “Well, some of this stuff, we can actually start moving onto the cloud, and we have comfort that we can do that.” JESSICA: Yep. [00:50:00] DAN: Or if they have a multi-cloud set up,

where they actually have a single Kubernetes cluster that’s on private and cloud, and they have failover between the two JESSICA: Yep DAN: These are kind of more advanced (but more fun) use cases that we see people doing JESSICA: It’s really just amazing just how powerful it is Again, if I go back to the repository while we start loading up some questions here, we can just see how simple and seamless that kind of build is I mean, it took care of building the image and doing my actual deployment, all from Codefresh Everything is just all added in, including the ability—and I’ll show that really quickly DAN: And you’ve bene doing this for a while How’s the reliability been? JESSICA: It’s more reliable than I think any other tool I’ve used, which is one of the reasons I include it in every demo I’ve demoed Jenkins I’ve demoed Travis CI and VSTS The support is there, but the unique thing about Codefresh, again, is having that direct native integration, I think, is really powerful And the cool thing is, again, with a lot of these tools, you can still use them in unison I know Dan has seen this demo I’ve used Codefresh to handle my build and validation right alongside the Jenkins and VSTS builds, too It’s not as though you have to choose one or the other; it really does play nicely together, but from a reliability standpoint, it’s pretty much a green light every time DAN: Right JESSICA: This is the one part I didn’t want to say, is I’ve actually been able to use my custom tags as part of my pipeline So, if I want to specify any kind of custom information, I can pass that right along in Codefresh support stack DAN: Great JESSICA: Do you want to go ahead and take a look at some of the questions? DAN: Yeah, do you want to put up our— JESSICA: Yes, our final slide DAN: So, we’re going to move into the question and answer period of this Great job, Jessica That was a fantastic overview of DevOps and containers and Kubernetes and CI/CD pipelines and really giving everybody kind of an overview of this whole space and things they should be thinking about There are a lot of questions coming in, and we’ll try to answer these as fast as we can One of the questions is, Azure/Kubernetes service/AKS, is it now in general availability? Is it still in preview? What’s the status there? JESSICA: It is still in preview I get asked quite a bit when it’s going in GA My official answer to that is Microsoft has two major events per year, really We have Build, and we have Connect Build is coming up right at the beginning of May It’s May 7 through 9 in Seattle, and then Connect is usually around September We have a tendency to make announcements around those times, so my official advice is, while AKS is not GA today, stay tuned That might change But any information above that is above my head DAN: And I think there are people that are using it in production today JESSICA: There are The biggest blocker right now, from my relationship with the team, is really deep networking and VLAN kind of scenarios, but I know that the team and the networking team are working hard on that every single day to work through some of those blockers But I use AKS every single day I think, in some of the demos Dan and I have partnered with in the past, it’s always an AKS cluster I mean, that’s where Azure really kind of comes in I see another question was, how does Azure play into this? We’re using Kubernetes on Azure That’s really where Azure’s piece is We have the Kubernetes service running over an Azure subscription DAN: Yeah, good So, lots of questions Gosh, I’m going to try to keep track of them here and have it be orderly But one of the questions was, what’s the pricing model for using Azure/Kubernetes service? Is there a free tier? Or is there some sort of free trial people can use? JESSICA: You can go to Azure, and you actually get started today with a free month trial I think it’s $200 in credits to kind of get started and playing around There is also some funding for open-source projects and startups Pricing is not my specific area of expertise, but if you do go over to Azure, I know they have a pricing page, and they have different resources for different groups But definitely, anybody can go get started today for free, and they’ll give you $200 worth of credits That’s the current price right now DAN: Right Another question was, can Codefresh be deployed on prem? The answer is yes We have a couple of options We do have the cloud version, which is what Jessica is using here Our most popular option is called Hybrid, where we actually place a Codefresh agent on your infrastructure, and this keeps your source code, your builds, and all those things stay on your infrastructure, and your own Kubernetes cluster gives you access to your on-prem Git provider, your on-prem [00:55:00] Kubernetes clusters, and those kinds of things

Then, you also have the option to deploy Codefresh as a Helm chart, actually, on your own cluster Agent is much more popular because it’s very, very fast to get running The Helm chart is being used by mostly very large companies Companies like HP are using it Then, another question was, can you add a custom provider on premise? I think we’ve kind of answered that JESSICA: Yeah, because its if you’re running Codefresh on prem, then you can also use your on-Kubernetes cluster to communicate with that agent DAN: Yep OK Another question coming in is, is Kubernetes mature enough to run stateful applications, like databases, Mongo, Cassandra, etc.? What are your thoughts on that? I have some of my own thoughts JESSICA: Kubernetes itself, I feel like a lot people ask that kind of question because it’s still very new People don’t realize that it’s only a little over three years old But as we mentioned earlier, it’s really kind of all major companies for container orchestration have kind of gone all in, because it is… I would argue it is production-ready That’s one of the prerequisites, I believe, that Cloud Native Foundation has for a project to be able to graduate, is being used in production in a wide scenario What are your thoughts? DAN: Yeah Here’s an example, and this is kind of an anecdotal story, but I think it’s effective Last year, at Dockercon, this was right before the 2016 election Everybody remembers it was very contentious, and there was lots of stuff going on, and USA Today was over at Dockercon We were chatting with them, and they were saying, “We really love Kubernetes We decided to go all in We’ve actually just switched everything over.” We said, “Oh, you mean you’re trying it out for USAToday.com.” JESSICA: OK DAN: I think it was USA Today Maybe it was someone else I can’t remember now It was someone like them They said, “Yeah, we just switched everything over.” We said, “It’s four days before the election,” and they said, “Yeah, it’s running great, and it’s scalable, it’s reliable, and it’s awesome.” I said, “Wow, they did this four days before the election, running the production and being very effective!” Actually, we see this across the board I mean, GitHub.com is now 100% Kubernetes I think that Kubernetes is very much mature enough to run stateful applications It’s mature enough to run databases, and it really is… It just comes down to, hey, you’ve got volume You’ve got containers The containers can come and go The volume gets reattached to all of these, and you’re off to the races It’s pretty amazing because I think about how much work it was to build load-balanced, stateful applications ten years ago JESSICA: Yeah DAN: And it was a huge engineering effort It’s so much easier now with Kubernetes containers, with kind of this twelve-factor app approach JESSICA: Correct me if I’m wrong, but isn’t Codefresh also running on Kubernetes? DAN: Yes Codefresh runs 100% on Kubernetes Everything is on Kubernetes, so it’s kind of confusing sometimes when I talk about it I tell people, “Codefresh is Kubernetes native, and I mean that means it makes it easier for you to deploy Kubernetes, but also, it runs on Kubernetes.” So, if you’re looking just for scalable build architecture, Codefresh is kind of natively built for that JESSICA: Yep DAN: OK Oh, I’m switching… Somebody said the audio wasn’t working, but I wonder if it’s just him There was another question, which is, how does Helm help with CI/CD? JESSICA: I know that everyone also wants to grab this slide, but I’m going to minimize this slide really quickly, because I can actually kind of show… This is also going to be another talking slide that you can go connect with me at But essentially, what a Helm chart is… I mentioned it’s parameterized I’ll zoom in here, so you can kind of see This is what a Helm chart looks like If you’ve ever done a deployment with Kubernetes on your own, you’re having to find the services and the deployment, any persistent volume claims, any config maps You’re having to deploy all of that manually, and you’re having to keep track of all this information for the YAML file manually One of the other things that we often joke about is “tabs or spaces?” DAN: Yeah JESSICA: And trying to build the YAML file where you have your tabs and spaces, and something breaks In fact, I’ve actually sent Dan an SOS before, saying, “My YAML file isn’t working!” He’s like, “Did you fix your tabs and spaces?” And Helm removes that issue You see this is parameterized The only information that I have to fill out, really, is what’s called my “values” file With Helm, that’s kind of the knobs and dials [01:00:00] for how Helm works

So, I’ve filled this information in, and the Helm chart really takes that data and actually passes that right into the parameters You’ll see, actually, in this particular chart, which is the chart I used for today’s demo, I have different image names and image tags to defined, but I can use Codefresh to overwrite whatever I had in my values Now, best practice would be to have everything written in values and source control, but again, when it comes down to testing and unit tests and development environments, Codefresh gives me, really, the flexibility to handle this accordingly I can even set my ingress settings I don’t have to manage individual YAML files for my deployment Helm takes that and simplifies it from that release standpoint DAN: Yeah, and to add onto that, and maybe we can show something here… Go back to the Codefresh interface Basically, Helm is a way of generating Kubernetes configuration files At the end of the day, in its very simplest terms, that’s what it does JESSICA: Yeah DAN: If you go over to the Helm releases, and we look at this release that you just did, this crochunter one, the values that are getting passed are really important, and if you click on the values, this will show you the values that changed at runtime When we’re building a change and deploying this image, we need to tell the Kubernetes configuration to use this new image that we just built, which tagged “master-92aed96.” This value changed at runtime, so it’s actually not in Git at this point Now, you could do that That’s a flow that you could totally do—it’s supported But if you look at the manifest, what this will show you is these are the files that were actually rendered and sent to Kubernetes, so if you click on that config, you’ll see that it has now taken the values file that you had when you committed It built that chart, and at runtime, it said, “I need to replace these values,” and then it rendered it into the manifest here So, you could take these and apply them in Kubernetes again manually and skip the entire Helm process, because this is the output of Helm JESSICA: Yep And you can actually… If we have a little bit of time, I was going to say we could go in here and do a… If I did a Helm LS, I can see the same release information that I get from Codefresh, and if I were to do AK, which is just an alias I have, “get deployments,” I can see deployments I can go in and edit the deployment, just as I would any other deployment, and I can see exactly what Codefresh deployed for me If I were to do “k edit deploy crochunter” and specify the namespace for Codefresh, I’m going to be able to see that same information that I get from Codefresh This is just another way to kind of show how valuable Codefresh is The amount of commands that I had to go through just to get this information, Codefresh is able to give me that right in my release information DAN: Yeah Thank you, Jessica So, we probably have time for maybe two or three more questions One of the questions I saw, and I thought this was an interesting one… Many companies such as Netflix run their containers in VMs What are the advantages or disadvantages of doing this? I would start off by saying, really, everything that we’re running is technically running in a VM JESSICA: Yep DAN: At the end of the day, what we’re talking about is there’s a server somewhere OK, spoiler alert: The cloud is just someone else’s computer But there is a server somewhere It has a bunch of VMs on it, and those VMs are providing the nodes for the Kubernetes cluster, which is now scheduling and handling the pods Now, you could just have a VM and just tell it to start a container by itself I think the big advantage of using something like Kubernetes is it’s going to handle failover for you It’s going to bring pods back when they die And to give you an example of this container-first thinking, I know a number of companies who have Java containers, and they’ve actually disabled garbage collection The way that they handle garbage collection is they let the pod fill up and die, and then they just schedule a new one, because it’s actually faster and more memory-efficient than doing garbage collection That’s an example of a way that Kubernetes really changes the way that we do all of this stuff JESSICA: Yeah, actually, exactly what he’s talking about If I were to go into, from the command line, any one of my pods and delete one pod, [01:05:00]

because I told my deployment we meant to have three replicas, after I terminate one pod, it’s actually going to start up another one Even if one fails or terminates, whether forced or by just dying, it’s going to automatically rebuild it because the deployment is still live The deployment is backed by Kubernetes, which is, again, sitting on top of a virtual machine DAN: Yeah, this is kind of what your video was, right? JESSICA: Yeah, that’s the entire point of the video, which is why we kind of laugh at it DAN: OK, so another question here… Where can I get training or certification on this pipeline: Kubernetes, Helm, Codefresh? That’s a great question We don’t have a certification program today It’s on my very long list of things that I’d like to do But we do have, of course, a ton of resources on our blog We have another meetup that we’re doing next week There is a Kubernetes certification Is there an Azure/Kubernetes certification or something like that? JESSICA: There’s an actual Linux certification, so they partner, actually If you have the Azure infrastructure 533 certification (the 70-533 test for understanding Azure infrastructure) and then you also have your Linux-certified systems engineer, I believe it is… If you have both of those, we will actually give you an Azure/Linux certification as well, and I know there’s a Kubernetes certification that plays into that even more I’m sure… Well, I shouldn’t say I’m sure I would think that after AKS goes GA, Microsoft might also introduce an AKS certification on that as well, but I don’t know for sure I can’t say that you can definitely… There are a ton of resources on Channel 9 to go get started with AKS Some of my talks have been recorded, talking about this There will be a blog post that goes live later today, recapping all of this that we talked about And then, one more question I saw was, how can I integrate VS Code with Codefresh? The quickest way to get started with Codefresh is using GitHub, BitBucket or GitLab, and because VS Code integrates with any Git repository, it automatically… Well, as long as you open a folder that’s a Git repository, you can integrate right in with Codefresh, because Codefresh is listening to your Git repo, and you are editing the repo locally from within VS Code So, when you make a change, commit it, and push it, Codefresh is automatically going to fire off and take that change, because Codefresh is listening to WebHook, I believe, right? DAN: Yeah, that’s right JESSICA: Yeah So, via WebHook to the Git repository, so you can have seamless integration of all your tools DAN: Yeah, yeah, great answer This question is… Well, actually, let me just read it This is kind of a basic Kubernetes question “I have created a Kubernetes cluster using kubeadm and GCP, and I created a Docker image, which runs a Django app, and then the image is deployed using Helm But the problem is, I can access the app using NodePort, but I want to access the app using LoadBalancer.” JESSICA: I can actually demo that really quickly DAN: You basically just have to change the type to say LoadBalancer JESSICA: Yeah There’s a serviceType, and this will happen even if you aren’t using Helm, but if you are, you can do ClusterIP, you can do Load Balancer, or you can do Node4, and that’s really where your service is going to change the IP listening So, you would just change this LoadBalancer, where it’s going to have an external IP address now available, and literally, you would save it, and then redeploy, and that’s it DAN: Yeah, great OK, let’s see… I think we’ll take maybe one more question, and then we’ll call it a day Again, thanks, everyone, for showing up We will have the blog post up, I believe, within a few hours, and we’ll link to Jessica’s post and vice versa, so you’ll be able to find it very easily, and we’ll send you a follow-up email Of course, if you have more questions than the final question here that I’m going to answer, feel free to hit us up with a one-on-one Codefresh will do a demo for you We’ll talk through your problems and see how it fits in for you So, final question is, is Codefresh a manager for Kubernetes and Swarm clusters on any cloud provider? Or does Codefresh provide backend infrastructure? JESSICA: That’s a really good question DAN: That is a really good question, yeah So, really, Codefresh is very agnostic about where your infrastructure lives Codefresh itself, if you’re using it as a cloud, we provide the infrastructure [01:10:00]

to build and run the pipelines, but for your actual production stuff, we expect you to connect your own Kubernetes or Swarm cluster, even ECS—you could do that if you wanted And if you want to have the builds happen on your own infrastructure, then you can use our hybrid or on-prem model, so you can have Codefresh on your own infrastructure But really, the answer is kind of both, because by default, you get the build that’s happening on Codefresh’s infrastructure You don’t have to worry about it, and we manage the scaling and build services, so we can handle hundreds and thousands of simultaneous builds through the magic of Kubernetes—spoiler alert But yeah, if you want to build on your own infrastructure, you can do that And of course, for your production, for your environments, we recommend connecting a cluster from Microsoft or another provider JESSICA: Yeah, absolutely Thank you for everyone who stuck around I’m just going to show my final slide, mainly, one, because my picture is adorable Number two, it has some really important information Again, that demo repo… Like I said, there will be that new blog post in a few hours You can go fork that repo today and kind of get started at GitHub.com/jldeen/croc-hunter Some of the apps that we showed you that Codefresh already has built in, but if you want to go look on the KubeApps page, you can go to hub.kubeapps.com You can email me You can connect with me on Twitter, GitHub, Instagram Spoiler alert: Instagram is just going to be pictures of the gym, my dog, and my truck—and sometimes code—but you can go do that And then the blog where my blog post is going to be live is JessicaDeen.com I mentioned a league earlier If you want to go see the league’s website where myself or any team member are going to be speaking at any given time, you can go to LoECDA.com, and that will give you that information You can also connect with any one of us there as well Otherwise, I think that’s good DAN: Great, yep So, there was a question about how to do a manual approval process using Codefresh, and unfortunately, we are out of time, and I can’t answer it, but if you request a demo, then I would be happy to give a more in-depth answer to that question We’re going to end it there Thank you, everybody, for participating Taryn White, for doing all the backend work to make this thing happen JESSICA: Yes DAN: Jessica, for putting the fantastic presentation together I think it went really well I think everybody was really excited and engaged, and we had lots of good questions Feel free to reach out on Twitter to either of us I’m @todaywasawesome; Jessica is @jldeen Thank you very much, and everyone, have a great day! JESSICA: Thank you very much, guys