 We can just start about in time with Ankush for the storage management in OpenShift. Thank you. Thank you everyone. So the topic that we are going to talk about today is the management of storage in OpenShift. As we all know that management has been always a trivial task for the storage admins and the developers, whether it's deploying a cluster, whether it's doing a monitoring of a storage cluster or whether you are doing any of the day to operations, you have to go to the CLI. As we have all seen that there has been a number of presenters that have came and played with the CLI and then all the stuff. I'm not going to do that. I'm a developer working in storage department in Red Hat as a senior software engineer. I have been working on a storage product from last over four years, basically designing the storage and also implementing that storage and how user can easily interact with the storage systems. Initially, all started with a cluster where we designed a console for a cluster, then we transitioned to SAVE and designing a console for SAVE and now the world has transitioned to containers. So here I am designing a UI for the container storage in OpenShift. I also love playing table tennis, snooker in my free time and also like exploring places, food and cultures. So that's about me. I just want to ask a question. How many of you have faced the problem of setting up a storage cluster or doing a day to operations or doing the managing in the storage cluster? Please raise your hand. We have been trying to address this problem and I have some solutions that I have implemented in the OpenShift and I'll be trying to demo it today. I have a few slides that I can take you to and show how we have done that. The first part of it is how easily we can deploy a container storage on OpenShift. So these are the few steps that I have done in the OpenShift cluster. So there is an operator in OpenShift named as OpenShift container storage. So in that operator what you need to do is you have the nodes. You need to select the storage node that you want to deploy on. You have the storage class. Why the storage class is required? So let's suppose you are on a cloud environment like VMware or AWS. You will need the storage from those cloud environments because you don't have the bare metal cluster with you. So OpenShift is designed for that. So that's where you need the storage class to be there. And the last one is the capacity that you want from the cluster storage. So let's suppose you have the three nodes and you want... I have taken an example of 2TIB. I want to deploy on this one using this GP2 because my cluster was AWS and AWS by default provides the GP2 storage class. So that's where these three things are important. And then you can directly go ahead and click on create and it will start bringing up all the... So back end of the OCS is backed by CIF. So it will start bringing up all the CIF storage cluster and provide you the storage that you decide for. So that's mainly about the installation. And moving on to the next part. Yes, my cluster is deployed. Now what we should do? Rather we want to monitor our cluster now. And we have certain capacity like... We have 2TIB of capacity and our capacity is full now. What you should do? How you should monitor that? Either you need to... On the CLI you need to run a few commands, do a DAF or those kind of a command on a system. But what I have done is I've created a dashboard on a storage where you can actually see how much of a capacity you have been utilizing, how is the IOP performing, how are your storage being used and a few of the things that are related to the Kubernetes. This particularly is a Prometheus architecture. We use Prometheus for storing our time series database so that we can take that data back and we can display it on a dashboard. So if you see, this is a Prometheus server. What it does is it pulls the data from the different services like FluentDB, a few from the Kubernetes and all that. And it tries to show, display the information on the Grafana. If you know Grafana, Grafana is a chart graphing tool where you can see all your data very cool and very effective manner. So that's where it is trying to display. On the other side, if you see there is an alert manager. In the alert manager side, what it does is whatever metrics that are there in the Prometheus, you push the, sorry, you put alerts on based upon that. So let's suppose if your cluster, if you have a safe cluster and your safe cluster is degraded, I'll put alert condition saying that if my safe cluster is degraded, please send out a mail to an admin or a user or you send out to a Slack or to different webhooks that you can configure to Prometheus. So that's pretty much about Prometheus. I'm not going to go into a deep into that because it's not of a story-related, not much of a story-related stuff, but I have simplified that explanation on how we do that. So we have dashboards. We pull the data from Prometheus if you see over here. And what Prometheus does is Prometheus pulls the data from the safe manager pod that is there in the, when you deploy the OCS cluster, this pod also gets deployed. This pod has all the exporters that are related to the safe. So it pulls the information from the safe manager and stores it into a time series database so that we can then pull the information in the dashboard and show it in a very effective manner. And this is the kind of dashboard that we have created where you can see all the information related to the time series and how much of a story has been used, what is the inventory of your cluster, how many nodes, how many PVCs, PVEs, and what are the events that are running in your Kubernetes cluster that are related to the storage. So I'll be showing this in a demo and how we are doing it. There are, if there are some alerts, you can see those alerts over here, but I'll be showing that in the demo. Right now there are no alerts for this screenshot. And moving on to the next. In the day-to-operations, we have implemented the expand of a cluster. So now you have monitored your cluster and your storage is almost full, how you can expand your cluster. So in a similar manner, how you install your cluster, you need to give the storage class that is backed by your infrastructure storage class. In this, my infrastructure was AWS, so I choose GP2, that is default provision by the OpenShift, and you can see how much capacity you want to enter. So you said four TIB of the raw capacity you want, and it will be having the three-way application, so it will, total provision capacity will be 12 TIB, and then you can go ahead and click on that, add, and it will take around one minute to add this capacity to the cluster, add this capacity to the cluster, and it will be, the cluster will be expanded. And that's pretty much it. I'll be taking you to the demo. I think that's most crucial. Maybe we can jump. Is everybody able to see it? Is it good? Perfect. So the cluster, the storage I talked about, the operator that I talked about, so my talk is basically about the operators plus the UI combination working together so that it can give you the seamless experience. So the screen that first I showed you was installation of a storage cluster, that is you can click on this great instance in the OpenShift, and you can see those nodes over here. I have already created a cluster so that I can actually show you the monitoring over here, but you can click on these nodes and you can select the storage class that you want to take the data from and also the capacity that you want to provision. Right now we have provided some default options that you can choose from, but you can also enter your capacity and then you can click on create. The one caveat over here is I have taken down one of the nodes so that I can show you the alerts if the node is down, how the alerts will be popped up in that situation. So I have taken down one of the nodes and that's why it's not allowing me to create the cluster right now because by default the replication is three and you need three nodes to be there. But that's how you do it. If you have three nodes you can select all from here and you can select the particular one and click on create after selecting these options. Once your storage is created, it will create few of the pods. You can go to the workload and see all the pods that have been spawned up over here. So these are all the pods, but I'll directly jump into the overview and the persistent storage dashboard that is mainly for the Chef cluster that I've created. This is the screenshot that you saw. I think I can close this one. Yes, this is better. This is the screenshot that I showed you up. So you can see that all the details for the cluster are here. You can see the inventory over here. You can click on the node that you have selected for the storage that is present over here. On the right you can see the status of the cluster that is degraded right now because I have bought down one of the nodes and it is showing me that the cluster is in a warning state from last 10 minutes because this device is down because I have taken down that node and your data is also not resilient. So if you can see on the right, data is right tower rebuilding and because there is not much of the data that I have pushed to the cluster, that's why it is not getting progress, but once I take it down to the original situation, it will be good. On the right we have the activity card where you can see all the activities that are happening in your cluster related to the storage, whether the container is started, how your replica sets are, how your deployments are and all that. Below that we have the capacity breakdown card where you can see how much of a storage is being used by each of your namespaces or the projects you can call it. You can also filter it by the storage classes. So you have one storage class that is being used and that is used in this much of a capacity and also by the pods, how much each of the pod is taking in the cluster. Going down, as I told you that you can monitor all the IOPS, latency, throughput and the recovery of the cluster. So all the charts are here. You can also click on these and you can see how by each project or by each storage class it is behaving and that's pretty much on the dashboard part. There is one more thing that, on the right side there is a dropdown that shows if you want to do CC utilization for 1 hour, 6 hour or 24 hour, I will click on this 6 hour one. You can see that there has been transitioning. I have actually created a cluster then I bought down few nodes. There was some IOPS that came on to this cluster and then that's how it was. So that's about it on the storage dashboard part. Another thing I want to show is how you can expand it like how I showed you up. So what you can do is you can go to the storage cluster that you have created. On the right you have a kebab menu. You can go over there and click on the add capacity. Add capacity will ask you the storage class and the raw capacity you want to provision. And you can click on this add and it will start adding the, it will go in the progressing state and it will start adding the PVCs for you. So you can actually come to the left menu storage. Storage has all PV, PVCs and storage classes. You can go to the PVCs and you can see that there are PVCs that are already bound and there will be few new PVCs that will be created. I think that's okay. You can see it. There are new device set that has been created and these are right now in the pending state. Once these are bound, you can see that the reflected state in the overview dashboard and this capacity will be increased. It will take around two to three minutes to reflect that capacity in this charts but that's how you expand your cluster. So that's pretty much I think about it on the management part of the OpenShift and how you can do it. Is there any questions we have? Yeah, yeah, background itself. On the background it is self, yes. Yeah. Okay. So the question is can any other story provider can also use this UI to deploy the story cluster? Right now not because you need to have a desired schema that is requested by the operator or the UI that I've written right now and if you do that and if you enable few of the things that will be possible in the later future. Yes. Exactly, exactly. So you need to define a YAML in a certain format so that it can pick it up and you can do that. Yeah. Yes, internally it is using Rook. Okay. The question is if I'm using the Rook inside can I use the different data sources that Rook has already has and right now, yes, we can do that but this is the first time functionality that has come into. So we have implemented in SIF. Yes, we can leverage it to the other story operators. Yes, we need to talk to few of the folks how the schemas need to be designed and how we can push it. Yes. That's about it. Yeah. Is there any other questions we have? So the question here is the second question was if there is a disaster recovery and the first question is is there abstraction layer on top of the open shift there, you can do that. Yes, this is abstraction layer on top of it and where you can manage your cluster easily and for deploying operator, you need to write few YAMLs and you need to apply those YAMLs to the cluster but this provides pretty much a very much abstraction on top of it and you can select those things but what it does internally is it adds those values to the YAML which you eventually will do and do that but it doesn't have any right now this disaster recovery kind of a thing. What we have right now is I'm not sure how to hide it up. There's a recovery thing that is here so if your cluster has gone down and it shows that and if you have bought down few of the new nodes and the port has been started transitioning it shows the graph saying that your data is being transitioned to another node and this is the rate with which it is being transferred so that's all we have right now. The upcoming things that we are applying to implement is kind of a snapshotting and cloning of your PV and the PVCs that is coming down in Kubernetes 1.17, it is getting alpha so that's what we are trying to implement by now. Thank you. Any other questions we have? Inside the Kubernetes cluster or inside the open trade not to attach any pre-existing set cluster to the open trade. Can you repeat it? So you can only deploy a cluster inside the open trade? Yes. Because this is a management layer on top of the Kubernetes so we needed a UI where we can add up a few things. So the question was is it just for the OpenShift or can it be provided on the Kubernetes? Kubernetes we cannot provide it right now because we have the OpenShift as a management layer on top of Kubernetes and where we had the UI available and we can add new things where it will be easy for the user to do most of the stuff that he is talking about or planning about. So basically the question here is can we attach an external cluster to this one? Yes, so this is something that is planned and we are already working on it you can deploy your external cluster and use that as a storage provider to this OpenShift to your pods or the deployments you can say. Yes, there are plans for it. Any other questions? Or are we done? I think that's about it. Thank you everyone. Thank you so much.