|
12 | 12 | - kubectl version v1.11.3+. |
13 | 13 | - Access to a Kubernetes v1.11.3+ cluster. |
14 | 14 |
|
| 15 | +### OCI Golden Image + Firecracker E2E |
| 16 | + |
| 17 | +The repository includes two standalone IaC scripts: |
| 18 | + |
| 19 | +- `hack/oci-build-golden-image.sh` |
| 20 | +- `hack/oci-firecracker-e2e.sh` |
| 21 | +- `hack/packer-build-golden-image.sh` (Packer wrapper around `oci-build-golden-image.sh`) |
| 22 | + |
| 23 | +`hack/oci-build-golden-image.sh` is idempotent for missing OCI inputs: |
| 24 | + |
| 25 | +- auto-detects compartment and AD for `VM.Standard.E2.1.Micro` from limits |
| 26 | +- reuses an existing public subnet, or creates a minimal public VCN/subnet stack |
| 27 | +- prunes oldest `imp-fc-golden-*` images if custom image quota is full |
| 28 | + |
| 29 | +Build a minimal golden image: |
| 30 | + |
| 31 | +```sh |
| 32 | +IMP_OCI_PROFILE=syscode-api \ |
| 33 | +IMP_OCI_COMPARTMENT_NAME=homelab \ |
| 34 | +IMP_OCI_DOMAIN_NAME=homelab \ |
| 35 | +OCI_SSH_PUBLIC_KEY_FILE="$HOME/.ssh/builder.pub" \ |
| 36 | +OCI_SSH_PRIVATE_KEY_FILE="$HOME/.ssh/builder" \ |
| 37 | +OCI_OUTPUT_ENV_FILE="$HOME/.config/imp/oci-golden.env" \ |
| 38 | +hack/oci-build-golden-image.sh |
| 39 | +``` |
| 40 | + |
| 41 | +Build the same golden image through Packer while reusing the script checks: |
| 42 | + |
| 43 | +```sh |
| 44 | +IMP_OCI_PROFILE=syscode-api \ |
| 45 | +IMP_OCI_COMPARTMENT_NAME=homelab \ |
| 46 | +IMP_OCI_DOMAIN_NAME=homelab \ |
| 47 | +OCI_SSH_PUBLIC_KEY_FILE="$HOME/.ssh/builder.pub" \ |
| 48 | +OCI_SSH_PRIVATE_KEY_FILE="$HOME/.ssh/builder" \ |
| 49 | +OCI_OUTPUT_ENV_FILE="$HOME/.config/imp/oci-golden.env" \ |
| 50 | +hack/packer-build-golden-image.sh |
| 51 | +``` |
| 52 | + |
| 53 | +Run e2e using the generated image: |
| 54 | + |
| 55 | +```sh |
| 56 | +source "$HOME/.config/imp/oci-golden.env" |
| 57 | +IMP_OCI_PROFILE=syscode-api \ |
| 58 | +IMP_OCI_COMPARTMENT_NAME=homelab \ |
| 59 | +IMP_OCI_DOMAIN_NAME=homelab \ |
| 60 | +OCI_SSH_PUBLIC_KEY_FILE="$HOME/.ssh/builder.pub" \ |
| 61 | +OCI_SSH_PRIVATE_KEY_FILE="$HOME/.ssh/builder" \ |
| 62 | +OCI_IMAGE_OCID="$OCI_IMAGE_OCID" \ |
| 63 | +hack/oci-firecracker-e2e.sh |
| 64 | +``` |
| 65 | + |
| 66 | +Or run e2e and let it build a golden image automatically when `OCI_IMAGE_OCID` is unset: |
| 67 | + |
| 68 | +```sh |
| 69 | +IMP_OCI_PROFILE=syscode-api \ |
| 70 | +IMP_OCI_COMPARTMENT_NAME=homelab \ |
| 71 | +IMP_OCI_DOMAIN_NAME=homelab \ |
| 72 | +OCI_SSH_PUBLIC_KEY_FILE="$HOME/.ssh/builder.pub" \ |
| 73 | +OCI_SSH_PRIVATE_KEY_FILE="$HOME/.ssh/builder" \ |
| 74 | +hack/oci-firecracker-e2e.sh |
| 75 | +``` |
| 76 | + |
| 77 | +Notes: |
| 78 | + |
| 79 | +- OCI requires boot volume size `>= 50` GB. |
| 80 | +- Golden image max size is controlled by `OCI_GOLDEN_MAX_GB` (default `50` GiB), and the script will fail/delete oversize images by default. |
| 81 | +- Optional: set `OCI_GOLDEN_ZERO_FILL=true` to zero free space before capture (slower, may reduce resulting image size). |
| 82 | +- If your SSH key is passphrase-protected, use an unencrypted key for automation or set `ALLOW_SSH_AGENT=true` with a loaded agent. |
| 83 | +- Targeting defaults can be set once with: |
| 84 | + - `IMP_OCI_PROFILE` (recommended `syscode-api`) |
| 85 | + - `IMP_OCI_COMPARTMENT_NAME` (recommended `homelab`) |
| 86 | + - `IMP_OCI_DOMAIN_NAME` (recommended `homelab`) |
| 87 | + |
15 | 88 | ### To Deploy on the cluster |
16 | 89 | **Build and push your image to the location specified by `IMG`:** |
17 | 90 |
|
|
0 commit comments