00

Build HelixWorks from Laptop to AWS: the 61-Day Dependency Map

Run it in the public monorepo

This course is built around the public HelixWorks Kubernetes Lab monorepo. The excerpt below is runnable source, not pseudocode.

Source: app/Dockerfile

FROM nginx:1.29-alpine

COPY index.html /usr/share/nginx/html/index.html

EXPOSE 80

Code to reality

Declared intent
Package the first web workload with one repeatable runtime and HTTP port.
Interpreter
The Docker builder executes each instruction and records an immutable image layer.
Software effect
The image contains the HelixWorks page at the nginx document root and declares port 80.
Hardware effect
A running container consumes host CPU, memory, storage layers, and a network namespace.
Observable evidence
docker image inspect and an HTTP request to the running container identify the image and response.

The product problem

You are starting with no Kubernetes knowledge. The goal is not to memorize object names. It is to build HelixWorks, a multi-tenant application-generation platform, and learn each Kubernetes mechanism when the product creates a reason for it.

HelixWorks has a web entry point and separate control-plane, generator, runtime, broker, and evidence responsibilities. Local development must be cheap and observable; dev, staging, and production must be isolated; production finishes on private Amazon EKS. Kubernetes continuously reconciles declared state through controllers rather than running a manifest once (Kubernetes controllers). Amazon EKS still leaves application, worker-node, identity, and data decisions with the platform team (EKS shared responsibility).

One analogy, then the real system

Think of HelixWorks as a publishing factory. Containers are sealed workstations, Pods are replaceable work crews, Services are stable internal phone numbers, controllers are supervisors, and Git is the approved operating manual. AWS eventually supplies the secured industrial estate. The analogy stops there: the real evidence is an image digest, Kubernetes object status, a customer request, and a durable audit event.

How the days depend on one another

Do not skip a failed proof. A later day assumes the preceding evidence exists.

DaysProduct dependency unlockedHelixWorks evidence at the boundary
0–3Source becomes a small, non-root, repeatable container imageBuild output, image metadata, runtime user, HTTP response
4–7A local cluster can schedule the first HelixWorks PodAPI context, Ready nodes, rendered Pod, container logs
8–12Replaceable replicas gain stable networking and supporting workloadsDeployment ownership, EndpointSlices, DNS request, Job outcome
13–18Placement, capacity, scaling, and health become explicitscheduler events, requests/limits, probe transitions, HPA inputs
19–26Configuration, identity, authorization, and network policy become boundariessecret/config references, TLS identity, RBAC denials, policy denials
27–35Operators learn machines, storage, DNS, networking, upgrades, and restorenode state, PVC binding, DNS trace, upgrade plan, restore proof
36–40Symptoms become an evidence-led troubleshooting workflowmetrics, logs, events, JSONPath query, diagnosed owner
41–48Delivery becomes reusable and evolvableregistry digest, Helm/Kustomize render, stateful identity, Gateway route
49–55Extension and admission become governed platform capabilitiesCRD status, reconciliation, admission denial, runtime and HA evidence
56–60Production operations connect software to memory, hardware, and AWSmetric-to-incident trace, OOM diagnosis, rack/EKS responsibility dossier

The complete 61-day route

DayHelixWorks build stepWhy it must come now
0Product and dependency mapDefines the proof-driven route
1Container fundamentalsGives one process an isolated runtime
2Dockerize the web entry pointProduces the first runnable HelixWorks image
3Multi-stage buildSeparates build tools from production bytes
4Why orchestration existsExposes the replacement and scheduling problem
5Kubernetes architectureIdentifies API, controllers, scheduler, and kubelet
6Multi-node Kind clusterCreates the safe local substrate
7Declarative PodSends the first desired state to the API
8Deployment and ReplicaSetMakes the web process replaceable
9ServiceGives changing Pods a stable address
10NamespaceCreates an initial tenancy boundary
11Init and sidecar containersSeparates setup and supporting behavior
12DaemonSet, Job, CronJobModels node-wide and finite work
13Labels and schedulingConnects selection to placement
14Taints and tolerationsProtects specialized nodes
15Node affinityExpresses required and preferred placement
16Requests and limitsMakes scheduling capacity honest
17HPA and VPASeparates replica scaling from sizing
18Startup, readiness, livenessSeparates start, traffic, and recovery signals
19ConfigMap and SecretRemoves environment data from images
20TLS foundationsExplains transport identity and encryption
21Kubernetes TLSConnects certificates to cluster endpoints
22Authentication and authorizationSeparates identity from permission
23Namespaced RBACGives services least-privilege access
24Cluster-scoped RBACGoverns the few global capabilities
25ServiceAccountsGives each workload a distinct identity
26NetworkPolicyRestricts service-to-service reachability
27kubeadm clusterReveals the machine-level control plane
28Container storageDistinguishes image, writable layer, and mount
29PV, PVC, StorageClassGives state an explicit lifecycle
30DNS foundationsExplains names before cluster DNS
31CoreDNSTraces HelixWorks service discovery
32CNI and runtimesTraces packets and container execution
33IngressIntroduces controlled external HTTP routing
34Cluster upgradeChanges platform versions with a rollback plan
35etcd backup and restoreProtects Kubernetes control-plane state
36Monitoring, logging, alertingCreates observable operating signals
37Application troubleshootingFollows request-to-Pod failures
38Cluster troubleshootingFollows controller and node failures
39Network and node maintenanceSeparates packet faults from machine work
40JSONPath and advanced kubectlExtracts precise operational evidence
41Operator practiceTurns knowledge into timed, repeatable diagnosis
42Private registryControls image distribution
43HelmPackages parameterized installation
44KustomizeReuses a base across environments
45StatefulSetGives ordered, stable identity where required
46Priority and preemptionProtects critical services under pressure
47Gateway APIModels richer traffic ownership
48Ingress migrationChanges routing without losing customer evidence
49CRDsExtends the API with HelixWorks-specific intent
50OperatorsReconciles that intent continuously
51Admission controllersRejects unsafe desired state before persistence
52Dynamic provisioningConnects storage claims to provisioners
53CRI and cri-dockerdLocates the kubelet/runtime boundary
54Pod SecurityEnforces a restricted process baseline
55HA control planeRemoves one control-plane machine as a single point
56Prometheus and MimirConnects a metric to an incident decision
57Kubernetes memoryConnects physical RAM, cgroups, requests, and limits
58OOM workflowDiagnoses memory termination without guessing
59On-premises substrateMaps racks, networks, and storage to cluster promises
60Managed Kubernetes on AWSProduces the final shared-responsibility launch dossier

Learning contract

Every day answers five questions: what intent did we declare, which interpreter acted, what software state changed, what physical resource was used, and what evidence proves it? HelixWorks remains the recurring product. A command that exits successfully is not enough; capture the object status and the customer-visible effect.

Day 0 proof

  • [ ] Explain HelixWorks’s six service responsibilities without Kubernetes jargon.
  • [ ] Trace the dependency chain from source to an EKS customer request.
  • [ ] Identify which day supplies the prerequisite for any later topic.
  • [ ] Create an evidence folder keyed by day, environment, source revision, and timestamp.
  • [ ] Refuse to advance when a prerequisite proof is missing.

Next: Day 1 starts with the smallest real unit: one process inside one container image.