nelm-ci/DEPLOY.md

74 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

# Deploy guide (nelm + Jenkins, no werf)
Charts live under each Bitbucket repos `.helm/`. Jenkins **clones those repos on every job** — it does not deploy from a hand-copied folder on disk.
## Lab URLs
| What | URL / host | Creds |
|------|------------|-------|
| Bitbucket UI (Gitea) | https://bitbucket.valdemorte.online | `bbadmin` / `admin123` |
| Jenkins | https://jenkins.valdemorte.online | `admin` / `admin123` |
| Compose | `ubuntu@192.168.10.68:~/ci-stack` | — |
Repos: `bbadmin/{postgres,seaweedfs,ollama,keycloak,vllm}`. Job: **`nelm-deploy`**. Contexts: `lab-cluster-{dev,preprod,prod}`.
## How Jenkins gets the code
1. Parameters include `GIT_BASE_URL` (default `http://192.168.10.68:7990/bbadmin`) and `GIT_BRANCH` (`main`).
2. Job runs `jenkins/checkout-repos.sh` → fresh clone into `$WORKSPACE/repos/<service>`.
3. Build/deploy use **only** that checkout (`.helm/`, `Dockerfile`).
Agent still holds non-git secrets/tools only:
- `~/nelm-work/.nelm_secret_key`
- `~/nelm-work/.git_user` + `.git_token`
- `~/kube-deploy.config`
- `~/nelm-work/jenkins/checkout-repos.sh` (CI helper; prefer keeping the same scripts in a `nelm-ci` Bitbucket repo in production)
See **`CLIENT-SETUP.ru.md`** for client rollout and **`NELM-CLOSED-LOOP.ru.md`** for closed-loop chart/Dockerfile changes.
## Tools on the agent
```bash
export NELM_SECRET_KEY=$(cat ~/nelm-work/.nelm_secret_key)
export PATH="$HOME/bin:$PATH"
export KUBECONFIG=$HOME/kube-deploy.config
```
## Images
- Default `values.yaml` → internal registry (`192.168.10.68:5000/...` in lab).
- Lab smoke test: job flag `USE_PUBLIC_IMAGES=true``values-public.yaml`.
- Client closed loop: `USE_PUBLIC_IMAGES=false`.
## Deploy SA
```bash
./create-deploy-sa.sh
```
## Manual deploy (after git clone)
```bash
git clone http://192.168.10.68:7990/bbadmin/postgres.git
export NELM_SECRET_KEY=$(cat .nelm_secret_key)
nelm release install -n dev -r postgres-dev \
--set env=dev --set global.cluster=dev \
--values postgres/.helm/values-public.yaml \
postgres/.helm
```
## Jenkins parameters
| Parameter | Meaning |
|-----------|---------|
| `SERVICE` | postgres … vllm / all |
| `ENV` | dev / preprod / prod |
| `ACTION` | build / deploy / build-and-deploy |
| `USE_PUBLIC_IMAGES` | lab overlay |
| `GIT_BASE_URL` | Bitbucket project base |
| `GIT_BRANCH` | branch to deploy |
| `REGISTRY` | push target for build |
Pipeline sources: root `Jenkinsfile` + `jenkins/*.groovy` + `jenkins/checkout-repos.sh`.