Hello, everyone. Welcome to Cloud Native Live, where we dive into the code behind Cloud Native. I'm Annie, and I'm a CNCF ambassador, as well as a senior product marketing manager at Camunda, and I will be your host tonight. Every week, we bring a new set of presenters to showcase how to work with Cloud Native Technologies. They will build things, they will break things, and they will answer all of your questions. Join us every Wednesday to watch live. This week, we have Nick here with us to talk about Kubernetes Native Pipelines for Staple Applications. Another exciting thing happening in the Cloud Native Sphere is that TubeCon and Cloud NativeCon North America Early Bird Registration deadline is today. Get your tickets fast if you want the early bird rate. As always, this is an official live stream of the CNCF, and as such, it is subject to the CNCF Code of Conduct. Please do not add anything with a chat or questions that would be in violation of that Code of Conduct. Basically, please be respectful of your fellow participants, as well as presenters. So I'll hand it over to Nick to kick off today's presentation. Thank you. So thank you, and welcome everyone. My name is Nick. I'm a developer advocate on that, and I've been working with communities approximately for the last five, six years. And the topic for today is going to be focused around building native pipelines within communities for stateful applications. So the idea is really to focus on the developer experience from a real use case application and we're going to start with there into from developing the application and moving to from your local laptop to a Kubernetes production cluster. So maybe I can start sharing my screen and we can get started. Okay. So this is what we are going to build today. Hopefully 45 minutes, one hour will be enough. But here is the idea. When I started to work with communities, I was kind of confused. How can I start developing my application and make it a good application for communities? What kind of communities concept I should use? What kind of tools I should use to manage your life cycle of my application from my local laptop to the staging cluster to the production cluster. And what are the key concepts when it comes to also deploying and building stateful application? So what is important there is maybe let's start by defining what is a stateful application. So stateful application means that one or several components of that application are stateful or in other words, they store some data to disk. So it can be a database, can be a caching solution, basically anything that needs to persist between user or for usage or just to present some sort of data to maybe a front end. So you will need some sort of database. So the idea is let's start by developing that application. So it's already there, but we're gonna start with the code and then go into how do we make this application inside a container, like using Docker file, things like that. And then from Docker, how can we move into a more, highly available environment like Kubernetes? So this is the idea. We're gonna start with an app that is I call the model app. So just to give you an idea, I think it's still open there. It's basically this app where it's showing a bunch of characters on the screen from the Marvel APIs. So it's basically like I'm looking for the image and then I'm showing the name of the character and then the comic books where the character has appeared. And then one, two, three, four, five, six cards with this information. That's basically what the application does. So it's a two microservice-based application where the first part is essentially what you've seen. So the front end, which is using a Python flask and the backend is a MongoDB database where all the semi-structured data, so all the JSON information from the Marvel API is stored. And the idea to build this application in Kubernetes to also show you what kind of basic first-class concept from Kubernetes you can use, I've decided to build this application in the following way. So we're gonna build a three-node MongoDB inside Kubernetes which is basically our stateful application. We're gonna have a couple of pods deployed as a deployment that will be basically the front-end application. And then we need to populate that database with the Marvel information. So for this, I've created a Kubernetes job because I mean, there's different solution on how to do that. But the job, like just to show off how it's working, it's a good solution because the job is gonna be running until it succeeds. So meaning that it's gonna try to connect to the Marvel APIs, get the information, store it to the database until it succeeds. So basically until, at least until the cluster, the MongoDB cluster is available. Once the MongoDB cluster is available, the job will succeed and populate the database. And then as a result, the application will start working. That's the idea of running that application in Kubernetes. But for this, we need a proper lifecycle. So I'm gonna start by showing you what tool I can use to facilitate the development of this application on your laptop. So the expectation here is that as I save code into my application, I can do things as automatically building my Marvel container or my job container, for example, as soon as I change some of the code without doing anything else. Sort of just monitoring the file system when a file that I monitor is changed that ideally what I want is the system I'm using or the tool I'm using to build the container and basically deploy it into my local Kubernetes cluster testing environment on my particular laptop. So for this, I'm gonna be using K3D which is just a wrapper around K3S. So but you can think about it as just as K3S. So K3S, which is the rancher, sort of very lightweight Kubernetes distribution, you can basically install anywhere a simple binary. So this is basically there on the top, this would be the pipeline, right? So you start committing code, not just committing, but just saving code to your laptop. Of course, at some point, you want to commit it to Git for further usage, maybe when you want to deploy to production. But for the moment, what I want first is to have the right developer experience on my laptop. So I want to save code. Then when I save code, the Docker images are built and eventually also they are saved into the remote repository, a remote container repository like Docker Hub there. And then once the Docker image has been built, I want to use some sort of tooling to build the Kubernetes manifests and then deploy it into my local cluster. But remember, we also have a stateful application component which is our MongoDB. And this is where you may want to add a couple of extra features so that it represents the end environment, the production environment. You may want to test earlier in the code lifecycle. So basically if you want to run smoke test, including some of the infrastructure component that will be deployed in production, you can do it on your laptop because it's just Kubernetes in the end, right? It's just software. So for MongoDB, we're gonna be using on that, which is a solution that allows you to use local storage of your Kubernetes nodes and aggregate this as a pool of consumable storage for your persistent volumes. And on top of this, add specific features such as replication, encryption, all those kind of premium features you would want to have in production. So by enabling this on your local cluster, you also have an idea of how your application will behave in production. But again, the solution is Kubernetes native, meaning that is just using storage class YAML so you can control it as part of the manifest generation on your local laptop using customized or HEM or whatever. So for today, the tools we're gonna be using for the local, let's say, laptop development, we're gonna be using, so of course Git, we're gonna be using the local Docker that is running on your laptop. We're gonna be using customize. We're gonna be using on that as well. And scaffold that you can see on the top here, actually the documentation is just there. It's really a nice tool. It's also open source part of the ecosystem. It's a command line tool that facilitates continuous development for Kubernetes native application. So basically it handles multiple phases in the lifecycle of your application. So this is scaffold that is gonna help automate the building of the container, the deployment of the container. So building using, can use Docker, can use to build here, for example, we see what is supported. So you can use Docker, like Docker file. You can use also cloud native build packs. You can use custom scripts and so on. So this is for the build phase. We're gonna be using our local Docker socket. And when it comes to deploying, so again, this is for our local laptop based Kubernetes cluster, you can use Coup CTL, Helm, customize or Docker. So we're gonna be using customize because customize helps you decorate your base manifest to match a particular environment.  And I will also have a prod overlay that is gonna be used to deploy in the production cluster. But in the production cluster, we won't be using directly scaffold or customize directly to deploy it. We're gonna be using a tecton and flux, right? But this is the second part. So those are the tools for the local cluster deployment. Now, the second step as a developer, once you have it on your cluster, once the code has been committed to Git and your pull request has been validated by your peers, then it comes, it's about time to deploy either, maybe not in production, but let's say our production, which is probably like the development or the testing or staging area, like the remote Kubernetes cluster that is gonna be useful for that. So in our case, it's gonna be GKE. And the idea is we're gonna be using again a Kubernetes native way of doing things. So we're gonna be triggering a pipeline, which is gonna be doing the same kind of things as scaffold. So the idea is we need to build the container. We need to build the manifest using customize, and then we need to deploy those manifests with the right images into our staging slash production cluster. Okay, so how are we going to do this? So we're gonna be using tecton and tecton for those who are not familiar with the solution, it's also part of the CNCF ecosystem. It's a Kubernetes native pipeline software, meaning that every task you're gonna be creating within tecton correspond to a pod or a container. So an action or a command that is run into a container. And when you have multiple tasks to run as part of your pipeline, those tasks will be sequentially executed by your tecton solution within Kubernetes as multiple containers. So the whole solution, the pipeline itself is completely running in Kubernetes. So again, the idea is to produce the right images. So this time we're not gonna be using Docker because we are running inside Kubernetes. The pipeline is using Kubernetes. It's not a good idea to mount the Docker sockets in production, right? That's bad from a security perspective. So a typical way to build container in Kubernetes, there are several of them for sure. But Kaniko, which is basically building container without using the Docker socket is a good solution to do so. So we're gonna have a task within tecton where the goal is gonna be build the container with Kaniko. We're gonna have a second task which is gonna be using customized to generate the manifests as well that we're gonna push into a particular repository. So this is exactly that particular GitHub repository there. I have a directory which is called target and the manifests are tested multiple times. So it should be working. This is basically the result. What we should see in the end is just when we will be running it live, we will see a different image digest here. And the last part, once we have our manifests that are deployed into this repository. So we will have, of course, the image also is gonna be picked up by Docker Hub by using flux, right? So the application manifest are gonna be deployed into the repository I've just shown you and then flux, which is a GitHub solution is gonna monitor that repository, monitor for changes on that repository and reconcile and like any GitHub solution, the goal is to reconcile the states of the cluster with the intent which is stored in Git. So our intent is to deploy the manifests that are stored where I just showed you before. And the state of the cluster that needs to be reconciled. Well, it's deployed the manifest that are the new manifest or the new objects that corresponds to the manifest that have been changed on the Git repository. So as soon as the container image will change, we will have our front end container that will be replaced. I won't change like the MongoDB portion because it's a bit longer to deploy, but the application is already deployed in the cluster. So what we will do is do some changes to the application and show that trigger the pipeline that will update the image digest into the application manifest repository. And as a result, flux will see that change and we'll replace the front end container with the new code, right? So the first step is really to change some of the code on the laptop, show you the developer experience with scaffold, see check the result on the local cluster, then we're gonna be triggering, let's say the staging slash production pipeline and we will double check that this time, it's our GitOps pipeline will pick it up and deploy this into the production cluster. So if I don't know if there are, is there any question at this stage before we jump into the weeds? No questions from the audience so far that many, but thank you so much for someone saying that they are listening to them, hello to you there. Happy to hear from everyone else of which location they are tuning in, but I might wanna ask a question from you as well. So what would you say are the benefits of running stateful applications in Kubernetes? Yeah, sure. So basically, it's always the same thing when it comes to running things in Kubernetes, you can just leverage the basic feature and characteristics of Kubernetes, which is all about scale being cloud agnostic, being highly available, highly distributed, which is a perfect fit for any application including stateful application, because now I would say we have all the tools to manage those stateful application. And as an example here, I didn't mention it, but the way the MongoDB cluster is managed by manifests, which is a Kubernetes by YAML, is by using the MongoDB operator. So now with the operator framework in Kubernetes, we can encapsulate the knowledge that is required to deploy application on top of the stateful sets. So we're gonna be using stateful sets because that's a stateful application, but also we need to make sure that MongoDB is properly installed with the right permission, the right database size, all of that. And this is encapsulated into a custom resource that will be managed by the MongoDB operator. Great, and then there is a new audience question now. So Laurentinus asks, the one that you mentioned, is there a blue, green, or canary deployment? So it won't be a blue, green, or canary deployment at this stage. What I'm gonna show you today happens before this, right? If I could add canary deployment as part of it, like maybe by using Istio on top of that, but probably that would be, that's already a lot for today, that would be too much. So today is just like basically replacing the pod in production. So it's like kubectl, just replace and deleting the pod. Don't do that in production, you're absolutely right. You should not delete your existing containers, right? You should do like blue, green, or canary deployment, but yeah, for today, I'm just gonna replace the front-end container. So in reality, if that was my production cluster, I would be a bad engineer because I would cause some sort of disruption. Great. Okay, so let's get started. So on the left here, this is my production environment. So you can see just the timestamp, I've got my application has been deployed like 92 minutes ago. So with the MongoDB being there already, this is production, but the idea in the end when once flux is gonna pick up our changes, what we expect is this value here, right? To be like a couple of seconds and a couple of minutes as we change our code. In the development environment, my development cluster on the right, you can see I have, my application is not installed whatsoever. I have the MongoDB operator so that when the MongoDB, CRD are gonna be pushed into, I mean ingested by Kubernetes, then the MongoDB operator is gonna react based on the CRD and deploy the MongoDB cluster. On the left in production, yeah, I didn't mention, but we're gonna be also using some policy as code to verify that the parameters we set for our application are aligned with our compliance system. So for example, I've got to show you a couple of rules. We want the database to be, I think inferior or less than 10 gig. We want a special user to be created for managing the MongoDB database, things like that. And so this is why I, we're gonna be using Kiverno or Kaiverno. I'm not sure how to pronounce it. If anyone in the audience know if it's Kaiverno or Kiverno, please shout out. And so we will have the admission controller there, which is set for audit. So we're not gonna prevent the application from being deployed. If it's not conformant, we're gonna be generating a report. I'm also gonna show you how to use the CLI as part of the pipeline. If you want to also fail the pipeline as a command line, as opposed to an admission controller, like before deploying the solution in the cluster. We also have the MongoDB operator that is there to react based on the custom resource. We have Tecton that is installed as part of the cluster as well. And of course we have the on that solution that is that will be leveraging the local storage to create the various PVC and also add the extra features like encryption and replication. All right, so now let's start with the application itself. So the application itself, as I said, the idea is we start with a pretty empty environment where I have my application. I've got my Python scripts. This is my front end. This is a flask application. I'm not gonna go too deep in the code just explaining to you what it does. So essentially the front end application is just, the job is just to connect to the MongoDB cluster that is gonna be deployed in Kubernetes, connect to that particular MongoDB cluster and then gets the different information I pulled from the API and then populates the different card with it. Like all the comic books, the comic card will be populated with the JSON information I have and render into an HTML page, right? That's basically the code is not, it's super simple. And of course, you want to have the Docker file in the appropriate directory. So in the app directory, I have my Docker file that Scaffold will use because remember, Scaffold is gonna be using Docker to build the application. So therefore I need a simple Docker file and I'm gonna be using gUnicorn as the web server. So I've got an extra configuration for gUnicorn, the requirements, the dependency for my application, Flask that is there as well, and as an environment. And then, so this is my application, it's basically encapsulated within that folder, the app folder, I've got my code, I'm gonna be running into a Kubernetes job that is located into this directory. So Marvel init DB, the role of the code there is gonna be to populate the, effectively is gonna be to populate the database with the information. The role of the front end Flask is to display it, the role of the job inside Kubernetes, the role of that code is to connect to the API, the Marvel API and populate the database. So you will find things here like a Mongo username, MongoDB password, the replica sets name inside MongoDB, the function to get the, to call the Marvel API, to do, to realize all the requests and to store this into a results kind of dictionary and then store that dictionary into MongoDB using the Mongo Client library. And simply storing this as, you know, JSON payload into a MongoDB document. All right, so nothing too fancy there, the application and again, Python and for this, I also need to have a Docker file to be able to build that particular container. So essentially my application is two microservices, not really microservices because I mean, it's quite simple, but they are two containers that will run in Kubernetes. The first, the init DB will be around as a job. So we'll be around multiple times until it's successful and the application will be around as a deployment.  And so that is for the application, then for scaffold. Scaffold again, it's super easy to configure. It's quite intuitive. If you go to the documentation, there is a couple of things I want to highlight here. So I want to build two artifacts. As I mentioned before, I'm just specifying a context, which is the name of the directory. So the app directory, which is where I'm gonna store my flask application. The commands I need to build the container. This is a build.sh, which is there. I'm using buildx because I'm running on Mac M1, which is a non-based processor CPU. So I need to use Docker buildx to build my container if I want to build cross-platform, including x86. So this is why I'm using a custom script. Typically, if you don't use an on-base laptop, you maybe you won't have to use buildx. So this is why I'm using a custom script, which is good, right? It's, I mean, this means that Scaffold is quite extensible. You can just specify your script that will be used to build your container. So same thing for the, so that was for the flask. For the model, the initdb container, same thing, I'm using the same script. Local push through, which means that local means that I'm gonna be using the local Docker socket and push means that I'm gonna push it into my Docker registry. So the only thing really you need to do at this stage is to do Docker login so that you have your credential just cached and then you can start using Scaffold. And then you need to specify the overlay for customize. And now if I show you the overlay, the dev overlay, this is where all the magic happened to move from a Docker container-based environment to a real Kubernetes environment where you need those different manifests. So I've got the base manifest there, which is like the naked application. And my customization, essentially, there are a couple of things I want to provide some create some Mongo config using customize. So customize can dynamically generate things like secret password credentials. And this is exactly what I'm gonna do here. So I'm gonna be using customize to create all those secrets. I'm gonna also populate the different config map for the environment variable to connect to my MongoDB. I'm gonna create here a number. I want to specify three replicas for my environment, the number of pods for the front end. In terms of my database, again, this is encapsulated into my custom resource, which is now a first-class citizen in Kubernetes. As soon as I installed the MongoDB operator, I can start using this custom resource. And I'm gonna specify here the volume. There's a request from the audience to make the fonts a bit larger so that they can see a bit better. Larger, yeah. Okay. This is, yeah. Yeah, okay. So now I'm gonna show it. Yep. There's also audience question, but we can figure out the font size of the course first. Okay. Is it better now? Yeah, yeah, you can ask me. Yeah. So, yes, we got a confirmation. Thanks. It looks better. People can see it better now. So for MongoDB, are you using Mongo? When I started my MongoDB container, when I tried to use PyMongol for grid assets, I get the top error for second-day databases. Ask Simeti. Oh, okay. So, time out. Probably means you have to double check. I don't know. Like this out of the blue, I'm not sure. But typically, the error you may face is maybe your MongoDB, your Mongo database is not up and running properly. So you want to check, look first, use a container with an image that is the Mongo client and try to connect from, before using the Python library, try to just run the Mongo client or Mongo, or it's called MongoSH, the shell container image in your cluster and from the cluster itself, try to connect to the Mongo database to check if it's working. If it's working, then you may have an issue with the way you connect to the MongoDB depending on if it's a cluster, if it's a seed cluster. There are different ways to connect to the Mongo database. You have to check the documentation for this. The first clue, I would say, use the MongoSH container image and try to connect from within the Kubernetes cluster first before using the library and some code. Okay, yeah. So here, what I wanted to mention is in terms of the storage for the database, this is where you specify the volume claim templates. So the type of storage I'm going to use. So in that particular case, I'm going to be using the on that storage class where I have defined all this extra feature encryption, replication, all of that. And then I'm going to also specify the size for my data volume and the size for my logs volume, right? And of course, the storage class here, this is development, my local cluster for development. So maybe replicas, I don't need them. So I don't want to enable encryption if it's local or my local cluster or my laptop and I don't want to have any replicas. You can also, the only thing you need to change if you want to enable a particular feature, it just go there, change it and that's it and save, right? Scaffold will take care of the rest when you redeploy your application. So with Scaffold, there's a multiple thing you can multiple mode where you can run. So let's go back to the Scaffold part, which is there. So you can use a Scaffold build which is going to be building your images. You can use Scaffold run, which is going to run and deploy the different manifest and build the image in your cluster. Or you can use Scaffold in Dev mode, which is probably the best mode, I mean, the principle, the main mode where you should use Scaffold. So the idea is that one, right? So we're going to check what's happening from there. So it's going to be building the images and as you can see, a new namespace is now created here. It's going to start deploying my different, so my application, seven seconds, you can see on the top right end here. You can see that a job has started. The job will probably fail because you can see the MongoDB, it's a three node cluster. So it won't be ready before like a couple of seconds slash minutes. So the job will have to run multiple times, but it doesn't matter. In Kubernetes, a job will be a run until it succeeds, right? Well, at least, I think by default it's 10 time or until it succeeds. And the front end is already deployed, so that's fine, it's just our flask application. But now, if we go back to Scaffold, the interesting part is that now it's also displaying the logs live of your container. So the two container, the initDB and the flask, front end, the container logs are displayed here in what you see on the screen here is the container logs. Now on top of that, I can start also changing my code and because it's located into a directory that I'm monitoring, if I modify the code there and I just hit the Save button, the entire application that is related to these changes is gonna be, although the container are gonna be redeployed. So in that case, I'm gonna modify the page.html and then we're gonna be changing that code and reflects the code in the HTML page live. So here you can see that the job is trying to add data into the MongoDB, but because the MongoDB cluster has not been deployed yet, it cannot succeed. So if we can see now the job must have failed once, you can see error. So now we have the second instance of the job that will be running, but now you can see my MongoDB cluster is up and running. So this particular job should succeed. We're gonna wait. Yes, so now you see it's downloading or it's like kind of doing all this get request from the Marvel APIs and storing it into the database. So now once it's finished, we're gonna just test the application if it's working. Okay, so now it's done. What we can do now is just do a .html port forward for my application, which is running on port 8080 and go back to our local host 8080. So now this is my development cluster, my development application. Now let's say I want to change some of the code. I want to like to use a different syntax for a comic. I don't want to use comic, but I want to replace using comics everywhere, right? So I'm finding all the instances in my code to replace with comics.  I'm gonna go back here. And so the logs, so you can see here, this is representing the connection. I've just initiated from my browser. So now let's save. So what I'm expecting is the container to be rebuilt and redeployed in the cluster. So before that, just to prove that I'm not lying, let's check the front end is like three, let's say three, 40. It's gonna be like four minutes or something like this. Now I save. As I save, you can see I just hit command S, right? So it's monitoring my environment and now the container are being built and again deployed into the cluster. So now I should see again, if I go there, you can see like 12th second. This is my new deployment that has been deployed live in my development cluster. So again, we're gonna try to pull forward and I should see here a new code that is deployed. So I've got the right syntax, right? So that gives you an idea of at least the capability for local development. So and if you stop testing everything, what you can do then is you just go back to your scaffold dev process, hit control C and by doing so, it's gonna delete your application, right? And you're gonna see here, the dev namespace is being terminated, right? Now if you want to, I still have PVCs, so you may want to also have a script to delete PVCs and stuff like this that has been provisioned by the operator, not by scaffold. So now I'm back again into a clean development environment. So now that I have done my changes into my dev environment, I want to use my production environment to deploy this application. So again, there are two components for this. The first component is gonna be Tecton. So Tecton, as I said, we're gonna be running a couple of tasks. So we're gonna be using, so Tecton as a concept of pipeline and a pipeline is composed of one or multiple tasks and those types tasks make use of resources. So I have three main tasks I want to realize. The first one, I want to build my docker image the same way scaffold did it. So in that particular case, I'm using a container which is Kaniko and I'm running a couple of commands which is to build the image, I'm using Kaniko executor and then I'm just using the docker file, the path to docker file I specified somewhere else when defining the variables for Tecton to use, the destination, the digest file, all of that. This is gonna be used by Tecton to produce my image. Once I've got this image that has been deployed into the docker registry, what I want to do is also use customize to replace into my manifest, to generate my manifest with a new image, right? The new image that has been set by my previous task which was building the container using Kaniko. So the job of my customize task is gonna be to use customize to edit the image within the particular manifests and then to generate those manifests into a special directory. And that directory then I'm gonna be using a workspace within Tecton, which is basically a PVC. It's just like a directory. As part I'm mounting inside the container that is gonna run that particular task. And once I've got the manifest that have been stored into that particular directory, what I want to do is use git to update, to commit and push the new manifest onto my repository. And but here you can see that I don't have any git CLI task for the simple reason and this is why I really love Tecton as well. If you go to Tecton Hub, they are pretty fine task. And if you look for git CLI, there is some documentation and you can just create a task. You would just name it git dash CLI.  So if we go back to here as part of the git script, this is what I'm doing. So remember I've got locally the manifest that are, that have been created by the previous task. So now I'm doing git init within that particular directory. I'm adding the origin, which is where I want to upload my manifest. I'm doing just CD target, which is where I want where I have my manifest, add it, commit, push, and then the upstream repository will be updated with my manifest. And then finally, what's gonna happen is once Tecton, this is the last part of the Tecton task, right? Once Tecton is gonna be deploying, I mean, creating those manifest and push it upstream into the repository, we will have custom, not customized, we will have flux, that's customization. Flux is gonna pick up that particular repository that I have defined as part of the prod customization. So it's gonna monitor this customization using the special source dash in or it's a git source. Sorry about this. So this is gonna get CRDs sort. So you can see here, I've got from a flux perspective, you can see I should have like sources. What cluster is this? Flux pipelines. Yeah, you can see customization there and I should have git repositories as well, right? So I've defined this git repositories with the manifest as part of the repository that flux needs to monitor. So as soon as you will see Tecton updating the upstream repo, we will have flux is gonna pick it up, right? So what we're gonna do there, we're gonna do a flux get customization dash w to check like once it's gonna pick up the manifest that have been updated, monitor the changes, I should see new line there, right? So now what we're gonna do, we're gonna be triggering the pipeline, right? So now I've shown you this particular pipeline what it's gonna do. Again, because it's a Kubernetes native solution, I can use kubectl to trigger my pipeline, right? So for this, I'm gonna create an object based on the model app run manifest. So this is the one that contain all the different tasks, the high-level ones, and this one, this model app run will make use of the subsequent pipeline model app, the different tasks, et cetera, et cetera. So let's trigger this. And again, so create this, so it's created.  So again, so the first part is building the container. So this is using Kaniko. Second step, we're gonna be using customized to generate the manifest. And third step, we're gonna be using the Git image, the Git task, sorry, the Git CLI task to push the manifest into the remote Git repository. And finally, Flux is gonna pick up those manifests. And the last step really is, I wanted to show you when it's deploying at the same time, I'm gonna have Kiverno that is gonna be monitoring the different objects that are gonna be pushed into the cluster. And Kiverno, this is also a Kubernetes policy engine. So meaning that I can specify my policy as YAML, excuse me, as opposed to, for example, OPA, Gatekeeper OPA, because basically it makes use of Rigo. Rigo is a different language, for sure it's gonna be probably more flexible, but here for more like Kubernetes policies, more simple way to build policy, then you can use just YAML and create your own rules. So a couple of example here, I've got a rule that says that I need to have an admin, at least with all those permissions. So it is monitoring the MongoDB community custom resource. So you specify the kind of resource you want to modify to apply the rule, and then you can type the message if it failed, and then you specify the pattern for my encryption. For example, when you're in production, you want to have encryption enabled for your storage class. If the provider like on that is providing this feature, you may want to have the pattern, I need to see encryption set to true in my storage class. Same thing for replicas, you need to have at least two replicas where you're deploying into production. And the maximum size is 10 gig for my database in production, right? So it's going to be giving you these results. So just here, this one, this report. So gets faster report. Please see report, right? You can see policy report. So we have here two paths, right? And we also have cluster policy report. Some of the policy I've used, I've got four policies to our consider cluster, to our consider policy report. So I've got two paths for the cluster policy and two paths for the policies. And now I can also do this dash. Yeah, I know. So it's going to tell you which one has passed and if there was one fail, it's going to tell you why it has failed. And just to give you an example of something that is non-conformant. So here, if I check out non-conformant, oh my God, I believe. Okay, you can use, so the results I had previously, I've showed you the report, it's inside the cluster because I'm using Qiverno within the cluster as an admission controller. So now you can also, you can choose to stop and fail your pipeline if the manifest are not matching those requirements. So for this, you can use also Qiverno as a command line, right? So for example, here, I'm using customized to generate the manifest. So it's going to output the manifest with my non-conformant, it's not non-conformant, blade slash prod. You can see here, it's prod, but it's the non-conformant manifest that are located there. So, and then I pipe the manifest, so the text file into Qiverno, and then I just going to display the results on the screen. Oops. What did I do wrong? Policy, policy. Okay, it's prod. Sorry, maybe this one. Yeah. So you can see here in my non-conformant where on purpose, I've created a size bigger than 10 gig. I've created, I've disabled encryption. All of that, you can see that I've got three fail, one pass and it's going to tell you why it has failed. So as a result, you can choose to fail the pipeline if you want, right? So this is the last part I wanted to show you in terms of, you know, also adding some policy as code element to it. So now just quickly get back to our pipeline. So the tecton pipeline has finished. Now what I want to see is, you can see here now, I've got another instance of the reconciliation of flux. So flux has picked up the new manifests upstream on my remote git repository. So now as a result, I should see, you know, four minutes, this is when flux picked it up. And as a result, I should also see now, let me check if I have on the, if I just want to check that I've, yeah. So I have removed and terminated the port, the portware direction there. Let's go back to tecton and then use a cook CTL or forward from there. So now this is running, this is my production environment that I want to test. So let's go back to local host and hopefully, so you can see I've picked up my image with the change and I've updated my production environment with it, right? So I am now in a production environment where my application is running, but I have encryption enabled, replication enabled. I've got more container as a front-end. And yeah, the only difference is, as was mentioned previously, I didn't do a canary deployment. I just, you know, deleted, replaced the container using flux, basically updating the application. Okay, so I think I'm done for the demo. Is there any remaining questions at all? Great, great demo by the way. Thank you so much. While we wait for the audience questions, hopefully come in, so essentially now is the time for you to ask the questions. Well, you could have asked them throughout the whole, maybe not as well, but now is your time to try an audience. So let's get those questions in. And then there's the first one here. Where can I get this example on GitHub? Okay, we can post it. I can give you the link and then you can post it from the, where is it located, like the webpage or where we put all the information related to that talk. I'll make sure to post all the different links to the repositories there. Great, perfect. Then Carlos continued, I like the marble app. Yes, it was a really nice demo. I agree with Carlos there. Oh yeah, keep the questions coming in. We have about seven minutes for questions. So there's plenty of time, so type away. But while we wait for the typing to start, I have a few questions as well. So there are a lot of moving parts in the CI CD pipelines. How do you select the right tools? Yeah, so I would say basically to find the right tools, you don't have to automate everything. So it's, I would say depending on your use case and how you want to improve your current processes, you can focus on some of the area I've mentioned today. So maybe it's just for you, you want to be more agile when it comes to your own application and testing on your local laptop, then you can pick up scaffold or try other tools that have the same kind of qualities to deploy on your laptop. If you're more focused into automating deployment in production or staging, then maybe focus more on Tecton or, I mean, I love Tecton because as I said, there is this market, the Tecton Hub, which allows you like in five minutes, just to use a container and do the tasks you need to do. And so if you want to automate is really related to your production, then maybe focus on Tecton. If you want to enhance is maybe provide more security, more compliance, then focus on the policy as code. One at a time use those building blocks in isolated fashion. And once you're happy with them, then you can start combining them together. I mean, this demo took me probably, I didn't build at once. I started by doing the laptop, then I was at Tecton, then I did some things around policy as code, and then I started to add them together. But don't try to do probably everything at once. That would be my advice. Makes a lot of sense. So there was a few, there's a lot of questions now. So let's get through them. So Carlos continued, where, what page? So which page you will add the GitHub example to? So what page? I don't know. I don't know. Is it like, how can we communicate this to the attendees? To what would you recommend? I mean, if you have a page you can share right now, you can post to the private chat that we have here in the production side. And then we can send it to the attendees via chat, or you can, if you don't have it ready right now, you have a Slack channel where you can send it there as well, like later on. Yeah, so there's multiple solutions. So I'm gonna link into the chat here, my GitHub repository where this is where you will find all the repos I've used today with the name. So if you watch the video on demand and you can pick up the name of the different repository, this is where you will find all the code. And if you want to connect on Slack, you can also connect on the, on that Slack, which is, let me, I have to make sure that I'm not mistaking, on that Slack dots. Yeah, so if you go on our Slack channel, which is, I'm gonna just post it into here. You can join this on that, dot Slack.com channel where you can find me if you want. I will make sure to post the links there. If you want to talk to me, you can also find me on the CNCF Slack channel, I'm there. So my name again is Nick Nicholas Vermandy, if you want to reach out to me there, if you have any other questions. Yeah, I think that should be good. Yeah, that's good. And then we have three or four or five questions to go through in three minutes. So let's be quick about perfect. We have the next, like the resources ready. So a question. Tecton is an alternative CI CD technology, correct? Being cloud-native to communities, thanks beforehand, asks. Yeah, it is, Tecton is a CI CD solution. What is specific to Tecton is that as opposed to, you know, GitHub actions or a SQL CI or anything else, it is running itself inside Kubernetes. So every action you do in Tecton is a container, right? That's the only difference, but it is effectively a CI CD solution. Perfect. So do you recommend to take the CI CD pipeline images used in the task to copy the images, scan them and host them yourself? The best thing is just update your remote repository, right? So whether it's Docker Hub or on, you know, GitHub repository to store your images there. Yeah, do that. I guess it's better. If it's on your laptop, you can use like your local, deploy your local images there as well, but I guess it's better just to update your images on a public repo somewhere, right? So the registry side. Great. And then Robbie asked, what would you change to make this demo multi cluster? Is it just adding additional clusters and flux and how does it happen asynchronously? Yeah, exactly. It's a multi cluster would mean that you would have different cluster configured to listen for that particular repository where you have your manifest. So you would have maybe different overlays for different clusters. And then for every cluster, you would have flux or it can be algo, whatever, that is monitoring this particular repository. Yeah, definitely I will do this. Perfect. And then the... Yes, just to... It is important meaning that when you define flux, you tell flux, you know, like the interval time, it's monitoring like every 10 seconds, every 10 minutes, sorry. That is the default, but you can change it if you want. Perfect. And then with one minute left or a bit less last question of today, there's a question, I always having difficulty to set the graceful exit for stateful applications mostly for DBMS type. How would you suggest for killing the stateful pod? To kill a stateful pod, but normally if you use an operator and if in the normally you can scale down to zero, right? If you want to delete the pod, you can scale to zero. This is the best way to delete your pod, right? Don't delete manually. Use just like the... If you use... If you trigger the operator to delete the stateful set, then you make sure that it's properly done. Yeah. Perfect. That was it to our today. We are right on time with the one hour mark. So thank you everyone for joining the latest episode of Cloud State of Life. It was great to have a session about community stateful applications. And thank you for such a great speaker as well. We also really love the interaction and questions from the audience. And as always, we bring you the latest cloud-native code every Wednesday. So next week though, we'll have another great session coming up. So thanks for joining today and see you next week. Thank you. Bye.


