Azure Container Registry
Is a fully managed Docker container registry service. It enables developers and organizations to store, manage, and deploy Docker container images securely in the cloud.
ACR integrates seamlessly with other Azure services, such as Azure Kubernetes Service (AKS) and Azure DevOps, providing a comprehensive platform for building, deploying, and managing containerized applications.
-DockerFile: What should the container look like?
-Container Image: Read only copy of the thing we want to run
-Container: Is a running instance of a container image
Feature Considerations
-All plans support container storage/management, and Azure AD integration (control access to the containers using AD identities)
-Standard includes all core features but with greater storage and throughput
-Premium adds: storage/throughput, geo-replication, content-trust, VNet security
-ARC Tasks provides quick, multi-step, and triggered task to be automated (patching the underlying o.s, framework that are used in your container images, or tasks to be triggered when source code changes)
Architecture
The goal of ACR is to provide a standard private repository that can work with a range of different container hosts
Azure Container Instances
Is a serverless container service, allowing developers to run Docker containers in a lightweight and managed environment without the need to provision or manage virtual machines.
Considerations
-For simple solutions that need to start fast (simple apps, task automation)
-Considered to be like container hosting building blocks (can be used by AKS)
-Doesn’t include any scaling, healing, or other container orchestration capabilities
-Pricing is based on resource allocation, and is charged on a per-second basis
Architecture
Container Groups
Azure Kubernetes Service
Is a fully managed container orchestration service. It simplifies the deployment, management, and scaling of containerized applications using Kubernetes, an open-source platform for automating the deployment, scaling, and management of containerized workloads.
-Built for large scale
-A lot to manage (admin overhead)
-Provides a lot of functionality
Discovery and Load Balancing
-AKS will take care of everything in terms of exposing the network connectivity, the load balancing and distributing to containers that make up our solution
Automation
-Release a v2 of that containerized solution
-We might want to have storage for our containers
-Automate requiremetns from rolling out to rolling back, automatically provisioning storage, automatically attaching storage, and more.
Healing
-It can take a look at all of the containers known as “pods”, and it can go redeploy and heal those to ensure that your solution is meeting the defined requirements
Scaling
-Deploy more containers to meet demand
Considerations
-Managed Kubernetes cluster including integration with Azure / Azure AD
-Supports VMs and Azure Container Instances to host containers
-Includes a large variety of orchestration, healing, monitoring, and other features
-Only charged for the compute (VMs and ACI) required. Not for the control plane.
Impementation Overview
Architecture
AKS Networking Overview
Networking
There’s a number of different methods to create this:
-Cluster IP: Expose the service on a cluster-internal IP (internal only)
–I want my web app to be able to talk to my API app, using a defined IP address and defined port
-NodePort: Expose the service on a fixed port via the node IP (allows port translation)
-Load Balancer: Expose the service via an Azure (Internal or External) Load Balancer
–Provide access to your pods that exist across multiple nodes
-ExternalName: Provide DNS for the service
AKS Storage Overview
Volumes: A pod definition can declare a volume to read/write data
-Managed Disk: Associated to the pod lifecycle
-You can also use Azure Files for sharing access
Persistent Volumes: Storage that is centrally managed (dynamic or static) by the API
-Our volumes will still be accessible to our pods, but they will be created and maintained centrally through the API.
-Centrally managed resource
-Could be a Managed Disk, Azure File, Blob Storage
Settings we should be aware of:
-Storage Class: Used to define required tiers of storage (e.g. Premium Managed Disk)
-Persistent Volume Claim: Used to request volume of a specific class from the control plane. (Node requests: Slow Object Storage + 100GiB)
–Can be created and dynamically assigned
AKS Autoscale Overview
There’s two things we need to scale:
We need to scale both the node pools and the applications themselves
Configuration
Azure Container Apps
Is a fully managed Kubernetes-based application platform that helps you deploy apps from code or containers without orchestrating complex infrastructure.
Considerations
-Kubenetes-like features, with the cluster and components managed for you
-Built for microservices developers to more easily get advanced capabilities
-Includes scaling (KEDA), service discovery (DAPR), load balancing (envoy), and more
-Billing based on resources (per second) and requests. Can scale to ZERO
-No Kubernetes API or control plane access!
Implementation Overview
Architecture