AGIC Azure is a powerful tool that requires careful configuration and deployment to get the most out of it.
To start, you need to create an AGIC Azure instance, which involves selecting a suitable Azure environment and setting up necessary resources such as storage accounts and virtual networks.
AGIC Azure instances can be deployed in various regions, including North Europe and West US, which is crucial for businesses with global operations.
The configuration process involves specifying the desired instance type, such as a Standard or Premium instance, and allocating the required resources, including CPU and memory.
AGIC Azure Configuration
AGIC Azure Configuration is surprisingly easy to set up. You can create an AKS cluster with Application Gateway Ingress Controller using Azure CLI.
To start, make sure you're logged into the portal. Then, you can create a resource group and AKS cluster in a single command, which will also create the application gateway and link them together.
The Azure CLI command will abstract the complexity of Kubernetes application traffic routing, providing a bridge between Kubernetes services and external ones. This makes it a great choice for those new to AGIC Azure configuration.
Creating AKS with Azure CLI
To create an AKS cluster with Azure CLI, you'll need to log in to the portal first.
With Azure CLI, you can create a resource group and an AKS cluster in just a few lines of code.
You'll be creating a resource group on line 7 of the command, which is where the AKS cluster will be provisioned.
The AKS cluster itself will be created on line 11, and it will be linked to the Application Gateway.
This streamlined process makes it easy to provision an AKS cluster without having to create the Application Gateway in a separate command.
Feature Dependencies
Before migrating to Application Gateway for Containers, it's essential to identify any dependencies on Application Gateway Ingress Controller that may not be available yet.
Web Application Firewall (WAF) is one such dependency that should be prioritized later in your migration strategy.
Private IP is another feature that's not yet available in Application Gateway for Containers.
You'll also need to consider workloads that rely on ports other than 80 and 443.
Configurable request timeout values are also not supported in Application Gateway for Containers.
Here's a summarized list of AGIC annotations and their corresponding status in Application Gateway for Containers:
These are just a few examples of features that require special attention during the migration process.
Gateway API Header Rewrite
Gateway API Header Rewrite is a powerful feature that allows you to modify request headers in real-time. This is particularly useful for Azure Application Gateway, which enables you to control incoming HTTP(S) requests based on various factors.
To rewrite request headers in Gateway API, you define a RequestHeaderModifier match and filter. This is a straightforward process that requires minimal configuration.
Rewriting request headers can be used to improve security, by blocking malicious traffic, or to enhance performance, by offloading SSL encryption from back-end servers. Azure Application Gateway's request filtering feature allows you to filter requests based on specific criteria, which can be used in conjunction with header rewriting to create a robust security solution.
Here are some key benefits of using Gateway API Header Rewrite:
- Improved security through request filtering and header rewriting
- Enhanced performance through SSL offloading
- Flexibility in controlling incoming HTTP(S) requests
By leveraging Gateway API Header Rewrite, you can create a more efficient and secure Azure Application Gateway configuration. This will enable you to provide a better user experience and reduce the risk of security breaches.
AGIC Azure Networking
AGIC Azure Networking is a crucial part of deploying AKS with Application Gateway Ingress Controller. You'll need to create a Terraform file to deploy the AKS cluster with AGIC, which can be done by saving the file as a .yaml file and applying it to the cluster.
To link the AKS cluster to the Application Gateway, you'll want to update the Terraform code on line 36 to create an application gateway and link them together. This will enable you to direct traffic to the Application Gateway for Containers.
To direct traffic to the Application Gateway for Containers, update public DNS records to point to the Application Gateway's frontend A record. Consider migration during a time of low-peak traffic to validate the process.
AGIC Ingress - SSL with Let's Encrypt
AGIC Ingress - SSL with Let's Encrypt is a game-changer for secure communication between your AKS cluster and the outside world.
AGIC Ingress uses LetsEncrypt.org to obtain a TLS/SSL certificate for your domain, which is then installed on Application Gateway, performing SSL/TLS termination for your AKS cluster.
This setup relies on the cert-manager Kubernetes add-on, which automates the creation and management of certificates, making it a seamless process.
You can configure AGIC Ingress using the Azure CLI, which will create the Application Gateway, AKS cluster, and link them together in a single command.
Creating a resource group and AKS cluster with AGIC using Azure CLI is as straightforward as running a single command.
AGIC Ingress with Let's Encrypt also has a Terraform code option, which can be used to deploy the AKS with AGIC, specifying the creation of an application gateway and linking them together on line 36.
Azure Load Balancer
Azure Load Balancer is a crucial component of AGIC Azure Networking, allowing you to efficiently distribute incoming network traffic across a group of backend servers or resources.
It operates at layer 4 of the OSI model, serving as the single point of contact for clients. Load balancer distributes inbound flows to backend pool instances according to configured load-balancing rules and health probes.
Azure Load Balancer can be either public or internal. A public load balancer provides outbound connections for virtual machines (VMs) inside your virtual network by translating their private IP addresses to public IP addresses.
An internal load balancer is used to load balance traffic inside a virtual network, where private IPs are needed at the frontend only. In a hybrid scenario, a load balancer frontend can be accessed from an on-premises network.
Azure Load Balancer supports both Azure Virtual Machines and Virtual Machine Scale Sets as backend pool instances.
Gateway
Gateway is a crucial component of AGIC Azure Networking. It enables you to control incoming HTTP(S) requests based on factors like URL prefixes, host names, and query parameters.
Application Gateway is a web traffic load balancer that enables you to manage traffic to your web applications. Traditional load balancers operate at the transport layer (OSI layer 4 — TCP and UDP) and route traffic based on source IP address and port, to a destination IP address and port.
You can use Application Gateway to make routing decisions based on additional attributes of an HTTP request, for example URI path or host headers. This is in contrast to traditional load balancers that only operate at the transport layer.
Here are some of Azure Application Gateway's characteristics:
- Load balancing: spreads incoming traffic over several back-end servers to increase responsiveness and lower the chance of overtaxing certain servers.
- Path-based routing: enables you to run many websites on the same IP address by directing traffic to various back-end servers according to the desired path.
- Host name-based routing: routes traffic based on the hostname provided in the request.
- WebSockets: supports WebSocket protocol, allowing for bidirectional communication between clients and servers.
- SSL Offload: terminates and offloads SSL encryption from the back-end servers, improving their performance and reducing the workload.
- Caching: provides caching capabilities to reduce latency and improve performance.
- Request filtering: allows you to filter Requests based on specific criteria, blocking malicious traffic and enhance security.
- Response smoothing: simplifies complex server returned responses such as those from web Sockets, to improve client performance and simplify subsequent processing.
- Connection draining: allows you to drain existing connections from a backend pool before removing it from rotation, ensuring that all active connections are completed before the backend instances are shut down.
You can also use Application Gateway for Containers, which can perform autoscaling if the traffic increases. You can set options such as minimum and maximum instances count.
Sources
- https://learn.microsoft.com/en-us/azure/application-gateway/for-containers/migrate-from-agic-to-agc
- https://blog.nashtechglobal.com/how-to-create-agic-and-application-gateway-for-aks/
- https://www.linkedin.com/pulse/create-aks-cluster-application-gateway-agic-using-external-chandio-zjkuf
- https://rafaelmedeiros94.medium.com/creating-an-aks-cluster-with-application-gateway-agic-efae4a102b35
- https://stackoverflow.com/questions/72481002/aks-with-agic-and-application-gateway
Featured Images: pexels.com