where we dive into the code behind cloud native.  So every week we bring a new set of presenters to showcase how to work with cloud native technologies. And as always, they will build things, they will break things and they will answer all of your questions. So you can join us every Wednesday to watch live. So this week we have amazing session on automating Kubernetes deployments coming right up. And as always, this is an official live stream of the CNCF and as such it is subject to the CNCF code of conduct. So please do not add anything to the chat or there's a question that would be in violation of that code of conduct. Basically, please be respectful of all of your fellow participants as well as presenters. So with that done, I'll hand it over to our marvelous presenters to kick off today's presentation. Hello, I'm Kingdon Barrett. I'm an open source support engineer and a flux maintainer at WeaveWorks. And I'm Yoazos Gagalas. I'm a DX developer experience engineer at WeaveWorks. Welcome everyone and thanks for joining us. I'm just gonna share my screen real quick. Hopefully this works. Can everyone see my slides? Yeah, they should be seeing it live right now. Speaker note here is what I want there. Okay, so we're not gonna do slides for very long. I know this is not a slides venue, but we did wanna set some slides to sort of introduce some concepts before we dive right in. So this is the automating Kubernetes deployments presentation and hello and thanks for joining us today. And the main idea that I think we wanna get across is that there is really not just one set of best practices. So there are different ideas in different contexts. And we're gonna show how we're gonna introduce a concept of templates. And we're gonna show how you can use templates to automate Kubernetes so that you can show your team a different way if there's a different context. You can provide the best way for your team and you can help them. And then when you say you, do you mean me as an app developer or a platform engineer or some other role? That's a great question. I actually mean both of those people and sorry I have to, I wanna see you while you're talking to me. So I'm just gonna move you down here so that I can see what I'm doing a little bit better. Sorry about this. Yes, I mean both of those people. If you're a platform engineer, you need to be able to provide examples to your team. And if you are an app developer, you wanna be able to consume those examples without having to think too hard about them. Those are the main personas. So yeah, so this is about providing examples to customers. As a word I'm gonna use, but let's be clear we are talking about humans. So it's all about reducing cognitive load and making sure that you can access the essential complexity in your examples, whatever they are in your templates. Well, being able to gloss over the incidental complexity, that's what our aim is to help people with a template. So we'll be showing these three separate examples and keeping with the topic and the description that I've given so far. It's sort of an evolutionary model. As an app developer, I don't want to learn a lot about Kubernetes. So how do I start with the most simple example? Yeah, so the most simple example is a dev branch. We're going to have a dev branch and we're gonna automate that branch. And just to back up, before we talk about any individual example, what does it mean that we're automating a branch? Well, this is GitOps. So we have Kubernetes over there and we have Git over here. We want to deploy our changes from Git to Kubernetes in an automated way. And that's what we'll do in the first example, as minimal friction as we can and we'll have just one environment. And that's a hint of what are we gonna do next? We're going to show promotion. So in a promotion model, we will have more than one environment and we will need a mechanism for moving the change from one environment to the next. So I've used the word pipeline here and to explain a little bit what I mean by pipeline, it's not a physical thing, it's an abstraction. The pipeline helps us to test our changes before they go to production. That's really what it's for. So there's a little bit of friction that we're adding here to avoid problem in production down the line. So we can do our testing in an environment that's as similar as possible to production and then promote the change. And as a developer, I can set up a demo environment that is a production-like example to show the rest of my team using pipelines, right? Yeah, yeah, exactly. And then when we, so what we're doing in this case, we're talking about release versioning. Release versioning is an important thing to use in your release pipeline, but it's also an extra bit of friction that we might like to avoid. So that's one of the differences that we'll see between these last two examples is the way that we use versioning to achieve our pipeline. And in the last example, we are nailing things down, I guess. The idea is that we'll be doing formal releases and we need that so that we can keep track of what's in production at any given time so that we can roll back if there's an error, if something goes wrong, we can see what version was there before, roll back to that version and then continue on with development without an incident, hopefully. So there are all these different models and this one we're also going to start to talk about OCI at that point. We'll gloss over it a little bit and we'll see the examples do include OCI up to this point but we won't really talk about OCI until we get to the third example. And we're gonna talk about Helm also. So we haven't talked about Helm yet but Helm is the templating tool that we're gonna be using today. You don't have to use Helm, you can, there are many different options for templating tools but the concepts can be applied from here to other tools and Helm is a simple one to get started. Yeah, not only simple but also extremely popular.  So we'll show some advanced Helm features including OCI Helm charts. Hopefully we get that far and let's keep things moving here. So the short version is there are the three examples that we're gonna show. And here is the small version if you got it all lost in that if you want the screen shot of this so you can refer back to it. We're gonna show all three of these examples in succession. Yes, let's get started. I'm a developer and I want to work on my local system to start using Flux and to start using Git like process as far my development workflow that later I hope to promote to whole team and to enterprise environment. Okay, so, and this is our first example we're going to deploy a website and the website is deployed from this Git repository and we're not gonna look too deeply at what is this website.  It's called example cube config because I needed an example cube config to be served from somewhere that people could join my cluster and use. So that's what this is. It's just a website. And as a newbie, I probably want to start the deployment YAML for this website. Yeah, exactly. Okay, so let's look and see our deployment here. So we've got a couple of directories to look at. This one is the main one. This is where we keep our manifests and there is a deployment.yaml. If you're unfamiliar with Kubernetes, don't worry. If you are familiar, this should be relatively familiar already, of course, because this is one of the fundamental units in Kubernetes, a deployment. And what we're gonna see about this is that this is a deployment that creates a pod with two containers. They both, the purpose of this structure is we wanted to use the existing engine X image because we're serving a website. That's all we're doing. It's not a program that runs, it's just a website. And we do need to retrieve that content from somewhere. So we could build it into the image but if you really spend a lot of time with Docker build, you probably find that there are a lot of more efficient ways you can build things than by doing it in a Docker image. That's one of the things that we're trying to show today is how you can separate content from structure. So that's what we're doing here. So let's get a change pushing so we can see that we can actually push changes to this website and then we'll look at how does that work? And like I said, we have a dev branch. That's what my, can everyone see this? I probably need to increase the font size. Let's see, how does that look? It looks better, but I think in this case, the bigger the font size usually is the better. But I think we're getting there. And if the audience, you feel like you need a bit more zooming in, just let us know. Okay, all right, so here we have our dev branch on our example cube config repo. And we're gonna make a change. Okay, I'm getting feedback that we can actually read. That's good. Okay, so we're just gonna change some content in here. I think we have a hello GitOps. We're gonna change this to helloocncf. And what this is going to do because this is an MK docs site, it's gonna trigger a CI tab that builds the site. Let's make sure we can see where that update is going to come from. Ah, okay, so here's our first hurdle. We said that there were some problems in the earlier models that we'll explore. This is the problem number one with using image update automation. So this is the simplest model, is that you will occasionally have to rebase your changes over automation, which is not ideal, but this is a small example. Can you show how image update automation is defined in our manifest? Yes, absolutely. Okay, so we have, like I said, several directories of manifests. Here is our main directory, and then underneath here is our flux automation directory that's deployed with a secret. So this Git repository reference points at our dev branch, and it has a secret ref. This secret is able to write commits to the dev branch. We can see our build is finished, and let's see if we can catch the change here. So it says hello, GitOps in the previous deployment. We're gonna look at the image update automation, and we're gonna see the deployment go fully. Yeah, so here's our previous version running, and we should see momentarily a change as flux detects the new image. So this is what detects the new image. It is scanning the Git repository. Can you zoom in a little bit on the website? Thank you for the reminder. Okay, so this fellow is scanning, and it is updating inside of this path. Okay, so we've seen it's just done something here. We've got our new pod starting, and what's actually happened is we have pushed a new commit to the dev branch. So let's take a look at that commit. Oh, there's an audience member checking in as well. Would it be possible to get the GitHub link, repo link as well to the attendees, or if it's not, obviously we understand? Yes, absolutely. All this stuff is public. So this is the repo. I'm not sure where I can paste it because I don't have access to the chat from here, but if... I'll paste it right here. Okay. Yeah. And I can highlight it then afterwards if we get it to the comments or to the private chat. Great, thank you. Okay, so this is the commit that was just made. We can see what's happened here. We've got this comment that tells Flux's image update automation where to look for the image ref. So this is a tag ref. That's what this tag means. And that's to distinguish it from a fully qualified ref. If we left this colon tag off the end, then we would get the name of this image in full, including the repository where it comes from. But we're... We actually, we only just need this string to change. We don't even care about what content it is right now because of the way this example is built. And we can see that it's deployed here. We could do that again. I think we have enough time to still do that again. Yeah. And I think you can see the GitHub link right now highlighted in the stream as well, as well as in the comments section. I'm going to move this up a little bit so that bar is not in the way. Okay. So before I commit this, I'm going to pull again so I don't have to rebase. Okay. And we looked at one part of the automation. So this is the commit that actually changes our manifest. And here is the rest. So that image automation is the business end. Then there are other parts that are important for this process. There is the image policy and the image repository. So this is the actual repository that our dev branch is pushing to. And you note that it's a separate repository from the main. There is no, there is no prod environment here. This is a dev only example. So you could imagine that we would push another image here for the production environment, but we're pushing to the dev branch here. Okay. So I have this set up now, but I want to extend it. I want to have versions and I want to share it with my team and promote things to several different environments. How, how do I go forward? Okay. Outstanding. So what we want to do, let's recap what we did here. We used the Docker file. We haven't looked at the Docker file, but the Docker file builds an image and we push an image. And those examples, by the way, those are all GitHub actions. So you can follow them here. And we're going to switch to our next example where we will change a few things. So first we're going to change what type of app we're deploying. So it's no longer a simple website. It's now an app that runs. And we've also added a Helm chart, which has some interesting properties we're going to look at. And Git repository is connected to a Helm release. So let's look at that. All right. So here's our app. This is a CLI. It's written in Ruby and there are a couple of other components. This is a good example of fibers. Well, good example, maybe a stretch. My Ruby is a bit rusty these days, but okay, here this is the app that runs. There's a web server. And this is actually, you can see, we've put in a print statement here so that we can see, because this is not serving any content. The app is doing something else in the background. There's a job that we want to run, but for our purposes, that's not super important. So let's go to app directory. And all right. So what we want to do is create a branch and we're going to update that message. So first we want to see this running in context. So let's switch to our cluster where that is running. That is, I think it's this one. Yeah. Okay. Here's our running app and here's how you know it's the app. Okay. So we're going to change that message and get CLI going. So we can run this quickly. So one of the things I want to point out here is that we're creating a pull request. We're doing this because we have things pointed at the main branch. We have flux syncing from this main branch. This is a little bit aggressively large. I have to tone down. Sorry. Hope we can still read. So there are two directories to look at here now. One is the Helm chart itself and there is where flux deploys from. Since Helm charts are not deployed directly by flux, they're deployed through another set of automation that's part of the GitOps model customization. So here's our Helm chart. And I like to highlight that the template is very lightweight. There's actually very little in here. If you've ever written a Helm chart, you're probably going to wonder how I did this because this is probably the worst part of writing Helm charts is building out all the templates and filling out all the boilerplate. Wouldn't it be great if we could just skip all that stuff? Well, yes, you can. So here's our chart definition, chart.yml. And how do we skip all that stuff? We're going to use a library chart. So I had never heard of this company until I heard of the Helm company info. This kind of sounds like a made up company. I'm not sure how much I trust them, but Helm releases are versioned. So we know that this isn't going to change out from under us. It's immutable, hopefully. And let's do, see how that build went if it's still going. Okay, so our build is ongoing. And when we're done with this build, we are going to merge the change. So there are a few other things in here that are not ideal about our setup. And then there's an audience question. So Garov is asking, we need to make a commit in the Git repo for previews running code slash image and Flux will do the deployment again. Yeah, so there's something we're building up to that we'll see in the next example. And I kind of don't want to go over that point yet, but I, so the question that you're asking, I think is will there be a commit that we can roll back? And the answer is yes, there is a commit that you can roll back, but the first example that we looked at, we saw automation is pushing commits to our working branch and that causes extra friction. So we actually want to avoid that. We want to migrate from the latest commit determines what's deployed. We would like to migrate from that to the latest released version determines what's deployed. And we're on a road to get there at this point because we're creating a Helm chart and that gives us something versioned that we can publish. And we're not publishing it yet. So we're actually deploying this Helm chart from the master branch here. So this branch will show the other directory here. This is our deploy basis. And this is very similar to the last one, except there's no automation primitives. There's no flux automation resources required. And this is to help understand something else that flux will do that will make our lives easier. So we have a Helm release and it's a source ref get repository type. This is a special thing that you can do in flux that depending on this particular setting, what's going to happen is, yes, this new link here, let's post this as well. Perfect, I'll get it over. Yeah. So what's going to happen is we're going to check under the get repository for a directory named charts slash mark here. That's how I'm going to pronounce that. And it's got to be in the main branch which we've defined in that get repository as actually being named master here. And then someone was asking to zoom in a bit on the get side as well. Sure, a little bit further. Yeah. So there's not much to see in here. The only thing that I would highlight is there's a version that's implicit here. Since we haven't mentioned a version, it's just going to deploy the latest version, whatever metric it has for determining what the latest version is. So because we're using a get repository, that's whatever's in the latest branch. If you want to revert, then you revert to get commits, right? Yeah, thank you. That's the bottom line. So we, I would like to fix those things. Sorry about that. That's just a distraction. So we're going to create a pull request. Like you said, it's already been created and we've got to merge it. Now that CI has passed, let's merge it. If these things can be done automatically and depending on the environment, things can be approved or automatically merged. But what we should see is, as soon as that get repository reconciles, we'll see the chart kick off and start updating itself to the newest version. And what has changed in the chart, actually nothing. This is another thing we ought to look at because this is another thing we're going to improve in the next example. So how does helmet know if there is no template, what to deploy? Well, all of the important details go into this values file. So here you can see we've pointed out an image called Canary. And that is the image that we build on any branch. And there are some other details in here. How is the port exposed? These are details that are important if you're serving up a webpage, for example. Anyway, we can see that we have actually deployed a new pod now. And then there has been a audience question that we can take whenever is a good moment for that. Sure, before we move on to the next example, we're a little bit ahead of schedule now. Good, so the question is, in case there is a requirement to do a backup of newly deployed codes, last images, does flux automatically do it by observing the new deployment status or new commit is required? So flux will apply the latest manifest in the repository and the latest images using whatever specified policy you have. So it will not roll anything back unless that's what Git is the final source of truth. But you can set up things like Flagger or other system that will do the rollback using GitOps for you. Yeah, and there's actually like about three large exceptions to what you just said that are important to understand here. So one of the things to note is you can do testing in a Helm chart. You can do testing in a pod with a health check. And those tests will help determine whether the release is going successfully or not. So I haven't created any health checks for this. So when this pod rolls out, as long as it runs, then the release is okay as far as Kubernetes is concerned. So we have to kind of leverage these tools in order. We wanna use the health checks first because that will help Kubernetes know whether this pod is healthy or not. And that's the only signal that Helm can use to tell us if the release is okay. Then down the line, flux can look at that signal from Helm and say this release is a success or not. And you can configure remediation strategies in flux to say, what should we do when a release has failed? If you want it to be rolled back immediately, then you can configure that remediation strategy so that it's rolled back immediately. Going to look for the doc here because this is a good Helm thing to know about configuring failure remediation. So this is, here's that version line that I mentioned that we aren't using yet. We're gonna see it in the next example. But here are the parameters for remediation. And you can see that there's a different thing that you'd like to do on install and upgrade because actually if it's a failed install, we can't, there's nothing to roll back to. So we'd like to retry. And if the upgrade fails, actually this example says, no, don't retry, just let it fail. Don't remediate the failure. Why do we do this as a default actually because we'd like to be able to debug the failure. We'd like to be able to see what failed and we need to be able to inspect the logs possibly. And then for a second reason, because we've configured health checks on our deployment. So this upgrade that failed doesn't represent an incident in production, or maybe it represents an incident, but it's a different class of incident. We're not serving up a dead release to end users, right? It's just there in production. It needs to be remediated by someone, but we can configure that to happen automatically if you want here. And then there is no commit that represents that remediation. So that hopefully that's a good answer for your question. Yeah, the question I asked here already said, got it, thanks. All right. Good on that front. And then there was another question, it now is a good time for that as well. Yeah, let's see, what was the other question? I heard Dev at QA branch is the Dev branch for Dev environment, QA branch for QA environment. Good question. Okay, so what we're showing, we actually want to get away from the idea of using separate branches in this progression in this evolution. So we're starting with a Dev branch because that's the easiest thing to conceptualize and because we can configure automation to push to a Dev branch without breaking everybody's workflow, right? If you're not on that Dev branch, you won't even notice that those commits are in the way because you're on a different branch. So that's why we start with a Dev branch but in most of the flux docs, you will find that they do not advise you to use separate branches. And that's because inside of the branch is a ref that points to the branch. And what do you do when you merge? If you've got a Git repository here that points to a branch that we're deploying from and now we want to merge but this ref is still going to be pointed at that old branch. So this is the main reason why we want to get away from using branches as an instrument of deployment, right? We want to use the branch as a place to review to run CI. And then once it merges, then it gets deployed. That's the idea. So we're trying to move away from simple trunk-based workflows that don't version and we're trying to move towards versioning. So one thing we didn't see, let's look at that deployment or that pod, we didn't see what Helm is doing with that version. So we had this, we saw this version in the chart.yaml really briefly, this one came from Flux. When Flux found that there was a new commit and we had that revision strategy set, Flux said, well, Helm charts are immutable. So I need a new version if I'm going to have a new chart. And so it reconciled a new version and then our deployment went out. And here is the other thing I want to notice in here is I think we already saw this. We're just using colon canary. So this is again, this is not an ideal deployment strategy because this is like latest. This image doesn't, this tag should change over time. But we're going to show in the next example how we can do that as part of the release workflow because we've already seen how we can use automation to change that tag. So, and we've seen how we can run a file of that and it can be kind of irritating depending on the context. So we've got these two examples in opposition. And now we're going to switch, I think, to the next example. Okay, so we had an example with no Helm chart. We had an example with a Helm chart but it's the Git repository backend. And here now we're going to switch to a fully release oriented Helm chart. So I've used this link here. We can put this link in the chat as well. These are the workflows that I developed. One is for publishing an image and one is for publishing a Helm chart. And this is another website example. So we're going to go back to simple here for the purpose of this example. And there's another link I'd like to share. If you have a Helm chart and you're wondering how can I release it as OCI? Well, this is what I would suggest first. It's actually really easy to build the OCI release workflow into your release workflow. But we wanted to have an action. I think most people want to have an action that they can point at that'll handle the hard parts when we get to it. So this is an action that's not published by Helm official and I'm going to show the Helm official action for a moment to explain why. Chart release or action. Okay, so this is an open feature request. We would like to add support for pushing charts to OCI. We mentioned that this is a new feature in Flux. It's OCI Helm charts. It's a new feature in Helm as well. So there are places where the support is lacking. I think this is the most popular chart releaser. Probably a lot of people are using this to push their charts to GitHub pages. And this probably will work for almost everyone for a long time. But the people who this won't work for very well are the people who are trying to push a lot of releases all the time or who have a lot of microservices. So why doesn't it work very well? Because of the structure of a Helm repository, the legacy kind. There's this index.yaml file where all of the metadata for all of the releases for all of the different applications that are on this repository is collected in aggregate. And every time a new release comes out, whoever consumes the Helm repository has to download that entire index.yaml again, even if only a small part has changed. So that's really inefficient. And that was one of the things that OCI charts were designed to fix. So let's see our example. Let's pull up that blog. I think it's called Bart. Yeah, here we go. Anyone's familiar with Fermion in the audience? This is the Bartholomew Wazen blog. Nothing to see here. It's pretty cool. I like it. I'm gonna build a website on it. And as you can see, I've already started. Okay, so if we go to slash blog, we can see the title of the page. Here it says, hello, GitOps. Let's make something a little more visible since that's kind of small. Here, let's change one of the titles. This is the top article. I know it's not. Okay, try again.  By the way, if you're not familiar with this GH tool that I'm using to watch the workflow runs, it's really very similar to what you see on the GitHub Actions view, but maybe this is a little bit easier to follow if we go see. Here's our new action that we're running. And we've got a couple of things that run in parallel. We can see that that's happening over here too, but so while it's running, there's a question. How would you handle different environment settings using GitOps? Credential. That's a good question. So we have two environments that we'll deploy this to. One is called test and the other is called stage. Let's look at those environments. Where are those defined? Here is one more repo. This is where all of these examples are collected and deployed from Kingdom CI slash fleet intra. So this is our cluster repository. And this example comes from, let's see. There was also a question from the audience on the recording of this meeting or this event. And no worries, this is gonna be available essentially immediately after this in the CNCF YouTube channel under the lives or in the playlist for cognitive lives. So you can find it there immediately. So you can always check back on the recording, no worries. So what we wanna see in our test and stage environments is what's different between these environments and what's promoted exactly. Let's see if we're deploying things before we get any further. Okay, so we're pushed into a branch. So nothing should be deployed. And in this helm release, we have a version pen here. And ideally in my perspective, this is how we handle a difference between environments is by creating a parallel structure in both environments. So we know that this test environment here is called Bart.howard here. And if we go to look at the other environment, we can see that it has a different DNS name here. This one is called stage. So again, this is kind of backwards because I don't have a production environment. I have test and staging, it's kind of backwards, but you could imagine adding a third environment and we'll show how to make staging a little bit more production-like in a moment. So this is using a helm repository source and that's where we publish our release artifacts too. So what we wanna see is the test environment deploys as soon as we've merged our change to main, see it's a Git repository source. And then the production environment or the staging environment is going to deploy as soon as we've published our release to the helm repository. And these should behave the same except they have values that are not the same. So this one says they're both in the public Ingress class, they're both using TLS, but they have a different host name and you can configure them differently if you need to. But would it change? Yeah, go ahead. Yeah, there was a question in the audience as well. Do you think flux is better than Argo CD? I'm not gonna be baited. No, I work on flux. So obviously my opinion should be fairly obvious. I think that flux is great. I think that Argo is also great. They are separate projects for different use cases. Stacy, you're exactly right about that. Thank you. So flux from my perspective is better for infrastructure builders. It's better for platform teams. Gives you a little bit more control whereas Argo maybe gives you a bit more flexibility in a couple of ways. I'm not gonna go into detail about that because we're almost finished here. We can talk more about that at the end but I'd like to see this full release happen. So okay, so what we've got is we've gotta merge this pull request. Where did we create a pull request yet? No, okay, we have to create a pull request. And because this is gonna be a new release, there's a few extra things we have to do. I said there's some friction that we're gonna add. We're gonna solve the friction with automation too. So we've got this make file. It's a little bit complicated but the main thing to look at is here at the top we have these two versions that we can use a tag. That's the app version and somewhere here is supposed to be the chart version. And we've got these workflows we can use to release when we've tagged new versions. So let's tag new version. First, I wanna make sure I know what version we're at. 0.2.6 is our app version. And I think the chart is one behind that. So let's do version set. We're gonna be 2.7 now and let's see what that did. Okay, we updated app version and chart.yaml. Here we've updated values.yaml to point at a new tag. We have not built that tag yet. And we have updated spin.yaml to know what version it is. Let's commit that new app version. Are you committing this to a different branch? I am still committing it to this branch. We could commit it to either branch. This part actually it could be done before or after the merge. That's a good question. And we also have to update the chart version. So like I said here, our chart was at 0.2.5. We're going to push a new version, 0.2.6. And we see that is correct. There, new chart version. Okay, so we don't need to wait for CI here. I'm confident that CI is going to work as long as we, what's going on here? GitHub, are you not going to accept my change? We should see more commits here. We don't see any more commits. I'm not sure why. There's no fork. Well, I think the branch protection rules will let me merge this directly to main. Let's just try it. We had some issues with GitHub this morning. I don't know if anyone was watching the status dashboard, but I really was nervous about this. Everything went green about five minutes before we were supposed to go live. And this is the part where we really need all those things to be working. So make release app first. Here, we want to push this and merge that change. And then we'll do make release app. This is going to get tag and push the tag. So this is, you could do this manually or you could build this into your release workflow, but this is how we push an image and it should trigger our deployment workflow again. And then we'll do a different. We are starting to have actions freeze here. This is not great. If GitHub doesn't know if anything is wrong, but I'm pretty sure it is. Let's see. So hopefully these things only take about 30 seconds. That's how long they should take. And this is our tag. Okay, it's working. GitHub is fine. That is true. All right, now we push the chart release. And this is just doing the same thing, but tag chart. All right, and let's see. Yeah, I know, I know you literally just pushed and commit two seconds ago, but this morning I was watching it go up and down right before my eyes and they did have an outage for sure. But no excuses now because everything's green and it seems fine. So let's see. All right, our test environment deployed the change. It's already running and this one should be momentarily there. We even caught it in the act and let's see if we can see the updated website. There it is. Hello, CNCF livestream. Everything deployed from a helm release. It wasn't too much friction. I hope my goal is to help you understand how you can adopt helm, but also to help you understand how this is not the tool for every job. There are different tools for different jobs just like we've seen with Argo and Flux. There are different tools and helm may not be the template tool to solve every problem, but we've used it to solve this problem. If you're interested in this blog and how it works, you can certainly follow these links and check out this repo too. And hint, hint, there are some conference talks coming up at open source summit and get ops con that will be related to this. So we'll see more from that. Okay, so while we still have a couple of minutes, we have time for more questions. Josus, do you have any questions at this point? No, thank you for the demo King and I'm glad it all went smoothly. Yeah, me too. Maybe we wanna look at some of this example in a little bit more depth to see what we've deployed exactly. Yeah, I think that sounds good. And while that's happening, audience feel free to write your comments and questions in so that we have the time to go through them. Yeah, so this is a good question. We had only one branch that's configured for deployment and we pushed to multiple environments. Yes, that's correct. Let's look at the two environments. Now the environments are designed here in this separate repository. And this is something that's up for debate. Do you take the environment definitions from the app itself or do you keep them in a place that's more closely tied to the cluster? Those are options. So here we have a Helm repository. Well, actually it's a Git repository. And we have a Helm repository that's defined next to it of type OCI. So if we look at the other environment, we'll see the same thing there except we're not using the Git repository for anything. But yes, it's deploying from branch main. And this can cause problems as well. So the really nice thing about our OCI repository example is yes, it depends on the release cycle. If we wanna deploy things from versioned releases only, OCI is great. If we wanna change our version strategy so that we version a different way, like so that developers don't actually have to create semantic version numbers for every single release, then you can do the same thing. The differences, okay, so there was one thing I wanted to show here. Let's see, where is this? Maybe it related to this. Did we look at specifying versions in version constraints in Helm? Yeah, so here in our stage environment, we've got a Helm release and that Helm repo again. And we've specified a version constraint. So this says deploy any release so long as the major version hasn't changed. And it has to be at least 0.2.0. So this is gonna scan our Helm repository for versions that match that constraint and it's gonna deploy anything it finds. Because this is also this Helm repository type OCI is also an image repository structurally. OCI, Docker, they're the same standard under the hood or OCI is a superset, I guess, of the standard. What this means is that you can also use image update automation in this place. So if you have a requirement that actually I heard someone ask earlier, is there a commit that I can roll back? This is the place where you can insert that. So we saw in the very first example, how you can monitor an image repository for changes and then deploy those changes by updating a YAML with the new tag. Well, that's what we would do here if we really wanted to have a commit that we can roll back that represents the rollout. But in this environment, in this particular environment, we haven't got thousands of releases yet and that's unnecessary friction we don't want to add. We don't want to have to have create those extra image update automation resources. We'd like to just be able to say source, applyer and pair them together and let those do their job. So where this says version, there is another trick that we can use. If we are using a Git repository or a Helm repository, I think, actually, sorry, not only Git repository and OCI repository source, we'll do this. Where is it? Helm repo. Okay, let's make a change here to this. And we have this one audience question already in, so whenever we're ready for that, let's do that one. Okay, but what I can do here, oh, this is where VS Code is gonna help actually, I'm gonna pull up this example in VS Code because VS Code has a little bit of awareness of the YAML because it's connected to our cluster and it knows about these YAML types. So if we go into this environment and we open this up, all right, so what we wanna do, we'd like to use the Git repository again for some reason. Maybe we've decided that OCI is too fresh and we're not ready to adopt it yet. So what we're gonna do now, instead of saying ref branch main, this is our staging environment, I think, yeah. I'm gonna say ref, remember, same thing we said in the other guy. All right, so we're gonna put that there. And then in our Helm release, we're gonna change this to use the Git repository. And this no longer matters. This one, I think we can leave as chart version because we are actually tagging and releasing versions and we are actually changing chart.yaml where the version number is, but you could change it to revision here if you weren't doing that. And there's one other thing we need to change because chart name is usually just a chart name. And here now we're pointing at a Git repository so it has to be a path. So I think it's charts slash bar. That's where we'll find the chart. Well, let's give that a deploy and see if that works. Oh, there's more things changed than I wanted to change here, aren't there? But what I'm trying to show here is that OCI doesn't drastically change things in a way that's unreversible. If you haven't yet adopted OCI, most of the same options are still available to you for the Git repository. So you can do this with an OCI repository or you can do this with a Helm release. The version spec goes in one of those three places in the Git repository, in the OCI repository, which has the same structure as the Git repository or in the Helm release. How will we know? That it's switched. Kingman, before we run out of time, there's an interesting question about automation for SOPs and secret management. Yeah, okay. So what we see here is it actually has switched and because there isn't a new version, we haven't gotten a new release. So if we pushed a new version at this point, it would come from the Git repository, but it would be using the Sembrer ref. So there are many ways that we can do this automation. Okay, so the question is about how to use this with SOPs and I have a really good direct answer for that. It's in the docs. If we go to the docs, I will show you what I mean. Refer to values and config map and secret resources. This is not the example that I'm looking for. Things have moved around in our search again. Let's see, where did it come from? Are you looking for a Mozilla SOPs guide? That's Tacey shared. No, I think I'm looking for this FAQ or maybe it's here, this one. Refer to values and config maps generated with customize. All right, maybe this is the page we were on already. So there are three or four good examples over here that are in succeeding order of difficulty. The very first one is about generating a config map. I think here. And you can use this to refer to values from a config map. Okay, so but you said with SOPs, that is the hardest example. We don't have time to cover all three of these today, but we do have this documented. How do you use SOPs with a helm release and a secret generator? And spoiler, this solves one of the problems that we saw in the very beginning is how do we get our deployment to reload when things are upgraded? We actually need a secret to be changed. The content of the secret changes and that needs to filter down to the helm release, which should also change. So what we see here values, pod info values is a name of a config map or secret rather that we've encoded and encrypted in YAML. And then we're decrypting here and we're using customize config to locate this reference. Here is spec values from name, here is spec values from name. And it's going to take and dynamically update this reference so that every time you have a new version of this secret, the helm release will get a new version as well so that upgrades proceed immediately. So hopefully that's the answer that you were looking for. Yeah. And then there was the final question. I think we have time for is OCI repository question mark. Is it a version control like Git question mark or an image repo like Docker? Yeah, it's a little bit of both. So the OCI repository in flux that's been added, the best documentation right now it's probably under the resources but then there's also this more expansive cheat sheet version that shows how we expect OCI to work. Their short answer is it's supposed to be an extension of your Git repository. It doesn't replace the Git repository. It has traceability back to the Git repository. So here's an OCI repository definition and here's a customization that's pointed at that. And here's some more examples. And this is the workflow that we expect people to use. So the user pushes to the Git repository which triggers a CI job and then you build an image for a container registry and the only thing that changes at this point is we're not only building a runtime app image we're also building something like a chart. It's an OCI repository artifact. It's not a template in the sense that a helm chart is a template with holes punched out that the user is meant to fill in but it is in that same spot in the workflow. So what this really enables us to do is it enables us to avoid creating a right credential for that first example. We want the first example to be able to write back to a Git repository. We expect that this is the first thing that your security team will balk at. Say no, there's no way we're not gonna make CI able to write back to the source of truth. It's unacceptable. So depending on your security posture that may be okay or it may be a problem but we have the answer for that. So hopefully that helps. Perfect. That's the time that we have for today but amazing to see so many questions and comments from everyone that's always lovely to see. But as always, thank you everyone for joining the latest episode of Cloud Native Live. It was great to have a session about automated communities deployments here today. And we also really love the interaction and the questions from the audience. Always great to see those. And we always bring you the latest Cloud Native Code every Wednesday. So in the coming weeks, there's gonna be more great sessions coming up. So tune in then. Thank you for joining us today and see you all next week.