I had to become a millionaire. Why got a question for you? When's the last time you read Will Durant? People go, never. I go, yeah, there's no hope for you. You haven't read books by the greatest thinker of the last 100 years, maybe, of civilization? We live in such a weak-willed society that people wanna never learn. They come out of high school. The average person never reads a nonfiction book. Again, I got news for you. If you're not a perpetual learning machine, there's no hope for you. You don't have to be a genius, but you have to be a learning machine. You have to be a learning machine.  Oh, where do I find them? tylopez.com.  You're disqualified while you're talking to me. Now, this is a mean message, but hey, sometimes the truth hurts.  Forget blazing your own path. You blaze your own path and design your own airplane that you get in. No, you get in one built by smart people. So study smart people and then you got a chance.


Nigerian Muslims joined their counterparts all over the world to mark this year's ideal victory, the end of Ramadan fast. Blas Tevinius monitored the prayers across some states to report. The sighting of the crescent indicates the end of the Ramadan fast. It is a pleasure to announce that today, the 29th day of Ramadan 1444, which is equivalent to 20th April 2023, marked the end of Ramadan 1444. In Kuala State, Muslim faith is trunked to praying grounds. In its message, the chief Imam of Ilauri, Sheikh Mohammed Bashir Saleh, appealed to Muslims to imbibe the lessons of Ramadan, and all their daily encounters. The emir of Ilauri Ibrahim Sulu Gambari led all the dignitaries to the Eid prayer ground, with the state governor Abdul Rahman Abdul Razak visibly absent at Friday's Eid prayer ground. I want to advise all the ummah that they should try as much as possible to sustain the good attitude, the peace, the harmony and the tangulity, and also I want to use this opportunity to pray that all might align, infinite masses continue to be with everybody and accept our Ibadah. In Adamaa State, Muslim faith views converged on the Jimetah central Jumat mosque to observe the two congregational rakhats prayer to mark the Eid prayer. The prayer was presided over by the deputy Imam of the mosque, Ismaila Bamanga. Muslims have to do their don't eat, it's just remaining what remains. Before coming to the Eid ground, giving our zakat al-Fitr, wearing new clothes if possible, or wash the old one, following to come in different way and get back in the different way. All this one is happening now, we are on our way going back, we are going from different way. So, and then finally, when we are going we have to site Allah Akbar, Allah Akbar, Allah Akbar, La Ilaha illa Allah, Allah Akbar, Fala Ilaha Alhamdul. That is the teaching of our Holy Prophet Sallallahu alayhi wa sallam. This section of indigene's shared their experience on this year's Salah and called for the collective efforts of the government and the people to overcome the security challenges facing the country. Very, very fantastic, very peaceful, everybody who have seen the taboo, the kind of people that came in and the appreciation, the celebration is even more better than the other years. Insha'Allah we thank Almighty Allah for the opportunity given to us, we have celebrated the Eden future today, we really appreciate our friends and family that we take pictures together with. Alhamdulillah, Masha'Allah. Thank you. We feel we appreciate the way people cooperate and we pray peacefully and we hope we will enjoy this season the way we found ourself and we pray for Nigeria and other masters at large.


