Paul's Blog

A collection of notes and stuff I find interesting

Fixing a NodeJS Digital Envelope Routines Error

2022-11-08 2 min read Development NodeJS
In my journey to learn Rust, I’ve decided to pick up this book called “Practical Rust Web Projects” by Shing Lyu. In the last chapter, you walk through an example of packaging a WebAssembly module using wasm-pack and using the .wasm binary in a NodeJS application. On the step where I needed to compile the application, I ran into the following error: $ npm run build > create-wasm-app@0.1.0 build > webpack --config webpack. Continue reading

Deploying ARM64 workloads to AKS

2022-11-02 6 min read Azure Kubernetes ARM64 Docker
You might have heard by now that Azure has partnered with Ampere to bring ARM-based processors for virtual machines on Azure. This is super exciting as it gives you an opportunity to deploy workloads on highly performant and power efficient virtual machines and these characteristics ultimately result in excellent price-performance (lower costs 🥳) So… are you ready to deploy your workloads to ARM64 node pools on AKS? I sure wasn’t when attempting to deploy the azure-voting-app-redis application to my cluster. Continue reading

Sharing Bicep Modules with Azure Container Registry

2022-10-11 14 min read Azure Bicep
One of the things I do as a Cloud Native Advocate at Microsoft is build end-to-end lab scenarios in the repo. Most of the demo scenarios we aim to cover is in and around the container space and a majority of the labs uses Azure Bicep to declaratively provision Azure infrastructure. As more labs get spun up, there is a potential for redundant Bicep code. You might have already guessed, there’s a need for re-usable code to spin up AKS clusters. Continue reading

Autoscaling Azure Container Apps

2022-09-11 6 min read Azure Containers Scalability
So, what makes Azure Container Apps “serverless”? Today we are going to focus on what makes Azure Container Apps (ACA) a “serverless” offering. But what does the term “serverless” really mean? As much as we’d like to think there aren’t any servers involved, that is certainly not the case. In general, “serverless” means that most (if not all) server maintenance has been abstracted away from you. With serverless, you don’t spend any time managing and patching servers. Continue reading

Microservices Communications with Azure Container Apps

2022-09-10 7 min read Azure Containers Microservices
Introduction In yesterday’s #ServerlessSeptember post, we learned what the Azure Container Apps (ACA) service is and the problems it aims to solve. It is considered to be a Container-as-a-Service platform since much of the complex implementation details of running a Kubernetes cluster is managed for you. Some of the use cases for ACA include event-driven processing jobs and background tasks, but this article will focus on hosting microservices, and how they can communicate with each other within the ACA service. Continue reading

Monitoring Azure Container Apps With Azure Managed Grafana

The Azure Monitor team has announced the general availability of the Azure Managed Grafana (AMG) service. As part of the announcement, they also announced the availability of curated Grafana dashboards for various Azure services including Azure Container Apps 🎉 Grafana is very popular within the Cloud Native community and it seems natural to use it for Azure Container Apps (ACA) observability. In this post, I will walk you through provisioning the ACA and AMG resources using the Terraform AzAPI provider and show you how easy it is to import the ACA dashboards into your AMG instance. Continue reading

Terraform: Azure Container Apps with Azure Managed Grafana using the AzAPI provider

2022-09-09 3 min read Code Snippets
Code snippet for the Monitoring Azure Container Apps With Azure Managed Grafana article. terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">=3.0.0" } azapi = { source = "azure/azapi" version = ">=0.5.0" } } } provider "azurerm" { features { resource_group { prevent_deletion_if_contains_resources = false } key_vault { purge_soft_delete_on_destroy = false } } } resource "random_pet" "aca" { length = 2 separator = "" } resource "random_integer" "aca" { min = 000 max = 999 } resource "random_string" "aca" { length = 5 lower = true upper = false numeric = true special = false keepers = { # Generate a new random_string on every run to avoid a conflict with the previous revision none = timestamp() } } locals { resource_name = format("%s", random_pet. Continue reading
Older posts Newer posts