Welcome to my God ministries. I am your host Anita Reverend Anita Morris and today We are going to gather in prayer and then also recall the plans of God the Old Testament of the Prophet Jeremiah in Chapter 29 verse 11 Let's go in prayer Heavenly father, we thank you father for your graciousness towards us towards all humankind We thank you Lord God for your tender mercies and your loving kindness Kessit That's without end. It's boundless love towards us And I just thank you Lord God that your eyes go to and from seeking To reward those who diligently seek you and also those who fear you have a reverence and A worship a devotion towards you God. I thank you Lord God that you do not leave us Empty but you fill us daily with each day's need We thank you Lord God for surrounding us with your angels and camped around about us Keeping us in your waves And we just thank you Lord God For this is the day that you have made Let us raise your voice and be glad in it For morning by morning Your mercies are new from the rising of the sun to the going down of the same The name of the Lord is to be praised Thank you gracious father. Thank you Lord Jesus Christ Thank you Yeshua Messiah who is Jesus Christ the anointing and his anointing Thank you for Your mercy. Thank you father for the blood of the lamb Who bled and died Who was crucified buried rose the third day And given us life and life more abundantly and this gospel this great gospel we believe And we just thank you Lord God For allowing us to continue to keep ourselves in belief And of good faith And Jesus mighty name Amen And the word of God and the Old Testament of the prophet Jeremiah When the children of israel experienced captivity Unfortunate circumstances were surrounding that captivity They were led to Babylon the Babylon is interpreted a land of confusion And Jerusalem In the Hebrew is a land of peace the city of peace So they go from peace to a place of confusion that leads us to Gather today and to contemplate Jeremiah 9 11 what that really is When God mentioned says he says and told the prophet Jeremiah to speak to children of Israel And say to them for I know the plans and thoughts Say that as if God is speaking to you Not just in the Old Testament, but he is sincerely saying this to us For I know the plans and thoughts The imagination that's in God's mind about us He knows the plans and the thoughts He said I know the plans and thoughts that I have for you Says the Lord Plans for peace Basically for you to succeed Plans for peace And well-being And not for disaster not for destruction To give you a future And a hope Giving you an anticipated end What all of your hopes and your expectations That you hoped in God will be He said I will give that to you to give you a future And a hope and then verse 12 mentions Then you will call on me And you will come and pray to me And I will hear your voice God is listening when we still ourselves when we are quiet and relinquish I doubt and fears to God And say Lord here I am I'm listening. I am at your feet I'm not worrying What tomorrow may bring I know that you have a future and a hope for me I know that you have plans for me to succeed I know the thoughts that you have for me Says the Lord And they are for my success of for my peace my shalom My well-being And I know it's not temporary But it's for a lifetime It's we call it bere olam In the Hebrew it means forever covenant And that's what God made when he Exhibited the book of Ruth. It says a forever covenant and that emanates God's love To never leave us nor forsake us That he's ever watching and he's always Listening ready to hear and to answer when we call In verse 12 it continues on in Jeremiah 29 verse 12 Then you will call on me And you will come and pray to me And I will hear your voice God is waiting To hear your voice today Not just on Sundays not just on mondays or tuesdays every day He awaits to hear your voice And he said I will listen To you And then with a deep longing you will seek me and require me Like a vital necessity Like a thirst you will have a thirst a hunger for God Even the new testament it says those who thirst and hunger For righteousness They shall be feel And that's what God is seeking When you seek for him with your whole heart with the deep longing I'm waiting to fulfill To fulfill That deep longing of necessity that you have been waiting He's eagerly Awaiting to fulfill That longing that you have in the depths of your soul That is at the root To cause you to grow to succeed to be at peace He said then with deep longing you will seek me And require me As I vital necessity that God is your all in all That whatever you need you know you have it in God Even in when you have a dollar bill And it says in God we trust That is a necessity that this country was built on God faith and God So we know that the founding fathers of the united states Have trusted in the vital necessity at the beginning And put there in God we trust dance On our currency in the united states It says then with the deep longing you will seek me and require me As a vital necessity And you will find me not only will you seek me, but I will be found of you You will find God you will find me When you search for me With all Of your heart Not with just a partial being disingenuine Remember it the book of james and the new testament it mentions that some people ask and require or request of the lord with the miss but and ask for things of God with the wrong motives in era And I don't want you to do that being disingenuine because you want to do it for your own selfish Reasons or your motive in your heart. I have no idea what your motive in the heart of your heart Desire is but when it's pure and honest and built full with integrity of God And it leads to peace God is waiting and eager to see that the wholeness of your heart is fully encompassed About God's expectation that your spirit is seeking God's spirit All your eternal longings Everything that exists in you every innate thing every organ every Blood cell everything that's warming your heart everything that brings you good cheer that brings you all the complexities of your emotions It's all brought before God And it's longing for God Your happy moments your stressful moments your anxious moments Are seeking The necessity of God to be Found of God so that he could hear of those anxious desires Those happy those joyous to be fulfilled He said when you search for me When you search for me and require for me when you request You will find me When you search for me with all your heart Not have heartedness God doesn't want any half-heartedness It's just something with the heart that God knows that he sees and search the heart. We as human beings. We cannot know What is in the heart of human beings? But God says that we will know them by their fruit Which is by their actions when people have actions whether it's good actions or bad actions because out of the goodness of the heart The mouth speaks they act they do and out of the Evilness of the heart That's what people act and do because of the evil heart But in essence and the root of things how people are motivated God knows people's motives And that it cannot be hid from God So that is what God is saying when you seek me and search for me with all your heart I will be found by you says the lord And I will restore your fortunes And i'm not talking about fortune telling that means I will restore The many founding of your blessings that you had before Some people said well, I had this I owned a house. I had a car I had my own independence and that was all taken from me In the midst of calamity When I went through this or when I had went through this divorce or when a storm came and the hurricane tore down my house Everything was ripped apart or when my Some sudden destruction happened where I couldn't regain my strength and Someone was in the hospital. They couldn't repair it.  And beloved some people look at you And your situation as it is only for a season and it's very temporary And God says that's my daughter. That's my son And I will reward him for their faith They trusted in the living God and they did not succumb to The Wiles of the enemy to sow negative seed when they were going through But they sowed life And God is want you to sow life when you're going through Don't let your situation Become a crutch to you but arise above it and beloved And those that are bitter That can't engage with people's joy The joy the Lord is there stream And I want you to know those that are Are Kind of slighted because they don't have a person to share that joy with I want you to recall God's joy The joy the Lord is your strength don't let someone's bitterness To discourage you for enjoying God's life joy that he has for you Amen And they too can have life's joy if I found That is found in the Lord and God Because he's saying he's mentioning that in 29 11 in Jeremiah 29 11 Then you will come on me and you will come and pray to me and I will hear your voice and I will listen to you And then with a deep longing you will seek me and require me as a necessity And you will find me when you search with search for me With your whole whole heart with all of your heart And I will be found by you Says the Lord and I will I will restore your fortunes And I will free you God will free you from your own mind From trying to please people but please god he will free you to enjoy all the restoration of his blessings That none of that will get in the way I will free you and gather you from all the nations all the Backstabbers from all where those people have submerged you and oppressed you Says the Lord and I will bring you back to a place where I sent you into exile I will bring you back to that place that posture Where you can enjoy God's fortunes and God's blessings he has for you But you must hold on to Jeremiah 29 11 And trust this for yourselves, beloved In Jeremiah 29 11 I'm going to regurgitate because I want this to stick with you throughout 2019 I had read this at the christmas party Going into 2019 Christmas party And I was about rebuked By my leadership as a chaplain To give them a message saying god has plans for you members Of our unit plans to bring you success to give you peace and not of harm in our disaster And this was as they were going through different crisis situations of different kinds. I cannot mention that But at the same token god said I want to restore you. I want to heal you I have peace for you and this is what god says for I know the plans and thoughts That I have for you his thoughts are greater than Our own thoughts. I rather have god's thoughts and meditate on his thoughts Meaning that his thoughts are so What do you call it? Magnitude it has great magnitude and it's infinite Without and great are his thoughts. He has towards us and our souls know right. Well His thoughts are greater are higher than our own infinite And finally I said minute For I know the plans and thoughts that I have for you says the lord plans for peace Shalom total peace And well-being and not for disaster And when god even christ when he was talking in the gospels when you start hearing the disciples Speak with god and speak with god and christ incarnate, which is jesus christ When we start talking about the gospels god and christ jesus christ jesus mentions peace be still Then they were going Across the water and they saw jesus Walk on water peter asked the lord Can I walk on water and jesus said come Oftentimes I saw I heard the come meant to see only me When you focus on god, you only see god That's where your faith is strong Or the strongest I should say And we get distracted we fall off cars in disaster when we focus and we get our focus off god And on the wrong thing And that's when he said follow Peace plans for peace of well-being and not for a disaster to give you a future in hope God is still god. He is still the same Yesterday today and forevermore. He changes not beloved And his plans for you are the same He declared your end from the beginning Even when you start to read The book of psalm I believe psalm 119 He said you've written all about me, you know before all of my days were Are were numbered you knew them before the foundations of the world How vast His gods thoughts he asked for us And to anticipate our success To cheer us on if you don't have any physical persons to cheer you on Know that in the heavens are cheering you on The birds are cheering you on the flowers are cheering you on It says let everything that has breath praise the lord And so you know Know that you are loved know that you are thought of Know that you are precious in god's sight Even in isaia 43 It mentions that I love you And you are honored and precious says the lord And his love towards you. I even have it on my business card as a mission Statement as a mission statement I don't know how it goes It reads it right there of all my god ministries And it reads because you are precious in my sight and honored And I love you says the lord Not because we did of any mighty deeds But god saw that we were precious And that he honors us and he wills to love us And even when we didn't love ourselves or didn't have love towards god gods, and I first loved you He loved us first Not because we loved him, but he first loved us and gave himself for us And that's how and we ought to love one another And when that love is not reciprocated or unaccepted We can still walk in love and continuity with god And shake the dust off our feet when it's not received And keep going with god Keep loving keep blessing And don't speak ill will of your neighbor Just let god be god and he'll saw all the things that we cannot understand in this human world But in the spirit god said the spirit knows the mind of the spirit when he's placed his holy spirit in you You have an unction that cannot be taken from you because it's a witness to god's power His direction for you For he knows the plans he has for you plans of peace and not for a disaster to give you a future of hope and unexpected To god be all the glory Go with god Go with god beloved go with god And jesus my name And if god be for us then who? Who and everything gives thanks? And this is the will considering us God bless you and have a great victorious april Easter resurrection sunday And hope and keep your hope in god In christ jesus our lord Amen and amen


