Tuesday, November 18, 2025
Snowflake and AWS
Saturday, November 15, 2025
Debugging Google Cloud Kubernetes
- CREATE_CLUSTER began at 16:35:38 and ran to 16:41:37
- DELETE_NODE_POOL started at 16:41:41 and ran to 16:46:02
Wednesday, November 5, 2025
Spark Operator
Monday, November 3, 2025
AWS, Kubernetes and more
- a new Virtual Private Cloud (VPC) in which sit the K8s control plane and workers. A VPC is "a logically isolated and secure network environment that is separate from the rest of the AWS cloud" [1]
- two public subnets and two private subnets (best practice if you want high availability). By putting worker nodes in the private subnet, they cannot be maliciously scanned from the internet.
- all necessary NAT Gateways to allow the private subnets to access the internet
- Internet Gateways allowing the internet to talk to your public subnets.
- Route Tables which are just rules for network traffic. It's the "Routers use a route table to determine the best path for data packets to take between networks" [2]
Thursday, October 23, 2025
Exactly Once Semantics in Iceberg/Kafka
Monday, October 20, 2025
Spark and K8s on AWS
- Create the secret with aws secretsmanager create-secret ...
- Create a policy with aws iam create-policy... This reference the secret's ARNs in step 1.
- Create a role with aws iam create-role... that allows a role to be assumed via STS.
- Attach the policy in step 2 with the role in step 3 with aws iam attach-role-policy...
- Create a SecretProviderClass with kubectl apply -f... that references the secrets created in step 1
- Associate your K8s Deployment with the SecretProviderClass using its volumes.
Wednesday, October 15, 2025
Configuring Polaris Part 1
Wednesday, September 17, 2025
Configuring Polaris for Azure
- tenantId. You can find this by running az account show --query tenantId.
- multiTenantAppName. This is the Application (client) ID that was generated when the app was created. You can see it in Microsoft Entra ID -> App Registrations -> All Applications in the Azure portal or using the CLI: az ad app list, find your app with the name you created above and use its appId.
- consentUrl. I'm not entirely sure what this is but can be generated with APPID=$(az ad app list --display-name "MyMultiTenantApp" --query "[0].appId" -o tsv) && echo "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=$APPID&response_type=code&redirect_uri=http://localhost:3000/redirect&response_mode=query&scope=https://graph.microsoft.com/.default&state=12345"
Thursday, September 11, 2025
Configuring Polaris for GCP
Configuring Polaris for AWS
- Configure your cloud account such that it's happy handing out access tokens
- Configure Polaris, both the credentials to access Polaris and the Catalog that is essentially a proxy to the cloud provider
- Configure Spark's SparkConf.
Thursday, September 4, 2025
Three things about Docker
docker history --no-trunc apache/polaris
Restoring OS properties
Saturday, August 30, 2025
(It's a) Kind and Strimzi
"NodePort is a Kubernetes Service type designed to make Pods reachable from a port available on the host machine, the worker node. The first thing to understand is that NodePort Services allow us to access a Pod running on a Kubernetes node, on a port of the node itself. After you expose Pods using the NodePort type Service, you’ll be able to reach the Pods by getting the IP address of the node and the port of the NodePort Service, such as <node_ip_address>:<node port>. The port can be declared in your YAML declaration or can be randomly assigned by Kubernetes. Most of the time, the NodePort Service is used as an entry point to your Kubernetes cluster." [The Kubernetes Bible]
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "emulationMajor" (class io.fabric8.kubernetes.client.VersionInfo), not marked as ignorable (9 known properties: "goVersion", "gitTreeState", "platform", "minor", "gitVersion", "gitCommit", "buildDate", "compiler", "major"])
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 4, column: 22] (through reference chain: io.fabric8.kubernetes.client.VersionInfo["emulationMajor"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[com.fasterxml.jackson.core.jackson-databind-2.16.2.jar:2.16.2]
...
at io.fabric8.kubernetes.client.utils.KubernetesSerialization.unmarshal(KubernetesSerialization.java:257) ~[io.fabric8.kubernetes-client-api-6.13.4.jar:?]