Installing on Kubernetes (Helm)
Version 1.0.0 · released 21 October 2026
This guide is currently available in Turkish only. Commands, file names and settings are the same in every language; an English version is on the way.
Kubernetes’te self-hosted kurulum: tek bir kurum (tek tenant) için training-api, eğitim paneli ve
Keycloak. Postgres chart içinde (StatefulSet) ya da harici, Valkey chart içinde. Tek sunucu kurulumu: deploy/self-hosted.
Chart her sürümde imajlarla aynı numarayla yayınlanır (oci://egitim-registry.xenopsoftware.com/fleet-egitim/charts/fleet-egitim) ve cosign ile
imzalıdır. İmajlar image.registry deposundan, chart’ın sürümüyle çekilir.
Kurulum
values.yaml (en az):
image:
registry: egitim-registry.xenopsoftware.com/fleet-egitim
imagePullSecrets:
- name: fleet-registry # konsol kimlik bilgisiyle (aşağıda)
hosts:
panel: egitim.firma.com.tr
api: egitim-api.firma.com.tr
auth: egitim-giris.firma.com.tr
tenant:
slug: firma # sonradan değiştirilemez
name: Firma A.Ş.
adminEmail: [email protected]
console: # kurulum kaydıyla verilir
url: https://...
tokenUri: https://...
clientId: ...
ingress:
className: nginx
tlsSecretName: egitim-tls # üç adı kapsayan sertifika
Konsol kimlik bilgileri ve yöneticinin ilk (geçici) parolası values’a yazılmaz, kurulum komutunda verilir:
Chart ve imajlar, konsolun token’ıyla korunan depodadır. Ayrı bir depo hesabı yoktur: kullanıcı adı konsol client
kimliği (console.clientId), parola konsol client secret’ı. Lisans geçerliyken çekilebilir; lisans biterse yeni sürüm
çekilemez, çalışan pod’lar durmaz.
helm registry login egitim-registry.xenopsoftware.com -u <console.clientId>
kubectl create namespace egitim
kubectl -n egitim create secret docker-registry fleet-registry --docker-server=egitim-registry.xenopsoftware.com \
--docker-username=<console.clientId> --docker-password=<konsol client secret'ı>
helm install egitim oci://egitim-registry.xenopsoftware.com/fleet-egitim/charts/fleet-egitim --version <sürüm> -n egitim \
-f values.yaml \
--set-string secrets.values.consoleClientSecret=... \
--set-string secrets.values.consoleLearnerKey=... \
--set-string secrets.values.tenantAdminPassword=...
Diğer parolalar ve anahtarlar ilk kurulumda üretilir ve egitim-secrets’ta tutulur. Yükseltmede korunur,
helm uninstall’da silinmez. Bu secret’ı yedekleyin: training-crypto-secret-key olmadan şifreli alanlar okunamaz.
İlk açılışta Keycloak fleet realm’ini, training-api kurumun tenant’ını ve ilk yöneticisini açar. Servisler birbirini bekler (init container’lar), yeniden başlatma gerekmez.
Hazır secret
Secret’ları kurum kendi aracıyla (External Secrets, Sealed Secrets, Vault) yönetiyorsa secrets.existingSecret: <ad>
verin. Secret şu anahtarları taşımalı:
| Anahtar | İçerik |
|---|---|
console-client-secret |
Konsol kimlik bilgisi (kurulum kaydıyla) |
console-learner-key |
Kursiyer takma kimliği anahtarı; bir kez üretilir, değişmez |
tenant-admin-password |
İlk yöneticinin geçici parolası (isteğe bağlı) |
keycloak-admin-password |
Keycloak yönetim konsolu, kullanıcı admin |
keycloak-backend-client-secret |
training-api’nin Keycloak yönetim hesabı |
training-db-password |
training_app rolü |
keycloak-db-password |
keycloak rolü |
postgres-password |
Chart içi Postgres’in postgres kullanıcısı |
valkey-password |
Valkey |
training-packages-token-secret |
Paket erişim token’ları (HMAC) |
training-crypto-secret-key |
Şifreleme anahtarı, base64 32 bayt (openssl rand -base64 32) |
Harici Postgres
postgres.enabled: false ve externalDatabase.host. Roller ve veritabanları önceden açılır. training_app
superuser olmamalı ve RLS’i atlayamamalı, yoksa training-api açılmaz:
CREATE ROLE training_app LOGIN NOSUPERUSER NOBYPASSRLS PASSWORD '...';
CREATE DATABASE training OWNER training_app;
CREATE ROLE keycloak LOGIN NOSUPERUSER PASSWORD '...';
CREATE DATABASE keycloak OWNER keycloak;
Yükseltme
- Yedek alın:
trainingvekeycloakveritabanları veegitim-secrets. Migration’lar yalnızca ileri yönlüdür. helm upgrade egitim oci://egitim-registry.xenopsoftware.com/fleet-egitim/charts/fleet-egitim --version <yeni sürüm> -n egitim -f values.yaml
Aynı ana sürüm içinde en fazla bir minör sürüm atlanabilir; desteklenmeyen geçişte training-api veritabanına
dokunmadan durur ve önce hangi sürüme geçileceğini loglar. Geri dönüş yedekten yapılır, helm rollback tek başına
yetmez (şema ileri gitmiştir).
İmza doğrulama
cosign verify --key cosign.pub egitim-registry.xenopsoftware.com/fleet-egitim/charts/fleet-egitim@<digest>
Digest’ler ve cosign.pub sürümün release dosyalarındadır (images.txt).