Hey friends, you know, Azure Arc simplifies governance and
management by delivering a consistent multi-cloud and
on-premises management platform. Lior is here to show me how it
enables you to do cool things like apply GitOps configurations
on Arc enabled Kubernetes clusters wherever they may be
from Azure. I'm going to learn how, today on Azure Friday.
Hey friends, I'm Scott hanselman. It's Azure Friday.
I'm here to learn all about Azure Arc and specifically how
you can manage your Kubernetes with GitOps. I'm here with Lior.
How are you?
I'm good, I'm good. Happy Friday the 13th to you.
Indeed, this is going to be lucky. It's going to make all
of our demos work brilliantly. That's when things go really
well, on Friday the 13th.
Right, so tell me about Azure Arc. Why are people so excited
about it? Well, if you think about it, what's what was really
missing? I think in the hybrid story is the fact that there was
no real story around stretching a control plane, right? And if
we have Azure Resource Manager which is our control plane, or
you know if you made the operating system of Azure what
we're doing with, that is we're stretching at outside the
boundaries of Azure and with Azure Arc we are able
specifically with our cable Kubernetes, we're able to
stretch the control plane and actually get access to
Kubernetes clusters that out.
That are diploid outside of Azure, and by doing so we are
able to do some cool things, which is what we're going to
show today. Part of it is good apps, you know, policy
monitoring, so really it's about reaching outside of Azure and
projecting resources as first class citizens inside Azure.
That's really interesting. That term projecting resources right?
'cause I've had folks on to talk about the Azure Stack Edge,
which is a physical machine, but when you go into the Azure
portal it shows up there, so it is Azure. So these resources
that you're going to be showing
us. Don't live in Azure, they're not running on Azure hardware,
but they're in Azure because they're projected into that
space. Right, and it's really about reaching out to platforms
that until now we didn't have any access to that, because if
you think about Azure stack, it's you know it's an Azure
product. It's controlled by us. All the APIs is something that
we are governing, but now the challenge is how do you actually
approach these different APIs on different platforms, different
infrastructure and actually being able to do something about
that? So that's really what's cool about that. Very cool. And
you brought me a demo, of course. Yeah, yeah, so today.
What we're going to show is how we are using Git OPS, which is a
very great approach to governing your applications and cluster
configuration. I'll talk about that and how do you use that
against clusters? Kubernetes clusters that are diploid
outside of Azure, so if you think about it right, you have
multiple clusters spread across the board, right? They can. They
can be in different countries, different continent, right? But
you want to have one place that you can manage those, but it's
not really about managing just the cluster. It's also about the
applications, right? Because
this is. You know, again today what's driving the business, So
what we're going to, we're going to show three clusters that are
diploid outside of Azure, and then we're going to do a real
time update on an application and web application, and that is
deployed on all three clusters, and we're going to see that real
time. So to start the demo you can see here in my Azure portal
I have triarc enabled clusters, right? So these are represented
as Kubernetes Azure Arc, and those clusters are compared from
AG cluster. Raspberry Pi Cluster an if VMware cluster diploid
with rancher catria. So you can see already the spaghetti of
platforms in infrastructure that we're going to touch, right? So
the first cluster is the Arg key one and to show you that this is
really a demo about resources that are outside of Adderall,
zoom in it a bit right? You can see that this is an Arg key demo
it's deployed on on story on
Google platform. And this one is the Raspberry Pi cluster diploid
with ranch OK Treos and I know that you are a big geek like me
when it comes to hardware so I have this right here and this is
actually the cluster. It's disconnected one but I have
another one diploid in my garage, which is what we're
going to demo again. So if you can see that this is kind of the
prototype for that, so I hope you can see that that's great.
That's a beautiful case. So that is a little piece of Azure right
there. You've actually taken 6 Raspberry Pis, installed
Kubernetes on them, put them in a case and now you have a tiny
cloud. Yeah, yeah, exactly exactly. And this is what we're
going to be using a second here. So to show you that this is
actually a Raspberry Pi cluster because we are, you know, when
we're talking about Azure, are one of the biggest use cases.
The edge, right and low power devices. So to show you that
this is actually a cluster that that is deployed on Raspberry
Pi, I'm going to open here my terminal here and just do a
quick you cuddle, get nodes and you can see that this is a six
node cluster, right? Sorry 7 old cluster including the control
plane. An to take it one step further, I'm going to SSH to it.
An I'm going to run this uname command.
Show that this is actually an ARM CPU cluster, right? So that
is a Raspberry Pi cluster, so will minimize that and the third
cluster is Kate Rias again, Rancher cluster that is deployed
on top of Ymir. So again a different platform on premises
platform, right that has a single virtual machine that has
Kubernetes cluster, a single node Kubernetes cluster that is
deployed on top of that, any file zoom into that to that
virtual machine, right? You'll be able to see that the 170,
two, sixteen, 1061 IP.
Which will come later on in this demo, so I do also later make
sorry I was just going to say just to make sure that folks who
are listening they are maybe familiar with Kubernetes that
they've heard of as being K and then the number 8 S even saying
K 3S, which is a lighter weight. Smaller Kubernetes for devices
like this print, right, right? And a lot of you know a lot of
these IoT and edge scenarios are required. Maybe a lower
footprint. Kubernetes distributions. An rancher did a
great job on. Creating one, so that's what we'll be using. You
know, in this demo. OK, so I'll go back to Azure here and we
talked about the tops right? And how is that being translated in
the world of Azure Arc enabled Kubernetes? So I'll click on one
of the clusters, and this is actually something that you will
see on all clusters. Or just pick the G1 and you can see here
under configuration. I have a couple of configurations and
those are the tops configuration that we are making approachable
and easy to deploy as part of our cable clusters, right so?
Once you have these cluster on boarded and projected as an arc
resource, you can deploy tops configuration now. Once in off
the back right that you notice is that there are a couple of
configuration your couple of operator scope scopes that we're
deploying. So to explain, you know for the viewers that don't
know what the tops is all about. So in a natural guitars is
really a process or methodology to use Git repository's as your
source of truth for a desired
state configuration. For your application or cluster
configuration, right? So if you think about the situation when
you are deploying, you know hundreds of Kubernetes clusters
and then you are making a change to your ingress controller. For
example, you want that change to be applied on all these
clusters, but how do you do that in a fleet management manner?
That's that's the challenge and what Azure Arc does. It's
basically make that approachable. So what we have
here is we have a couple of configurations you can see here.
Cluster configuration and namespace configuration. Let's
talk about it for one second, cluster configuration really
talks about how do you govern the cluster configuration
literally. So let's say you have service meshes or or security
applications or ingress controllers, right? Like we have
in this cluster. And how do you make changes horizontal changes
across the board on all clusters? So this is where
you're going to use the cluster scope, and the namespace is
really where the application kicks in, right? So you're
deploying applications against
Kubernetes namespaces. And This is why we have the the operator
scope for a namespace. Now I'll zoom into, you know, to one of
the configurations and let's talk about it before we actually
going to make the change right and see how that changes being
done real time. What we're doing with Azure Arc enabled
communities in Git OPS. We're actually leveraging another open
source project which called flux coming from we work San Fluxes
and Kubernetes operator that responsible for creating this
handshake between your cluster.
And the Git repository that you are using for your applications
right? And the flux also has another operator, which is the
fluxed Helm operator so you know Helm is kind of the defector
standards for package management for Kubernetes applications, and
we're leveraging that as well. So what we're doing is we're
listening with the Flex operator. We're listening to a
Git repository, and then we're going to make a change to that
Git repository and see what's
that all about. If you look at the at the operator parameters
here, one thing to notice is the path right? And you can see here
releases and prod, so I'll go here to my to my demo
application. And first of all let's let's see kind of the
repository. This is a repository, we call it a low arc
demo application, right? It's a simple node JS web application
that is deployed on all the clusters. The interesting part
about the web application is if I'll go here 2 releases.
We'll be able to see the engine EXE and the prod releases, and
if you remember from the previous screen I showed you
that there is. Leases and then prod. So what we're doing with
the flex operator in Azure Arc enabled, Kubernetes is basically
handshaking with Helm Helm release CRD that basically act
as a proxy to the actual YAML files and held package right
that is responsible for deploying the actual
application. Right? So it's really about simplifying that
process that all we need to do is to talk to the helm release.
So here in that helmet really as you can see it's a it's a
straightforward. File that has the release name, the repository
that we are at right now replica counts and the message and the
message that we're seeing. So what we're going to do is we're
going to make a change on that. I'll minimize the screen here
and to show the viewers on how that changes actually translated
in real time. So what is it that we're seeing here on the top of
the screen, you'll see the web application that we just showed
diploid on all three clusters, right? Remember the Raspberry Pi
deployed with rancher khatris.
We have a G key cluster in the middle and we also have the
rancher khatry S diploid on a single virtual machine. If you
are single virtual machine right on the bottom, what we have is
we have the terminal that actually looking at those
clusters and specifically what we're going to do is. We're
going to listen to the prod namespace and the prod
namespaces where the the web application that we're seeing is
actually deployed, right? So let's go ahead and listen to
that to that prod namespace.
On all tree clusters.
And you can see that here we have the prod Helm operator
which is the one that I mentioned before. This is the
operator that responsible for actually listening to the Git
repository an asking the git repository. Hey, are you seeing
any changes? Are you seeing any changes and the moment that he
will see that there's actually a change, it will go ahead and do
a rolling update for the application that is deployed on
the Kubernetes cluster, right? So right now we have this
application deployed on all three clusterin we have.
A single replica, which is basically no replicas in the
world of Kubernetes, right? So let's go ahead and make a change
and see how does that fit into the rolling update and the and
the kind of auto update process and the entire Git OPS flow. One
thing you notice is that the screen is flickering and there
is a reason why is that. What I did is I have an extension here
that basically does a refresh every 2 seconds for each and
everyone of these browsers because that way you will be
able to see the change.
Coming in real time, so let's go ahead and do that. I'll go back
to the. Oark repository and what we're going to do here. We're
going to change the message, and we're going to change the number
of replicas and see what's going on, right? So the first thing
is, I'm going to do, I'm going to change the number of replicas
to tree, right? And here I'm going to change the message to.
Hello Azure. Friday
and now I'm going to commit the change. Now, obviously in a
production environment you're going to have. It may be a more
thorough process on how those changes are being made, but once
we want to show really is we want to show the guy tops flow,
right? So I'm going to commit those changes, right? He ran
quickly, minimize the window and let's see what's happening.
You can already see on the on the bottom that pods are
starting to spin up right and in the second year you're going to
see the application update at real time on the top right. So
what you're saying is we're seeing the flux operator
actually doing its thing, listening to the Git repository.
Seeing that there is a change, and now you can see the
application is starting to change. Now, the reason that you
are seeing the message bouncing between the new one and the old
one, because if you remember, we also changed the number of
replicas so the engine EXE the load balancer that is deployed
on the cluster on the cluster.
Is also actually doing its thing right? It's bouncing and load
balancing between the new pods that now gets deployed, right?
So this is what's happening and you can see that the viewer one
already updated. We can see the G1 already updated and also the
Raspberry Pi so you can see three different platforms, three
different types of infrastructure and the same
application got updated in real time. And the last thing to
notice is that you can see here that the pods name are actually
changing right because?
Remember from zero replicas or one replica, we change it to
three replicas, right? So if I'll kind of make make the
screen here a bit cleaner, you can see now that we have three
replicas of this application, and this is what actually going
to be on all three clusters. So what we did is basically kind of
show a guy top slow end to end the top slow on three different
platforms using Azure Arc enabled Kubernetes and this is
really the demo, the last.
You know the last piece of that is, you know, we always get in.
Ask how to do this kind of demos. How to do this kind of
configurations and what we did is we create an open source
project humans back which called the Azure argue Jumpstart and
I'll switch back to my full screen browser. Here an into the
jumpstart repository. So the jump start repository is really
about taking all the arc scenarios that we can think of
when it comes to Azure Arc enabled servers. Azure Arc
enabled Kubernetes SQL Server data Services right, Azure Arc
as many pillars and more to come. But what we wanted to do
is we want to make that very approachable. We wanted to make
sure that you have a good experience, kinda zero to hero
experience that you can start actually try out Azure Arc, but.
The real challenge with this is because Azure Arc Touch is by
definition everything that is outside of Azure and projected
into Azure. We wanted to provide a way for, you know, for our
customers for people that really don't know a lot about other
platforms outside of Azure, but really wants to start taking
advantage of Azure Arc. What we did is we created those jump
start scenarios and today we already have 50 plus scenarios
and those jumpstart scenarios are here in this repository. We
take you by the hand and tell
you. A bit about Azure arc. How you can use how you can use it.
What is it that you supposed to do with that right? But the real
meat around the bone is these scenarios that you can see here,
right? So you can see we are actually covering all the major
cloud providers and all the major infrastructure providers
and providing them with an automated way to deploy arc
environments. Start doing the demo. Start doing PEO CS, right
start? Actually getting their hands dirty when it comes to.
When it comes to Azure arc right? And the demo that I just
showed you right? If a score here scroll here to Azure Arc
enabled Kubernetes you can see here for example this is what I
used to deploy the cluster that I just showed you an here. We
also have day two scenarios and use cases right? So we're not
just showing you how to do the bootstrap of the environment
we're actually taking you by the hand and showing you what is it
that you can do and how you can get that automated so you can
quickly spin up the environment
and do that. Over and over again, right? So here is, for
example, the the Git OPS demo that I just did. It's here part
of the you know part of the part of the repository takes you by
the hand with screenshot with code samples with all the
automation that is needed in order for you to actually get
going. So that's the jumpstart repository and we have more to
come. Fantastic, that is a really impressive demo like that
when we sometimes I think even the word demo isn't big enough
for demos like that because that's all real. You know what I
mean? Like you could have filmed all that, but you've got a real
Raspberry Pi cluster you've got. I mean, when was the last time
we had Google Cloud on Azure Friday, you know? I mean that
was extraordinary and this is the real magic, you know, this
is really the real magic when it comes to Azure Arc enabled
servers. Kubernetes, you know
data services is. Stretching, you know, and really taking the
notion of hybrid cloud to the next level. This is really the
jello in for agile for hybrid cloud because it really touches
the software layer and not just the infrastructure layer. It's
really jelling those together fantastic. I am learning all
about Azure Arc enabled Kubernetes with Kid ups 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.