Skip to content

Deployment

Runtime image ghcr.io/vannadii/ironloom है, जब तक registry owner बदल न जाए। Helm chart ironloom binary deploy करता है, जिसमें PVC-backed .ironloom state, setup-time encrypted local configuration, Discord, GitHub, SonarCloud और OpenAI credentials के लिए optional secret references, और health/readiness probes शामिल हैं।

k3s deployments के लिए deploy/helm/ironloom के अंतर्गत Helm chart उपयोग करें।

Deployment Flow

Runtime Secrets

Chart install करने से पहले target namespace में setup secret बनाएं। IRONLOOM_CONFIG_KEY base64-encoded 32-byte key material होना चाहिए। IRONLOOM_INSTALLER_TOKEN first-run setup form submissions authorize करता है।

sh
kubectl create namespace ironloom
kubectl -n ironloom create secret generic ironloom-setup \
  --from-literal=config-key="$(openssl rand -base64 32)" \
  --from-literal=installer-token="$(openssl rand -base64 32)"

Runtime credentials Kubernetes secrets, setup page, या दोनों से provide किए जा सकते हैं। Environment-bound secrets encrypted local setup values से precedence लेते हैं।

sh
kubectl -n ironloom create secret generic ironloom-discord \
  --from-literal=application-id="${IRONLOOM_DISCORD_APPLICATION_ID}" \
  --from-literal=token="${IRONLOOM_DISCORD_TOKEN}" \
  --from-literal=public-key="${IRONLOOM_DISCORD_PUBLIC_KEY}"
kubectl -n ironloom create secret generic ironloom-github \
  --from-literal=token="${IRONLOOM_GITHUB_TOKEN}"
kubectl -n ironloom create secret generic ironloom-sonarcloud \
  --from-literal=token="${IRONLOOM_SONARCLOUD_TOKEN}"
kubectl -n ironloom create secret generic ironloom-openai \
  --from-literal=api-key="${IRONLOOM_OPENAI_API_KEY}"

Discord authorization के लिए IRONLOOM_DISCORD_APPLICATION_ID को application-id secret key या Helm value --set-string discord.applicationId=... से provide करें। OpenAI authentication के लिए IRONLOOM_OPENAI_API_KEY या IRONLOOM_OPENAI_OAUTH_SESSION provide करें। Setup page दोनों modes support करता है।

k3s Dry Run

Cluster बदलने से पहले server-side dry run चलाएं।

sh
helm upgrade --install ironloom deploy/helm/ironloom \
  --namespace ironloom \
  --create-namespace \
  --dry-run=server

Local k3s Acceptance

Chart changes publish या promote करने से पहले disposable local acceptance recipe चलाएं।

sh
just k3s-acceptance

यह recipe ironloom:local build करती है, Docker-backed disposable k3s cluster start करती है, setup और runtime secrets बनाती है, Helm chart install करती है, /discord/interactions के माध्यम से signed Discord ping और command handling verify करती है, और Deployment restart करके prove करती है कि PVC-backed thread artifact index persist करता है। Runtime default रूप से 127.0.0.1:18081 पर forward होता है; यह port unavailable हो तो IRONLOOM_K3S_HTTP_PORT set करें। Local image builds default रूप से host networking use करती हैं; Docker के default build network के लिए IRONLOOM_DOCKER_BUILD_NETWORK=default set करें।

Live Discord Endpoint Acceptance

Real Discord application ID, bot token, और public key bind करने के बाद Discord endpoint validation proof चलाएं।

sh
just discord-endpoint-acceptance

यह recipe local runtime start करती है, उसे ngrok के माध्यम से publish करती है, application की Interactions Endpoint URL update करती है, Discord के signed validation PING का इंतजार करती है, verify करती है कि Discord ने URL persist किया, और previous endpoint restore करती है। Docker और ngrok start किए बिना already deployed public /discord/interactions endpoint validate करने के लिए IRONLOOM_DISCORD_ACCEPTANCE_ENDPOINT_URL set करें।

Live External Probe

Real runtime credentials bind करने के बाद GitHub source-of-truth reads और SonarCloud quality gate polling verify करने के लिए external probe चलाएं।

sh
IRONLOOM_GITHUB_REPOSITORY=VannaDii/ironloom just external-probe

यह command service जैसे ही IRONLOOM_* runtime environment values उपयोग करती है और GitHub repository projection, SonarCloud quality gate status, और unresolved issue count का redacted JSON summary print करती है। Summary में live pull request merge state और check-run reads शामिल करने के लिए IRONLOOM_GITHUB_PULL_REQUEST_NUMBER और IRONLOOM_GITHUB_CHECK_REF set करें।

Install Or Upgrade

Validation के दौरान local chart से install करें, या release publication के बाद published OCI chart से install करें।

sh
helm upgrade --install ironloom deploy/helm/ironloom \
  --namespace ironloom \
  --create-namespace \
  --set image.repository=ghcr.io/vannadii/ironloom \
  --set image.tag=0.1.0
sh
helm upgrade --install ironloom oci://ghcr.io/vannadii/charts/ironloom \
  --namespace ironloom \
  --create-namespace \
  --version 0.1.0

Smoke Checks

sh
kubectl -n ironloom rollout status deployment/ironloom
kubectl -n ironloom port-forward service/ironloom 8080:8080
curl -fsS http://127.0.0.1:8080/healthz
curl -fsS http://127.0.0.1:8080/readyz
cargo test -p ironloom-runtime --test vertical_slice

Rollback

जब तक operator destructive cleanup स्पष्ट रूप से approve न करे, PVC रखें।

sh
helm -n ironloom history ironloom
helm -n ironloom rollback ironloom <revision>
kubectl -n ironloom rollout status deployment/ironloom

Site Publishing

.github/workflows/docs-deploy.yml main पर VitePress site को GitHub Pages पर https://ironloom.dev में publish करता है।

Contributors

The avatar of contributor named as Vanna DiCatania Vanna DiCatania

Changelog

Discord, GitHub, SonarCloud और k3s के लिए ऑडिट योग्य इंजीनियरिंग ऑपरेशन.