Demystifying Azure Arc-enabled data services | Azure Friday

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
>> Hey friends, did you know with Azure Arc enabled data services that you can bring SQL Managed instance and Postgres Hyperscale to any Kubernetes infrastructure no matter where that may be. Lior Kamrat is going to tell me how today on Azure Friday. [MUSIC] >> Hey friends, I'm Scott Hanselman and it's Azure Friday. I'm here with Lior Kamrat and we're going to talk about Azure Arc enabled data services today. How are you? >> I'm goods, Scott, it's good to be back. >> It is, it's nice to see you. I always like to see what's on your shelf and I always feel like my office is cool and then I see your office and now I need to take it to the next level and that's exactly what we're going to do today with Azure. >> This is how we roll Scott, this is how we roll. >> Absolutely. Maybe tell us about what we talked about last time on Azure Friday so folks can take a look at that episode as well. >> Yeah, so last time when we are on Azure Friday, we talked about Azure Arc-Enabled Kubernetes. We did a nice demo around Cloud and Edge, how you can we do Fleet Management for Kubernetes, GitHub across Cloud and Edge, on-premises with some Raspberry Pi's on these modes going on, and today we're going to talk about Azure Arc-Enabled data services. >> That's going to make data available to everyone everywhere no matter where they are and how they use their data? >> Yes, exactly. Let me share my screen and we can talk about the architecture and like always, how we like to roll. We're going to do a cool demo and show how we can control data services across Kubernetes. >> Sounds like a plan. >> What I'm showing you right now is the architecture for Azure Arc-Enabled data services. To take us back, when it comes to Azure Arc-Enabled data services, what we're doing is we're making our own data services, Azure SQL Managed Instance, and PostgreSQL Hyperscale, approachable outside of Azure. If you remember in our previous conversation on Azure Friday, we talked about this notion of projecting resources. While protecting resources is taking resources that are deployed, or workloads that are deployed outside of Azure and bring those into our control plane, this is really going by on the opposite side, which means that we are able to deploy SQL Managed Instance and Postgres on Kubernetes clusters that are not actually located physically on Azure. Today we're going to talk about that. >> Is that a fair statement to say that what Azure Arc provides this location transparency to these services? >> Yeah, you can say that. Location transparency or a way for you to bring our services to any infrastructure really. Just being generalized about that. That's really what it brings. >> Interesting because people, when they're doing this work, they have to think about the Software-Defined Networking and all of the different structures about, in this case, looking at your example, there's these boxes and sometimes those boxes represent subnets. Sometimes they represent logical units. Sometimes they represent specific nodes or pods that are running within Kubernetes. It depends on what the boxes and lines are representing. >> Yeah, so here, really, what's were targeting, our deployment unit, is really Kubernetes or our infrastructure unit is Kubernetes. What we're doing here is we're basically using our data controller with this as a component. This is the brain of the octopus. The data controller talks and responsible for deploying the actual services but also reporting back to Azure because at the end you want to get that telemetry, that billing, and all the integration. As you can see on the left, that also enable the native tooling prospect, meaning that the data administrator or a Kubernetes administrator doesn't need to change the way he goes by and managing infrastructure and these type of stuff. That's really where it sits in that portfolio, bringing those services in a native way to outside of Azure. >> Location transparency is a simplistic way of looking at it. This is really a formal unified control plane on an API that is already understood and with tooling that it's already understood. Whether someone's using the portal, the Azure CLI, or a Kube cuttle they have one control plane and Azure Arc makes it transparent underneath that. >> Exactly, it's really about how we go by and integrating with Azure Resource Manager, correct. >> Very cool. Everything is an Azure resource. Bring whatever makes you happy. >> Exactly. >> Now I understand. >> Yeah. Should we do the demo? >> Let's do the demo. >> Let's do the demo. What we're going to do today, we're going to take a GKE cluster and we're going to show the process of deploying SQL Managed Instance on that GKE cluster. In previous Azure Friday, we had GKE cluster, we had Raspberry Pi, and this is continuing this messaging around you can use whatever Kubernetes cluster that you may have but you're going to deploy a native Azure service like Azure SQL Managed Instance. What I'm showing you right now is a resource group. That resource group already have an Azure Arc-Enabled Kubernetes cluster onboard it. That Kubernetes cluster is actually a GKE cluster. To show you that this is really a GKE Cluster, and we'll talk about the other resources that we're seeing here, this is the Azure Arc-Enabled Kubernetes cluster. I'll click that to see some meta data coming in and also to show our viewers that this is actually a GKE cluster. We also have that open in Google Cloud Platform to connect in the dots here for our viewers. I'll come back to the GKE cluster. Let's talk about the other resources that we have here. We have custom location, we have the data controller, and we also have a log analytics workspace. The custom location responsible for mapping a location, which is the Kubernetes cluster, and the namespace inside that Kubernetes cluster to where the data service is actually going to get deployed that's the SQL Managed Instance. We'll see that in a second here and the data controller that is already created. The data controller, like we said, that's the component, the service that's responsible for connecting that service into Azure. That's the brain of the octopus. What we're going to do now is we're going to go to Azure Arc Center and we're going to start the process of deploying a SQL Managed Instance. This can take a while but we're going to show how the pods gets created and then we're going to flip to an already good to go environment so we can see how we can abuse some of those services and actually show the value here. What we're seeing here is Azure Arc Center. This is the place when you can go by and deploy all your Azure Arc services manage those, so forth. This is your starting point when it comes to Azure Arc. What I'm going to do, I'm going to go here to SQL Managed Instances. As you can see, we have a breadth of services that we're bringing into Azure Arc, starting with Azure Arc-Enabled servers, Kubernetes that we talked about, data services. We also have App Services in preview and machine learning in preview. Very exciting stuff going on in this space. I'll go to SQL Managed Instance and what we will do is we're going to start the process of creating that instance. I already have an instance created which we are going to abuse later on in this demo. But first, what we're going to do is we're going to start the creation process. The deployment of SQL Managed Instance required few parameters so let's go over those parameters. The first thing that I'm going to do, I'm going to select the resource group. I'm just going to call it SQL MI Friday just for fun. Here's the custom location that we're referring to. That's the first mapping that needs to be done. That custom location represent a namespace inside that Kubernetes cluster. We have the service type. When you are deploying a Data Service, you need to choose what type of network stack it will get deployed on. The way that this is done is we are mapping the type of the Kubernetes cluster that you have. We call that profiles. In this case, we're using Google Kubernetes Engine and that maps the storage classes, the networking, and all that. All you need to do is to choose if you want to deploy with the load balancer, which will give you an external IP to that data service, in our case, SQL Managed Instance or you want to use a node port, which means that that instance will get a private IP. The only way to get to that instance will be from via a jump box or something inside the VNet. For the sake of this demo, I'm going to go with the load balancer. You can see here that compute and storage. This is where we are going to control the type of resources that we can allocate to that service. Today with SQL Managed Instance, we have two tiers. One tier that is already in GA, General Purpose, and the second tier that's going to go GA pretty soon, business-critical. The difference between the two is that general-purpose is, basically, a single replica that's going to get deployed on the cluster and the business-critical is going to give you three replicas or two to three replicas. Depends on what you want to do. That's really around high availability. You can see here, if I'll click the business-critical, you will see those three replicas you can choose from. The rest is just compute allocation and storage allocations. Like I said, we're mapping that into the storage class of Kubernetes so your Data Service will actually get deployed. We'll continue the deployment process and all you need to do is just username and password for your SQL Managed Instance. At that point, you're good to go. Now, I'm going hit the "Next" here. We'll kick it off, that deployment, we'll do a bit of validation. The first thing that I want to show you, we're going to kick off that deployment. At this point, I'm switching to my jump box machine inside GCP. That machine is the machine that I use to deploy this GK environment. To show you what is happening in the backend, I'll go and do a kubectl get pods and I'll use the arc namespace. That's the namespace that I deployed the data services or I am deploying to the data services that you are seeing right now. Those data services are actually located here. You can see already here that the SQL MI Friday is in container creating state. Let's add the watch command so we can see that in action. What we did here is that the arc controller, the data controller that we already deployed before that demo is now sending the execution command to Kubernetes basically it's a wrapper around kubectl commands, and what it does is send that command and deploy the data service. You can see the SQL Managed Instance gets deployed, so this is going to take few minutes. >> Can I ask an ignorant question here? >> Yeah. >> Hopefully the audience is thinking the same thing because I just want to make sure I understand. These right here are the pods from the point of view of the kubectl which is talking to the GCP, they're the Kubernetes controller and Kubernetes controller has a number of pods. But is that a Azure SQL Instance running inside Google, no, it's a proxy to one running inside Azure? >> Well, actually it's physically a SQL Managed Instance that is running as pod on top of that Google Kubernetes Engine, Kubernetes cluster. That's really what it is. It's literally taking the service and bring that outside of Azure and gets deployed on a Kubernetes cluster that is physically located outside of Azure. >> It's an Azure Managed SQL Instance. >> Exactly. >> The compute of it is operating in this Google context. >> Everything, yes, the compute and storage everything gets deployed on that Google Kubernetes Engine Cluster, yes. >> It's not proxied from Google to us. It's not like a virtual node, and some of the things that had been done in the past with Kubernetes where we were you're fooling Kubernetes into thinking that it's happening there. But you're really proxying data somewhere else. It's running fully within this context? >> That is correct, yes. As you can see, the puzzle starting to get created. To answer your question, you can see that we have physical pods and containers inside those pods that are located on that Kubernetes Cluster. >> Real nodes, not virtual nodes. >> Nothing is virtual here. These are SQL Managed Instance pods that gets deployed and also what it can show you is the volumes and the storage class. >> What container registry is pulling what image from? >> Yeah, good question. This is coming from MCR, Microsoft Container Registry, so everything is secured, gets governance, so you're getting those containers from MCR. We also have a disconnected mode that you can actually download those containers to your registry on-premises or wherever that may be and use those images. >> That really just crystallizes the power of arc right there. >> Yeah. You're right. For people that didn't have a chance to actually hit that "Deploy" button. The moment that you do that, everything starts to click because you start seeing those pods, you start seeing those volumes. As you can see here, you actually see volumes that gets created for that SQL. You can see here the backup volume. You can see here the data volume and the logs. These are real storage. This gets spin up on GCP that are allocated for that SQL Managed Instance. >> Now, I get it. >> Yeah. >> This is really just a toolkit of awesomeness. Now that you know that you can do this, it opens up a whole world of opportunities. >> Right. Let me show you something here. I want to show you how things looks like after everything gets deployed and we have all the automation and we have a project. We talked about it in our previous Azure Friday, we talked about the Jumpstart project. We'll show how that fits into the picture. Before I'm going to do that, I'll switch back to Azure, just to show you the resource that got created. You can see here that this resource is still being created and it's a real resource. You see this is an Azure resource that got deployed. No smoke and mirrors here. This is really a SQL Managed Instance that is now deployed on a Google Kubernetes Engine Cluster. >> Wow. >> To maybe take it to the next level, I wanted to show you an environment that is fully deployed, and I wanted to show you how the operation aspects look on this type of environment. To do that, I'm using project, Azure Arc. We created this awesome project. It's called the Azure Arc Jumpstart Project. As part of that project, we create a tons of scenarios. We have automations and a lot of cool things for our own employees, to get trained on customers, partners. It's a community open source project. As part of that project, we also created a product. This product called ArcBox. ArcBox is really our way to provide you with a full-blown Azure Arc environment, or whether you want to do Azure Arc-Enabled servers, Kubernetes or data services, this gives you everything you need. So everything gets deployed for you automatically, and we're also providing some sprinkles on top of that, which is the operational aspect that we're going to show. At the end of this demo, I'll show where it is in the Jumpstart Project. What I have here is a Jumpstart ArcBox client machine. It's similar to the GK machine. A nice bonus is that when you are deploying ArcBox, you also getting Server 2022 that just went out. Again, just a bonus, you can start playing around with Server 2022 right off the box. When you're deploying Azure Arc-Enabled data services, you're also getting some additional components with that. Let's see what are these components. I'll open another partial session inside that machine. For this one, I'm going to query the pods and the services that are deployed on this cluster. Now, what is this cluster? Before that we did Google Kubernetes Engine. But actually this one is a API Cluster or Kubernetes is based on Cluster API. Now, people that are not familiar with the Cluster API project, what this project is all about is really deploying an unmanaged Kubernetes cluster in a managed environment. It's funky that way because people that used to work with Azure are used to AKS. AWS have their own flavor with EKS, GK with Google, Tensor with VMware, but all of these deployments are a managed deployments or managed services. Cluster API gives you the opportunity to deploy a Kubernetes cluster in an unmanaged fashion. The reason that you want to do that is because sometimes you want to have more granular control on the nerve knobs, on the deployment, how things looks like, and the way cluster API does that is using something called providers. We have an Azure provider, you have an AWS provider, a vSphere provider. What it does, it basically take the notion of the infrastructure and adapt the deployment of Kubernetes to that infrastructure. Every time that you are deploying these cluster API, it deploys a set of virtual machines. To show you that, and then we'll come back to these pods and all that. Again, to connect the dots for the audience here, I'll switch back to my portal here, and I'll go to another resource group. This is our box Friday resource group, and as you can see, we have tons of resources here. We have 79 resources, gets deployed as part of our box. But what is interesting is the fact that you don't see an AKS cluster here. Again, this is a cluster API that got onboarded as an Azure Arc-Enabled Kubernetes cluster, which is the fundamental building block for you to go on with data services. What we're doing is we are onboarding that cluster API, and then we're deploying automatically those data services on top of that, which is what we are showing right here in this machine. All the services that you are seeing right here are basically deployed on this cluster API. You can see that we already deployed that SQL managed instance. Like we did before, we have the data controller. We also have password SQL. That's another data service that you can deploy as part of this Azure Arc-Enabled Data Services umbrella. PostgreSQL Hyperscale is also included and we're deploying that for you. What I also want to show you is these type of pods, and what are they all about? We talked about the operational aspects. What you want to do with Azure Arc-Enabled Data Services, we want to get you closer to this unified operation state, were you already get all the tools that you're familiar with the Kubernetes ecosystem for you to feel comfortable when you are monitoring or extending your monitoring and operational capabilities. The metrics UI pod that you see here and all the other ones, and the logs are actually a Grafana and it keep on a deployments that you are getting outside of the box with Azure Arc-Enabled Data Services. You can see that we already have services, load balancer services on that Kubernetes cluster that got deployed automatically. These are the ones that we're going to approach right now and show how we are actually monitoring and abusing that SQL manage instance. To do that, first of all, I want to show you Data Studio. As part of our box deployment, you're also getting Data Studio deployed. Not just that, you're also getting the SQL Managed Instance and the PostgreSQL that is deployed automatically already configured in Data Studio. The way that we're doing this is because Data Studio at the end of the day is a JSON based descriptor, it has a JSON based descriptor which you can control, you can manipulate. What we did as part of the automation, we already connected those instances and we already deployed the Adventure Works database. Right off the box, no pun intended, you will have something to play around with. You already have that Adventure Works databases deployed. Again, these are SQL Managed Instance in PostgreSQL that are deployed physically on that cluster API. What we're going to do is I'll show you the Grafana, and then we're going to run a query that will simulate a stress test on that, and we're going to see how that looks like and connect everything. Here's the Grafana dashboard. This is what you're getting out of the box. If you're in the Kubernetes space, Grafana, a market leader when it comes to monitoring an operational aspect of Kubernetes environments, so we're no stranger to that. We also have Kibana. With the Kibana thing, what you can do is you can do log analytics and you can do log management. Just as an example, if I'll do here the discover, you can see that I'm getting logs already out of this environment. What I want to show you is the out-of-the-box dashboards that we're getting. I'll go here to Manage, and you can see that we already have bunch of templates here. We have the Host Node Metrics, pods, basically, the Kubernetes dedicated dashboards for this cluster. We also have Postgres and we also SQL Managed Instance Metrics. I'll go to the "SQL Managed Instance Metrics". These are real metrics like live metrics that are coming from the deployment that we did. This is basically a relaxed environment. We're not creating any stress here. Everything is okay. You can see everything is stable. We're running that "Refresh" every five seconds. What I want to do is I want to show you how I'm performing a bit of a stress on this cluster and how does that translate to Grafana. I have here a tool, SQL Query Stress, and what I did, I just took a query and paste it here, so I will use that to generate the loop. What we're doing, we're basically running that query. As you can see, 100,000 iterations and using four threads. Again, just creating some stress on the system. What I will do, I will just hit the "Go" button, and you can see that this is starting to run. Now, what's happening in the background is that we are basically nuking the SQL instance and creating that dense stress because that's the way we're going to show how things looks like in Grafana. We'll come back to Grafana here, and as you can see, the trend is starting to go up. This is just a batch request, and you will see that across the board with other dashboards that the trend is actually going up, so we are starting to increase the stress on the system. The reason that I wanted to show you this is because this is a fully comprehensive deployment that you are getting. It's not just about the data services, the pure data services that we're deploying, it's also about giving you that experience, that you can go ahead, use that and start monitoring and doing some operations on your environment right at day 1. That's what I have to show you today, Scott. This is pretty cool stuff and we have more to come. >> It is deeply powerful. There's a lot to absorb here, just in the Kubernetes space, but the idea that I'm seeing is that y'all have created a toolkit for us to do whatever we want, wherever we want, with whatever Cloud we want. But you're enabling us to use the APIs, the CLIs, and the tools that were used to using and I think that's really powerful. >> Yes, exactly. For the viewers that wants to start getting their hands dirty with this, I wanted to give you the reference to the jumpstart projects. I'll go back to my Edge browser, and this is the jumpstart project. The nice thing about that, Scott, is that in our previous Azure Friday, this was just a Git repository. Today we have a full-blown project with a lot of scenarios. If you want to go ahead and try our box, which is what I used as part of my automation for preparing for this demo, you have all the instructions on the architecture and how things are built, how to use it, and really how to start taking advantage of Azure Arc and learning the platform. >> Very cool. Folks can check that out at AzureArcjumpstart.IO. I am learning all about Azure Arc-Enabled Data Services today on Azure Friday. >> Hey, thanks for watching this episode of Azure Friday. Now I need you to like it, comment on it, tell your friends, retweet it, watch more Azure Friday. [MUSIC]
Info
Channel: Microsoft Azure
Views: 3,923
Rating: undefined out of 5
Keywords: Azure Friday, Scott Hanselman, Lior Kamrat, Azure Arc, data services, SQL managed instance, ArcBox, hybrid infrastructure, GKE, Kubernetes, K8s, container, PostgreSQL Hyperscale, on-premises, edge, hybrid work environment, elastic scale, unified management, disconnected, provisioning, cluster, kubectl, jumpstart, Grafana, monitoring, metrics, CLI, Azure Arc-enabled Kubernetes, Google Kubernetes Engine, NodePort, LoadBalancer, projecting resources, control plane, controller, location transparency
Id: 7Z6WZgaupIk
Channel Id: undefined
Length: 25min 9sec (1509 seconds)
Published: Fri Oct 01 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.