- ansible: db_stack app_node ve test-db-post-stack'ten artık kullanılmayan stack deploy adımları kaldırıldı (DB servisleri iklimco stack'ine taşındı) - setup/05: push-harbor-custom-images.sh artık config dosyalarını kendisi üretiyor, init-base.sh ön adımı kaldırıldı
120 lines
4.3 KiB
Markdown
120 lines
4.3 KiB
Markdown
# 05 - Test Runner ve Deploy Ön Koşulları
|
||
|
||
Bu aşamanın amacı test ortamında Gitea Actions runner'ı (`act_runner`) systemd servisi olarak kurmak ve CI/CD pipeline'larının çalışabileceği ortamı hazırlamaktır.
|
||
|
||
## Runner Yerleşimi
|
||
|
||
Test ortamında maliyet ve basitlik için tek runner kullanılır:
|
||
|
||
| Host | Servis Adı | Etiketler |
|
||
| --- | --- | --- |
|
||
| `iklim-app-01` | `gitea-act-runner` | `ubuntu-latest`, `ubuntu-22.04`, `ubuntu-20.04`, `test-runner` |
|
||
|
||
## 1. Runner Kullanıcısı ve Yetkiler
|
||
|
||
Runner, host üzerinde Docker komutlarını çalıştırabilmelidir.
|
||
|
||
```bash
|
||
# Kullanıcıyı oluştur
|
||
sudo useradd -m -s /bin/bash gitea-runner
|
||
# Docker grubuna ekle
|
||
sudo usermod -aG docker gitea-runner
|
||
```
|
||
|
||
## 2. act_runner Kurulumu
|
||
|
||
### Kurulum
|
||
|
||
Kurulum ve kayıt Ansible ile otomatik yapılır (`test-app-post-stack.yml`). Manuel kurulum gerekirse:
|
||
|
||
```bash
|
||
wget -O act_runner https://dl.gitea.com/act_runner/0.2.12/act_runner-0.2.12-linux-amd64
|
||
sudo mv act_runner /usr/local/bin/
|
||
sudo chmod +x /usr/local/bin/act_runner
|
||
```
|
||
|
||
### Kayıt (Registration)
|
||
|
||
Gitea arayüzünden (Organization → Settings → Actions → Runners) **Registration Token** alın, vault'a ekleyin:
|
||
|
||
```yaml
|
||
# group_vars/all/vault.yml
|
||
vault_gitea_runner_token: "<TOKEN>"
|
||
```
|
||
|
||
```bash
|
||
cd Environment_Infrastructure/ansible/test
|
||
ansible-playbook test-app-post-stack.yml --vault-password-file=.vault_pass
|
||
```
|
||
|
||
## 3. Systemd Servisi ve Konfigürasyon
|
||
|
||
Ansible tarafından yönetilir. Servis dosyası `/etc/systemd/system/gitea-act-runner.service`, konfigürasyon `/etc/gitea-act-runner/config.yaml` konumundadır.
|
||
|
||
Konfigürasyonun kritik bölümleri:
|
||
|
||
```yaml
|
||
runner:
|
||
labels:
|
||
- "ubuntu-latest:docker://ubuntu:latest"
|
||
- "ubuntu-22.04:docker://ubuntu:22.04"
|
||
- "ubuntu-20.04:docker://ubuntu:20.04"
|
||
- "test-runner:docker://ubuntu:22.04"
|
||
|
||
container:
|
||
network: "iklimco-net" # DB servislerine overlay üzerinden erişim
|
||
options: "-v /var/run/docker.sock:/var/run/docker.sock" # Docker komutları için
|
||
```
|
||
|
||
Durum kontrolü:
|
||
```bash
|
||
sudo systemctl status gitea-act-runner
|
||
sudo journalctl -u gitea-act-runner -f
|
||
```
|
||
|
||
## 4. Deploy Ön Koşulları
|
||
|
||
Pipeline'ın `iklim-app-01` üzerinde başarılı deploy yapabilmesi için şu araçların kurulu olması şarttır:
|
||
- `docker-ce` ve `docker-compose-plugin`
|
||
- `gettext` (`envsubst` komutu için)
|
||
- `jq`
|
||
- `git`
|
||
|
||
## 5. Gitea Organization Secrets
|
||
|
||
Pipeline'ların çalışması için Gitea Organization seviyesinde şu secret'lar tanımlanmalıdır:
|
||
|
||
| Secret | Açıklama |
|
||
| --- | --- |
|
||
| `STORAGEBOX_SSH_PRIV` | StorageBox SSH private key |
|
||
| `STORAGEBOX_SSH_PUB` | StorageBox SSH public key |
|
||
| `HARBOR_CI_TOKEN` | `robot-ci-push-iklimco` robot hesabı token'ı (build + push) |
|
||
| `HARBOR_PULL_TOKEN` | `robot-swarm-pull-iklimco` robot hesabı token'ı (Swarm deploy pull) |
|
||
| `REPO_ACCESS_TOKEN` | Gitea private repo erişimi (BE-Commons vb. checkout) |
|
||
|
||
## 6. Custom Image Build ve Harbor Push
|
||
|
||
`docker-stack-infra.yml` ve mikroservis stack'leri `registry.tarla.io/iklimco/` altındaki özel image'leri kullanır. Bu image'ler `ops/push-harbor-custom-images.sh` scripti ile build edilip registry'ye push edilir.
|
||
|
||
APISIX config dosyaları (`build/apisix-core/config.yaml`, `build/apisix-dashboard/conf.yaml`) `template/` altındaki şablonlardan `envsubst` ile üretilir. Bu üretimi `push-harbor-custom-images.sh` kendi içinde yapar; build bitince geçici dosyalar otomatik temizlenir.
|
||
|
||
**Tasarım notu:** APISIX admin key image'a bake edilmez. Template'de `${{APISIX_ADMIN_KEY}}` (çift süslü parantez) kullanılır; APISIX bunu container başlarken Docker service ortam değişkeninden okur. Böylece tek image hem test hem prod için kullanılabilir.
|
||
|
||
### Adımlar
|
||
|
||
```bash
|
||
# 1. Harbor'a login ol
|
||
docker login registry.tarla.io -u robot-ci-push-iklimco
|
||
|
||
# 2. Image'leri build edip push et (env'leri ve config dosyalarını script kendi üretir)
|
||
bash ops/push-harbor-custom-images.sh
|
||
```
|
||
|
||
## Kabul Kriterleri
|
||
|
||
1. Gitea Runners sayfasında `iklim-test-app` runner'ı **Idle** (yeşil) görünür.
|
||
2. `runs-on: test-runner` kullanan bir workflow başarıyla tetiklenir.
|
||
3. Job container'ı Docker daemon'a ve `iklimco-net` overlay network'üne erişebilir.
|
||
4. `8200/tcp` (Vault) portu public internete kapalıdır.
|
||
5. `registry.tarla.io/iklimco/custom-apisix`, `custom-apisix-dashboard`, `custom-prometheus` image'leri Harbor'da mevcut ve çekilebilir durumda.
|