Good morning family Alaphia My name is Lorelai Williams, and I'm a daughter of Oshun initiated in the Afro-Brazilian Religion of condom blade and this morning.  Who tried to keep the Vietnamese? Who the devil on the real side? Who got rich from Armenian genocide? Who the biggest terrorist? Who changed the Bible? Who killed the most people? Who do the most evil? Who don't worry about survival? Who have the colonies? Who stole the most land? Who rule the world? Who say they good, but only do evil? Who the biggest executioner? Who, who, who, who? Who own the oil? Who want more oil? Who told you what you think that lady you'll find out is a lie? Who fount been latent? Maybe they satan. Who paid a CIA? Who knew the bomb was gonna blow? Who know where the terrorists learned to fly in Florida and San Diego? Who knew why five Israelis was filming the explosion and cracking their sides at the notion? Who need fossil fuel when the sun ain't going nowhere? Who make the credit cards? Who get the biggest tax cut? Who walked out of the conference against racism? Who killed Malcolm, Kennedy and his brother? Who killed Dr. King? Who would want such a thing? Are they linked to the murder of Lincoln? Who invaded Grenada? Who made money from apartheid? Who keep the Irish a colony? Who overthrew Chile and Nicaragua later? Who killed David Subeco, Chris Honey? The same ones who killed Bico, Cabral, Neruda, Allende, Checavara, Sandino?  Manlain, Betty Shabazz, Princess Di, Ralph Featherstone, Lil Bobby?  Fred Hampton, Medgar Evers, Mikey Smith, Walter Rodney? Was it the ones who tried to poison Fidel? Who tried to keep the Vietnamese oppressed? Who put a price on Lenin's head? Who put the Jews in ovens? And who helped them do it? Who set America first and okayed the yellow stars? Ho, ho! Who killed Rosa Luxemburg? Good morning. Thank you Diane and Lorela for bringing us into this day. My name is Kathy Engel. I'm the chairperson of the NYU Tisch School of the Arts Department of Art and Public Policy. And it is my honor and privilege to welcome you today. Thank you for being here. Give yourselves a round of applause. Just for being here. It's a beautiful day. We're right next to the park. So we know why we're here in this room, right? I want to call up to stand up and make yourself visible. The co-sponsors of this one-day gathering. Jaira Placide, the associate director of the Institute of African American Affairs at NYU. Thank you. Thank you for your work. And Robert O'Mealy, Institute for Research in African American Studies, Columbia University. Thank you. And thanks to all your students as well. Sinaita Mendes from Manhattan Neighborhood Network. Thank you for your support. My colleague and friend and mentor, Dr. Martha Moreno Vega. Can you come a little closer, please? I want to thank... There's so many people. There's always a team, right? So I would be here all day if I named everyone. But I particularly want to call your attention in the program to the original organizing committee because it's always a vision, right, that starts anything. So let's just give a round of applause to the organizing committee who really thought up bringing us here today. All that the staff of CCCADI, hello, and the staff of the Department of Art and Public Policy I want to also call out HowlRoundTV and very particularly mention Emily Brown, Kristen Kalaki, Regina Bultron-Bengoa, Janet Sackie, Crystal Marich, Antonio Lyons, Courtney Brown, Peter DeGeneres, and all the students and staff in the different groups who brought us here today. Thank you so much. If I forgot to name anyone, it is because there are so many always. So thank you for that. I'm going to share with you, in the spirit, honoring those who came before, I just want to share a very short poem by a dear sister, a poet, who left us too soon, but is definitely present here today. Sophia Henderson Homes. ML King Day, New York City, 1989. Sophia Henderson Homes. We are here at one of the campsites of the dream, still far from the mountaintop, still. We the women, we the children, we the men, black, brown, red, yellow, white. We've heard the speeches and prayers. We've been in the wars. We carry our dead at times as casually as air. The hopeful and the wounded sit closest to the fire. Soon it will be morning again. Soon it will be time to march again. Sophia Henderson Homes. And of course, I join in my thanks to Amiri Baraka. Thank you. I want to also thank Nestor Ortero. Look at that poster, isn't that gorgeous? Thank you, Nestor. Are you here? Could you stand? Please stand. Gracias. It's beautiful. Thank you so much. And you know what it is to make a poster for a group, right? All the backs and forths and changes. Thank you. We're going to next have a slideshow offered by Kwame Brathway from the Patrice Lumumba Coalition, followed by Felipe Luciano, poet, chairperson, Young Lords Party. Before we do that, I've been asked to be the housekeeper and to make some announcements. The restrooms are upstairs, so you go to the right out of this door and up the stairs, or you can take the elevator. Not hard to find, just at the top of the stairs, straight ahead or to the right. How to purchase black Renaissance noir, is that a question? Did you bring that? No? It's on the website. Okay, so at the registration table, we can tell you that. The Story Project. Our students are asking that the panelists, after each, at 12 noon and at 5.30, and we'll be escorting you, go to, there's a corner set up. Sophia, is that right? Do you want to describe it? Thank you. Before we move on to our program, thank you Sophia. Thank you for all the work. I want to just honor the person who really built the Department of Art and Public Policy, who is very much present today, and that is Randy Martin. Just want to, and on a very personal level, I want to thank my dear friend and my sister, Valerie Maynard, for coming here from Baltimore, because the work is really built on relationships, and Valerie, you have mentored so many people. You have made so much work. You have led so many of us, including me. And so I wanted to particularly thank you for being here today with us. Now we're going to have a slideshow. Kwame Berthwaite. Thank you. You're my friends. Have you put me between Baraka and Felipe? I'm not a speaker, I'm a photographer. I've been covering events, well, for 57 years, African liberation struggle, not just covering it, but helping to organize with several groups here in New York basically, but closely tied with the movement and the various liberation groups in Africa, particularly southern Africa, very close to SWAPO, southwest African peoples of organization. First, but then, well, let me follow the slides here. This is Carlos Cooks. This was a Carlos Cooks for African Nationalist Pioneer Movement with one of the leading nationalists, as a matter of fact the only organization ahead was built in the name of African Nationalists, all right? And this, they started in 1943. They're a Garvey movement who was formed after Garvey's death, but anticipating it got a permission from Garvey to form a new movement. I couldn't take too much on the slides, but this is part of the previous slide was African, it was a Marcus Garvey movement which we celebrated every year and still, of course, he's passed now, right? Now, I got involved in the African Liberation struggle in 1960 when I say we now talk about myself and others, my brother is not a graph, and others who really started organizing mass demonstrations against South Africa and such. And we did that after hearing of a speech made by Salma Nyomo, who was the leader of South Africa, the South African Liberation Movement fighting South Africa. And that was him on a desk there in a meeting call with my colleagues, when they heard of the speech he made at the UN and invited me to speak to the people of Harlem, and that's how the movement... Shortly after that we formed the Grand National Model and the Blackest Beautiful Movement that stretched not only across this country, but across the world to give the dignity and support of African women and when I say African women, I mean us here, you know, all of us. This is a group of A.J.S. and the Grand National Model group. A.J.S. was a cultural group that pushed the movement and the Grand National Models were the models that pushed it, which is all one group. The Blackest Beautiful Climate here, some of the people at Marcus Garvey Park prior to a shooting to promote the shows. That's the last from 1962 to 88. Here are some of the very nice models here. Some of the original group, as I said, the group continues from that moment. There's a group shot in 1968, some of the posters, some of the shows that we did, the Blackest Beautiful Show, the African Liberation Story pieces, etc. This is Alame Brand, the founder of A.J.S., co-founder myself, my brother and my handful of other artists who were graduates of high school industrial art. This is Alame Baraka. This is Aristide in the Lucas and some of the other shows. Anyhow, this was a thing we had for Aristide when he came here and we had a little function for him at the Schaumburg and County College. This is June 10, 1990, when we brought, we didn't bring them over, but we hosted Nelson Mandela on the left. I don't know if you can see it, but the country has to where it is. This is Alame, the state office building, which ran all the way about three or four blocks. About 200,000 people were estimated by the city. This is my brother, Alame, who was the head of the opposition, and he was the host of the Mandela celebration. We had Uba Ben-Mahar, who was on the right before, who also did 27 years in prison for his political activities, and the second part as opposed to ANC. Not opposed to ANC, as opposed to Mandela, rather than ANC. Some of the folks of the party were struggling and presenting it. This is Salman Yolo. His inauguration, we helped him from the time from 1960 until his inauguration in 1990, when the battle was finally won, when they belonged with Cuba and other Mozambique and Angola to defeat the South African Army. You don't hear too much about them saying they defeated the South African Army. The way they produced it, they talked about it now, and they're right about it. It's like when the clerk just woke up and said, I think we're going to have you all give you our independence. I know he might have been thinking ahead, because even though we have our independence in South Africa, it doesn't look that good, because the same 20% that own and control all the wealth there still owns and control all the wealth, but we haven't been speaking on that sometimes there. This is Mandela being sworn. These are photographs I've taken throughout here and other African countries. This is Mandela's inauguration in South Africa. I was there to invite it by ANC to cover the events and to be there at that glorious occasion, since we were so far too much part of the struggle in helping them while they were here. Here are some of the different categories that came from various nations to celebrate Mandela's inauguration. Next.  The person that should be talking about when they talk about the liberation of South Africa and Namibia, because of the word for intervention of Frito Castro, that he would still be having the clerk or somebody at the helm. It looked like he hears anyhow, but that was, we have just given credit for, and the people of Cuba, for assisting when Africa called and nobody answered, feel answered. And 66,000 Cubans, civilians volunteered to help fight that struggle and joined with ANC and Namibia as well as Angolan Mozambique who provided the basis in their countries and took a lot of people and a lot of damage because of that. There are a couple of things, and I know I'm a little longer than I am, so I'm going to speed it up here. And of course you see the crowd there with Mandela. Continue please. That's it. All right, thank you. Thank you, Paul. I would like to make an announcement. There should be no refreshments in this room. We're not supposed to have any food in the room, so thank you please acknowledge that. Also, if you notice, this is a kind of relaxed presentation form. Nobody has been asked to give formal papers. They've been asked to talk about their life experience, and all the people participating have been practitioners in terms of the struggle that we're talking about. And if you want the bios, the four bios are in the brochure I'll put together for the program. So please, you can just pick up the brochure and follow along too. Our next presenter, who's actually going to orient this panel and it's Felipe Luciano. Felipe is looking decidedly presidential today, so he decided to have President Felipe. How are you, beloved family? You know, when we greet and you see me looking amazed, it's that I'm amazed that so many of us made it. We were not supposed to.  Hi, Jenica, because I am amazed that we made it. We are walking miracles.  They're three women. And being known as a male advocate, sometimes male chauvinist, I thank God for their presence. The first is my mentor, my sister. I think it could have been my wife, Dr. Marta Moreno Vega. The second is a woman who labors silently, but labors intensely for the aesthetic of black Latinos. I love her. I think she's an amazing woman, Zenaida Mendes. Dominican, Dominican. Due. And the third is a person I met 40 years ago at Queen's College Seek, who amazed me with her... with her lucidity. She would point me out all the time and put me right up against the wall, verbally, of course, sometimes physically. She happened to come from home, from Spanish Harlem, and I haven't seen her in about 30 years, but she's an incredible writer, an incredible woman, and I've loved, I have always wondered where she was. I saw her today, I didn't recognize her. Alexis de Vaux, would you stand up, please? And sister. Bear with me as I go through this. Art and creativity, family, have always been about humanity, about inclusivity. And very often adults stifled with the weight of family and the specter of imprisonment or professional discredibility do not stand up to the plate. And very often the youth will hear the trumpet call and meet the challenge. And it's not that we are getting old, it's that the frame of reference for us is slightly different. It's easy to punch somebody in the face and I've done it often out of impulse, out of reaction. As you get older, you learn that there are subtleties and nuances and things that maybe are not so black and white. But the youth, thank God, have a very different attitude toward aesthetic and toward politics. They fight injustice in a different way. It was the youth of the 60s who poeted, who painted, who danced, who sculpted, who wrote, who broke through the bubble of lies America had placed over the minds and bodies of its citizens. And that art morphed into a political movement that changed the country, changed the consciousness of people of color. Guided by the black arts movement, and you saw it up here, there I am, and Amiri Baraka. And not enough can be said about what Amiri meant to us. Remember, here's a man who was born in New York, educated at Howard University that has turned out more middle-class dwarfs than you can shake a stick at, including the entire historically black colleges. Let's just be honest. We have created a black bourgeoisie, which in its own way is necessary, to revolutionize consciousness of what are we talking about? So now, out of that, he decided he's in the village and had an epiphany after Malcolm was shot. For me, it was Martin Luther King. It blew me away. Martin Luther King, when that happened, I took it to the next level. For him, it was Malcolm. And he came to Harlem, and let's be historically correct, he was not welcomed. The black art movement started in 1964.  So he began to separate the western notion of art and politics. When Robin Redford started talking about his son dancing and talking about what was the injustice in America, he was lambasted. When George Clooney talked about what was happening in the fore, he was lambasted. Folks, we must be careful that we don't allow the American panacea, the Kool-Aid, to affect the way we think. Art is the only way to do that. Art that morphs into a sort called politics. So he came to Harlem in 1964 and he forced these primordial feelings out. First of all, he began to criticize black politicians, which apparently in the days of nationalism and culture you weren't supposed to do. They threatened him. He was shot at. And that's why he left Harlem and went to Newark and started the Spirit Ensemble players. This is the history that you should know. It's not that he just voluntarily left. There were folks in our community who made that happen. We heard and appreciated western music, but Mozart and Bach and Beethoven never made you smile like miles. Never made you dance like Machito and Eddie Palmieri. Never made you jump in the spirit like Kirk Franklin or fall to your knees like Mahalia Jackson and Dr. Martin Luther King. There was a difference to our aesthetic. But it not only changed the black aesthetic, it changed white folks too. Let me tell you something. Everything that we should be very proud, everything that is happening in America, happened then. It just started then affected the women's movement, affected black kids, affected white kids. Things are beginning to change. And I contend that it's that revolutionary zeal and spirit that's beginning to affect the continent of Africa and of course the entire space of Asia. Look what happened in Hong Kong. And affected also the Muslim, the Muslim nation and Islam is going through a reformation right now. We see it as a war, but it's a reformation. Very much like the Christian reformation with the killings included. We changed the war. 55,000 American lives were killed. Out of that art came the last poets in the East Wind, the East in Brooklyn, the New York Rican Poets Cafe and Miguel Algarin, Eddie Figueroa's New Rican Village. Out of that art came Don L. Lee, Third World Press, Woody King's New Federal Theater, the National Black Theater Bar-Rant here, the New Breed clothing that popularized the dashiki, the grandassa models that show black women in their fullness and in their beauty, black arts flourished all over the country. I was blessed and privileged to have been at the core of it and I will end with this because Danny's giving me that sign. I will say this, I am blessed and honored to have been a black Puerto Rican involved in both movements, both Latino and black to the core where we put our lives on the line and I will just say this, there will come a time when those of us who are in our 50s and 60s will be asked to make a final commitment. It is not over. Young people don't have a frame of reference of victory so they don't know how to fight. I've never seen this before. A species that is attacked and it stands there and allows itself to be attacked and produces art that does not address the injustice is a species that is willing to die. And I don't mean dying fighting. I mean dying needlessly. Dying like martyrs, not warriors. People ask me why, what do we need to do? How much do you need?   This is a 12 year old St. Louis had a pellet gun and in 12 seconds they killed him.  How much more do you need? There will be a time where you, the elders will be asked to stand up and be counted and say and do more. We need educational warriors, we need cultural warriors, we need political warriors, we need physical warriors. You will be asked to do it because the kids don't know. They've never had a victory. They don't know about the pandas. I can't believe it. Standing else and just put out a film you mean the pandas were not terrorists?  It's unbelievable to me. I have every kid coming to you. My father was a young lord. I said, your father's lying to you. I know most of them. We have a girl who's a lady here who just did Millie the Young Lord's great film if you get a chance to see it. Talks about a young girl's evolution into the young lords in that mentality. Folks, you will be asked to fight. I don't know any other way to say it. I pray that we meet the challenge because, for me, if you have nothing to die for, you're not fit to live. Thank you very much. Thank you for your presence. You talked about his long history of the arts, but we want to thank him for that also. We should learn about it in his bio too. Our next presenter will be Antonio David Lyons, who actually represents a new generation of kind of multicultural, multi-nationalized, African from the Americans. Thank you. Can you guys hear me? Is that better? My name is Antonio David Lyons. It is a pleasure to present some of this work with you. This is an excerpt from a piece called We Are Here that was born in South Africa. We continue to do work with men and boys in South Africa around identity, masculinity, and gender-based violence. It's a place I've called home for the past 12 years. And this particular excerpt is called It Was Hot. It was... I mean, one of those clear blue sky days when nothing seems to separate you from the insistent fire-tipped rays on the sun except the hope that you might make it to your destination before you have to wipe another drop of sweat from your tentacles' forehead and lay the pond of the damp spot left on the side of your pants. It was hot. I mean, and people move slow. The people will make the heat of the day pass over them more quickly, but my pace is a little faster as New Yorkers are wherever they go, but a bit later, I slow my rhythm to match the pace of Johannesburg and her people well versed in heat and exhaustion and hunger. We shall recognize that our children are hungry after running around this busy city in the midst of construction mayhem. I mean, roads dug up leaving gaping wounds of red urquivillia, heightened tendons and wiring veins and buildings build this rise of speed and certainty and traffic diversions leave commuters confused and residing everywhere thrones of people going nowhere slowly and my day is almost done. I shall bus stop in the deep of residence in most non-African Jews. I've learned that the right inflection can keep me from missing my mom. In that seat where four bodies have been wed together in two little land rooms and not enough space for roms to breathe. I squeeze, I squeeze through, through, through, through. And I'm out on a sidewalk and I'm about to cross a busy intercession of queen and land women and I raise my high, weary eyes and a couple about a block ahead having a public dispute.   I mean, I can see where this thing up ahead is going. She pushes him and jumps into his face. His side steps and continues his forward motion. She spins around unwilling to be dodged. His face left determined to continue moving forward. I stop and listen and address her knees and she's so discerning to drive on mark she misses the signs. Then on a too hot thing anticipated needs intervened as the heat of the day drives eternal thermostats to explosions of slow thoughts and fast action of hands on flesh and just at that moment of no return I think they're becoming aware that they are not alone on this slow moving, baking sidewalk and stop. There's a man for something I know not what and I release my attention about body and I stroll past and he refuses to meet my sideways glance and she seems to be in the world all her own and I tell her body just focused on getting home. So generally when I use this piece in a workshop atmosphere with young men one of the questions I ask is why doesn't anybody get involved? And I'm asking the same question why do you think nobody gets involved? On that slow moving, baking sidewalk lots of people around. Just think about who's there. People going to shops, going to school, work, traveling. Why? I think they think that it's personal and not their business. Did everybody hear her? Okay, over here. The fear of violence. What do you mean the fear of violence? Many of us aren't prepared to address violence at all. I think that a lot of times when we see violence when we're in the presence of violence I'm not equipped to respond to it. So when you see violence your natural instinct is to either run from it or run towards it.  I don't think that many of us are really prepared for what is going to be the outcome of that. So instead of engaging in it it's easier to say I don't want to. Thank you. Two more, let's go back to everyone over here. I think that at times people could base themselves on their own environment. So they're basically not pleasant themselves within their own surroundings due to trauma, fear, etc. There's one left hand over here. Like you are not aware of the art of a public resolution and there is that fear of her So I'd just like to say thank you Blessings and need you with a thought. What will you do and how will you do it? Our next presenter is Dr.