Welcome to Toffey TV, it is the match preview of Everton vs Westpawm United, goodness and park, two o'clock kick off on Sunday and yeah back from international break and this is a tough one, I think I think this is a tough one, I think I'm doing very well under David Moyes, at a mix start of the season, obviously we're throwing Europe in there but this is a difficult game I think. It is just, thank God, that international football is over for three weeks or whatever it is, till the next one. It is, it's a very very tough game, they have had a mixed start, just a pity this wasn't after the European game nearly, for heaven. So it will be a tough game, Antonio Ben Armarae a doing really well for them, obviously Declan Rice is playing really well as well so it's a big test for Everton most definitely and obviously welcome and David Moyes back to goodness and park. The one here last season went no fans in the stadium as we did down at the London stadium in May so both teams are quite well matched in the games last season, albeit Westham finished a few places higher than us so a chance for Everton to continue their good start but we'll have to be fully at it and we'll need the crowd.  You know, they work hard in midfield but they've also got a little bit of pace in there as well, solid at the back pretty much. He's transformed them hasn't he really from obviously a team that was struggling near the bottom season before last season as a brilliant season. In fact the game at goodness and park probably was the game that changed their season, you know a kickstart in New Year's Day 2021 has been brilliant for them, really has. And as you said, they've got a genuine goal threat up front, they've got genuine goal threats in midfield and you know they're getting tighter at the back, I know they lost the last game of course against Brentford in the last minute. And to be honest their away form has probably been better than their home form, you know, playing on the counter attack on Tony, as you said there's a bit of a battering ram. You know, I think they drew with Crystal Palace at home as well but good wins against the likes of Newcastle, the likes of Leeds away from home. They lost away again coming from a goal behind and saying it ran. They look like they're genuinely in the mix again and obviously like you just said there, it's how they negotiate that the European games but so far I think they've won two out of two I think it is. They're doing well on that score so yeah it's going to be a very difficult game for us especially with again we look like we're going to be short up front. You know, rathaf bynnig to this has come out and hopefully we'll have Sheamus back, hopefully Llew Cyddi and he'll be okay. And the world will be his fitter. The world will be looks like he's fitter and they're all training but still there's issues with Dominic Carmelun and with Charles and the cleaning not fit you. So it is week eight of Ultimate Fan, £5,000 up for grabs. We've come off the international weekend which means there's going to be changes, there's going to be changes to the teams. So the teams you're going to have to change? I've got 44 and I've got 70. That's good. So I've done, I've swapped out Italy, I had Italy as my team obviously for the international break. I've swapped them off for Chelsea. That is not bad. Not a bad top of the pile, top of the league. Carl Walker in the back so two of the top defenders. In the field I've got Sucek, Bruno Fernandez, not bad. Mason Greenwood where I did when I opened my pack at a new card. Who was that man? And that new man, that new card is Cristiano Ronaldo. Is he going in your team? He's in my team, that is my team. Chelsea the team, Van Dyke Walker, Sucek Fernandez, Greenwood and Ronaldo. That is my team. I got in my team Manchester United, that is my team. In terms of the team Harry Kane came in for the internationals but he's gone back out. He's gone back out because my salad is going back into the side. I apologise but he is going back into the side. I popped Georgina in for the internationals. He's going out, Jamie Vardy is retaining. Sacher is in there but I've got the option of Kevin De Bruyne and I think I'm going to take it. So I've now got Manchester United, Carl Walker who's my captain, John Stones, Phil Foden, Kevin De Bruyne, Vardy and Salah. Very man city heavy. It's heavy on the man city. It's heavy on the man city. Don't forget, packs drop on a Tuesday. You get a free pack on a Tuesday, right? If you take the silver subscription it's £2.99, you get three silver cards that will really, really help you. You will get exclusive content as well. Discounts on Uber Eats. Gold Pack is £4.99 a month. You get two gold cards and one silver. There's £5 off Uber Eats. You also get an exclusive offer for the personal barber shaving club. 50% off a discovery box. £40 for products for £12. So if you want to get involved, get involved but it's also free. Make sure you get your team in though for that first game on Saturday. You've got to have it locked, loaded and confirmed before that first game of the weekend. There you go. There are teams. Let us know your team as well. On the socials send us your team to Toffy TV. Get it over. Let's see how you do as well against us on Ultimate Fan. All the links are in the description of how to join Ultimate Fan. Get the app. Have fun playing. I mean, we knew that didn't we? We hoped that we'd have one of them back for this one and it may still be the case. You might end up with one of them on the bench, you know, but it's the way it is, isn't it, football? And we have to do it. We've coped okay with it at the moment. It's a case. This one will be a tight game. This one might be a set piece or a bit of brilliance from, you know, Tarns and maybe or the Marey Graves being excellent for us. So it'll be lovely to get them on the call that's living in the Jarlers and back, absolutely. You know, the two of our best players, if not the two best players. So to be without them for half the games like we have at the moment and still be with two points off the top of the league, you know, whether to win at the weekend apparently be the best ever start in the Premier League. So that's how good they've done after eight games. So that's how well they've done. But we know it'll be a big game. We know it'll be a tight game. You said before Moise has done a tremendous job. We know he's a good manager and we know what he does and he sets his teams up like that. But we've also got a good manager who sets his teams up in the right way as well. I don't think we'll be under any illusions that this isn't a tough game.  West Ham have won. Funding off two of the last three games ago, which is as many as they've won in the previous 21. So just recently they've had a decent enough record against us. But it's up to us to go out and put that right in. Yes, while we love the Jarlers and the Dominus side, we haven't got them. It's about time. Rondon got himself on the score sheet. It's about time that others weighed in as well. We've seen that lately with Tarms and the Coray getting goals as well. Rondon will have benefited obviously from...he never went on the international duty. He stayed at Finch Farm. They'll be working on him fitness-wise. They've done him no good going away. So they've been working on him. So we have to call on him. We have to call on him. And he'll have to...hopefully he'll be a couple of weeks. He will be a couple of weeks fitter when we say that's a big...that time I think with that international break will have helped everybody will give us. But it's always difficult coming back from an international break as well. Teams just feel a little bit all over the place. So that will be hard to West Anglons in a way game. You know, getting the players back. They've got to check with the public team I think. So getting all the players back. But just on that theme, a bit of an issue for us is...we're recording this Thursday day. We're recording this Thursday day. We're recording this Thursday day. We're recording this Thursday day. We're recording this Thursday day. We've got that extra day which is great on our own. Because we know the likes of Liverpool. They're Brazilian players will be... I'm not playing.  Apparently I was being told and don't know how accurate this is. Manay in Salih, maybe not Salih. Manay definitely is flying from where he was playing to Spain. So they can play against that that's a good... So they get a quarantine. Ym gyfrifio'r gweithgwyd y dyfoddi'r blaen o'r blaen, mae hefyd i gyd ansio, mae'n tro cael o gwaith. Y ddechrau'r lleidio ond mae'n tro. Jogel peirio, mae o'n mae'n tro o'r lleidio yn 10. A gwaith gweithwyr dyfoddo, o dw i'n gweithwyr, o'n Gweithwyr, o'n dweud! So, sy'n bod gyda'r cyfeirionedd yw'r gwahanol, mae'n gyfrifio gwaith. Ond mae'n gweithwyr yma yn ei gweithwyr yma. Felly mae ganddwyd yn eich gwneud, a ganddwyd yn eich cyd-dweud yn y gallu s کرd iawn. Felly, gallwn ni wedi'ch bwysig am hwyl, gallwn ni'n bwysig. Felly, mae'n ei byw dda er byw. Mae – mae'n bwysig am ffiant saith eich gwneud. Mae yma yn y byw. Mae'n bwysig, mae'n bwysig a'u cydd- đượcyn mewn. Mae phaith i ni'n bobl i i ffiant saith er byw. Mae bwyd ddain efe hwnnw yn gofyd. I fengol i好n gyffrion Michael Key. Eftan nhw'n wych yn fawr i fi. Rhyw blynyddo'n edrych gyr indemnol, rhyw bryddo methu. Rhyw bryddo'n edrych gan fawr i fi. Rhyw bryd roedd y mewn anlid yn y ddyfodol. Rwy'n adeiladu'n cyfrasi wedi gweld ar gyfer 3 o 4 o bobl. Wrathiannol, mae'n gallu ei gweld yn meddwl gydag. Llywodraeth yma ym Mhwng Fellyn Antoni Ysbryd yn fwyf. Cyflwyd, 5 gol, 3 oes. Ac mae'n gwaith yma i'r awglau llwyddon. Ac mae'n gwybod maen nhw'n gweld o'r gwasanaeth a'r gwasanaeth a'r gwasanaeth ar ôl. Mae'n gwasanaeth i'w gweld, mae'n gweld i'w wneud i'r gweld. Rhyw i'n meddwl yma, mae'n credu 14 oes gennyn gwybod, ac mae'n fwy o'r ffront gwaith. Mae'n gwybod, mae'n rhaid i'n gweld i'r gwisgol yn y gwaith. Oedden a gyngor o dwyliad rychwm i ddiwylo'r cyhoedd yn llyfriddio. Mae i'w dweud y nesaf, gan gwybod o'r iawn, Byddwn ni'n dwylo ar gyfrifio'r panlŵr y dyfyn hŷrraith, iddo cael eu ddweud ar gweithio'r ddwylo. Gwydwch chi'n fuddo'r lam hwnnw? Rydw i'w ddim yn ei bod yn mynd i'w defnyddio. Dyna efallai'r cyhoedd. Rwy'n rhaid ingen ei wneud hyn. Rydyn ni'n인 ei ddweud llawer o'u awgur. So England, it may be cos other people get it, other people get it, when you know, so why not, if he's scoring goals and he's an option, it's just like we know what England have the, you look at England, we have Dominic Alford Lewyneud was one of the top scorers, the top English scorer for ages last season, Harry Kane's always the first pick and obviously they've got a time of your abeam, he's had a good start, Olly Watkins, although Antonio's had a better start than Watkins, so maybe. That, you know, just going off the topic, I think that sort of represents England a lot of the sand doesn't it, like people like him do get overlooked a lot of the sand. But he's in London, which is a mad one cos normally in London. West Ham. West Ham is so England-sense. Well Declan, he won the world cup. Exactly. Well Declan, Rice got him and he was playing for West Ham and he wasn't amazing, so I don't know. No, it's a strange one that he wasn't including. I think he's a really good Premier League striker, the kind that Moise absolutely fits that role completely, batter and ram. I think what's good about him is, I think he's very confident in front of goal as well. He sort of has this attitude of like, well, I'm here to do that, you know what I mean? I'm not going to. So here we want to watch Alford, he's obviously the danger man in front of goal. As you mentioned, he do have a lot of, when ball and plays he's got the threat of his pace, he's scored his first goal against Bremford. He's got a two-check as well. A two-check on some late, like a classic fail-flane, kind of style of player. And they've just got a good mix I think of. Little bit of play, but a little bit of power and organisation and that, as we said, that's typical Moise's team. Let's have a look at the team from the last game out. You'll have to do that pass because I can't even see it. Well, it's a four, two, three, one, very much like Everton. They have obviously Creswell outbound in Zuma, Cufal, and then two in midfield and Rice and Sucek. And then they've got a small right in here. You've got Four Nells, who's obviously had run up from midfield by Rame and Tiara Bowen. I watched the Bremford game. Bremford were fantastic in the first half. Westam come on strong second half, really pushed them back. But when Bowen equalised, we kind of, like, nine or 10 minutes ago, I thought Westam had probably had enough to go on and win it. But fair play to Bremford. He stuck at it and he went and nicked it in the 94 minutes. So you can get at Westam most definitely, but it will be a big tough game for Everton, but it's a home game and with the crowd and everything. It's a game we've got to be looking to win because Westam will be in and around where we want to be. You know, they're in the mix with us. Well, that's it. They're a competitor for Europe, aren't they? There are only three points behind this with the bits of beaters. They've come at the same points. And, you know, you look at the league a lot of times, and I'm not saying those top four, they're like the kind of games where you look at it and go, if we can get some out of this, good. But these are the kind of games where you've got to look at and go, this is our competition. You've got to beat everyone behind you. But if the people in and around you, you've obviously, that's the day of the games that make the difference. Because, as I said, when we played on New Year's Day, if we'd beaten them that day, that could have been us getting into the top six. That could have given us the kick, but it'd give them the kick. And it is those small margins, at times, in these games. So, when we played the likes of these, when we played the likes of Leicester, when we played the likes of Spares Arsenal, these are the games where we've really got to be making sure we get something out of them, you know, Villa as well. It's a case of making sure... We just can't win, don't lose. Keep your nose ahead of them, and, as you said, it's a home game, so hopefully we're going to win. It was at the London Stadium, they'd be looking at it as a home win, wouldn't they? And obviously, last season, it was two wins. That's how it is. You're absolutely right. When you're playing, you can pet it. It's a chance to put them... You know, everything was a win at six points again between the two of us, but I think the big thing is, if you can't win, don't lose, because I've never won for advocating draws at Goulders and Park, but what I mean is, if we were to come out of it with only a draw, or at least we've kept them out and we keep it going, but it's a game that I'll be expecting. And a lot of that will come down to when we see the team news as well, won't it? Five Martins, isn't it? Five Martins, so... Did you go? Let us know your thoughts in the comments on this one, or are you looking forward to it? Are you confident? You think we can get the three points over at West Ham United? Let us know your thoughts in the comments. Don't forget as well, download Ultimate Fan. We are playing it every single week. A chance for you to win £5,000 this week. I don't want to download it, the link is in the description. Give this video a like, subscribe if you haven't already, and if you want more great videos, daily live videos, join us over on Patreon, the link is in the description, and it's on the screen right now. Thank you for watching, see you later.