Backroads is made possible by the Minnesota Arts and Cultural Heritage Fund, with money by the vote of the people November 4th, 2008. There's trust in the window, wintertime's no reason to stay I don't be home by mornin', it's a long way to Frisco Gotta get an early start Frisco, man, it's not half as far And traveling to the coast there, it's never been a carousel She said, she said, he said, they said, and now I say it fairly well Alberta, most northern lights are bound to fade There's trust in the window, wintertime's no reason to stay I don't be home by mornin', look for me, I'm Frisco way I'll Frisco way Thank you I'm Bruce Archer from Baxter, Minnesota and I play country blue style music grounded in, you know, old style, old time and roots And when did you first get into music? My friends and I, way back in high school in the 70s where, you know, it started off driving around in cars, singing along, and then this guy in gym class I'd be singing some Beatles song and say, I can play that on guitar and after a while it started kind of getting to me and I thought, I think I want to play that on guitar so I was 16 and got my first guitar and just kept learning anything I could When I went to college in Iowa State I'd go to these local bars that had regional musicians come in and I'd just watch the guitar players and it just kind of went from there, you know This one's called, Think About It I wrote it quite a while ago Whenever I play it my wife says, I need to tell you that I didn't even know her when I wrote it So it's not about her Think about it, babe Where do we go from here? If we walk away Will the trouble disappear? One minute we're happy The next we're sad One minute we're loving The next we'll get mad And that time come around and I'm sitting in the dark I guess I got a ticket to a Confusement Park I want to think about it, babe Where do we go from here? If we walk away Will the trouble disappear? We fight about the kitchen Fight about the sink Who's going to do the dishes Fight about the drinks Fight about the garbage We fight about the lawn I think I got your message But before I move on Classic train red Fight out in a front yard We take it to the street We fight on or about the car And we never miss a beat Think about it, babe Where do we go from here? If we walk away Will the trouble disappear? I'm getting good and ready To go in and get some sleep My nerves are still unsteady But this argument can keep I know I shouldn't sleep on it We should work it out But I believe it's time to shut this Roller coaster down Think about it, babe Think about it, babe Thank you The first couple of years Even though I thought I was ready To just go out there I mainly was sitting in my room Or there was one place I lived That I shared rooms with three other people And then there was this six bunk bed Room where we all slept And I found myself practicing In the phone closet a lot But after about three years of playing I got confident enough There was a place called the Catacombs On campus in Ames And I go there and play It was open stage And there was a lot of young musicians Very receptive audience And I played there Maybe about a year and a half And then I got my first ever gig At a pizza place They had a stage set up in the basement With a bar And they said they'd give me 20 bucks And I was thrilled So I went and played And some of my friends came from the dorms And went good The bartender really liked me He gave me, he said I'll give you 40 bucks And here, go talk to this guy He used to be a guy who owned a music store downtown And he had a couple bluegrass bands going And he heard I played slide guitar But what he wanted was dobro So he taught me a couple of banjo roles On the dobro And said I could come play a gig with them And I did, trial by fire And then that got me on my way to The kind of the style of bottlenecking I play Where at its heart It's based on what that guy all those years ago Showed me on the dobro With the hammering on, pulling off And the guy was a real inspiration It's a recent song based on being back Where your roots are And seeing things there And seeing the way people live Because when I left that area Some of the things I thought were really Boring and just like Why would I want to do that? Why want to be a rock star? I never wanted to actually be a rock star I wanted a niche I wanted a, you know, I want to be a recording artist I don't want to be this, that, and the other thing Then stay here But, you know, as years go by It's like, it turns out Those things are real, I mean Now I'm a dad and it's great I wish I would have started earlier And that's what that song's kind of about Having a newfound respect in the song I call her Sister Mary But having a newfound respect for Sister Mary You stayed in our hometown And I can leave all my baggage somewhere else And go back and visit And have that feeling of like Being on vacation in your own past Thanks to her staying there And then another one's Rosie the Nights And it was towards the end of my last trio Was kind of a, I'll use a phrase That was referred to us in Twin Cities reader Country Punk trio But kind of towards the end there When I was getting ready to step back To do some things, Rosie the Nights Turned out to be the hardest part And it's about when I first came to Minneapolis You have all these expectations Which maybe you should try not to But, you know, it doesn't turn out the way you want So it's the song about kind of coming to terms With like, okay, now I'm ready to take the next step And this is where I'm at And it's not the happiest place to be You know, it's hard And this person had talked about it With people that lived, you know He had lived before, all right, it's me I'm the guy in the song So, you know, and then you get there And then after like 16 years of trying it Something, you start wondering Wow, would those people even know me For who I am now after going through all this stuff Here's another city song You can tell by some of these songs I'm playing at the first part here That there are things I didn't like About living in the city Well, I see the glitter But I can't find the gold Downtown like winter Turning cold And all the city slickers are talking bold I'm burying a picture of somewhere I call home Rosie the Knight Turned out to be the hardest part Rosie the Knight How'd you get to be so hard? Rosie the Knight About a hundred times I drove away from this town The sirens of the night Turned my head around To that silver horizon Star come to ground Fill your head with promises You stand on sacred ground Rosie Turned out to be the hardest part Rosie the Knight How'd you get to be so hard? Rosie the Knight We both said we know Glad what paved the streets And I'm here to tell you, Rose It's only concrete Rosie, put your arm in mine See if you can see Anything left that reminds you of me Turned out to be the hardest part How'd you get to be so hard? Rosie the Knight Rose Thank you. The hallowed land. I built on the plain Of the Buffalo Creek As she went in the clear He come with roses And gave her green The corp, the carp, and his daughters He asked for her hand And gave her a pledge Said he'd be honest And he'd be true They married in the church Above the air Off to the end of the seasons run The name there's the hallowed land Seven kids come In ten springs time Each one baptized In clear water Singing songs of summer And shiny Christmas tides And learning things from the Father And the seasons run In the name of sweat and blood They claim there's hallowed land I stayed on the plain Of the Buffalo Creek As she come away He come with roses And gave her green His daughter And the seasons seen The chiller passing hands It was the rose And the evergreen Thank you. So let's talk a little bit about What it's like to be a musician In northern Minnesota. How would you describe Kind of the experience of performing Up here and stuff like that? I stepped away from music in Minneapolis In 93, 94 Thinking I'd be out a couple years And kind of reorient myself And then, you know, a series of What's that saying about life comes at you While you're making plans or something And then we started having a family And I've been a stay-at-home dad since 02 And so once the kids got a little older Then I could start playing again So my experience Actually playing up here Started last April And part of what kind of inspired me To start getting gear And check my guitars were old I got a couple new guitars I started getting things ready Because breweries were popping up And it seemed like the type of intimate Environment where, you know, you could It's similar like maybe the coffee Houses at a certain point in the 80s And what I've read that they were like In the 60s. I thought, well there's Potential there and if you can get in quickly Maybe that'd be a place to play And, you know, that's Been my experiences mainly playing Breweries and generally they seem To be fairly open to Original music and stylistic Rendering of cover tunes and things And still Trying to record on my Interface unit to At least have something I can sell At a gig. Maybe so people Hear the song, not to make money as much As if you hear my songs And I think, but my theory is That I'm kind of betting this on Is that if you're more familiar with my songs Then I play those the best Anyway, so then maybe Then, you know, enough people Will come that I'll keep getting hired Because that, you know, that's a Bottom line and you need to draw people Things like this are great Where you have a listening space And people listen, but if you keep plugging Away and getting your music that you like And your style in front of people Then hopefully people will like it And come out and see you Me and my buddy Me and my buddy Playing that same old game Playing that same old game Waiting on payday Just one more before the fair Right on there, say, city there Me and my buddy eaves Me and my buddy eaves Playing that same old game Playing that same old game Time stands still here in the Willville And then it flies Thanks a lot Backroads is made possible by The Minnesota Arts and Cultural Heritage Fund With money by the vote of the people November 4th, 2008 If you enjoy watching Backroads Online Please consider making a tax-deductible Donation at lptv.org