Jenkins Kurulumu: Docker ve JCasC ile Otomatik Jenkins Kurulumu
Bu Rehberde Ne Öğreneceksiniz?
Manuel Jenkins kurulumları zaman alıcıdır ve hataya açıktır.
Bu rehberde Docker ve Jenkins Configuration as Code (JCasC) kullanarak Jenkins kurulumunu ve yapılandırmasını tamamen kod tabanlı hale getirmeyi öğreneceksiniz.
Rehber sonunda:
- Kurulum sihirbazı devre dışı bırakılmış,
- Gerekli eklentileri otomatik yüklenen,
- Kullanıcı ve yetkilendirmesi tanımlanmış,
- Güvenliği yapılandırılmış
bir Jenkins sunucusuna sahip olacaksınız.
Ön Hazırlıklar
Başlamadan önce aşağıdaki gereksinimlerin karşılanması gerekir:
- En az 2 GB RAM içeren bir sanal sunucu (VDS)
- Sunucu üzerinde Docker kurulu olması
- SSH erişimi
Not: Örneklerde
tr1-node01.rabisu.cloudveyalocalhostkullanılmıştır.
1️⃣ Kurulum Sihirbazını Devre Dışı Bırakmak
Jenkins varsayılan olarak ilk açılışta bir kurulum sihirbazı çalıştırır.
Otomasyon için bu sihirbazın devre dışı bırakılması gerekir.
mkdir -p $HOME/projeler/jcasc
cd $HOME/projeler/jcasc
- Bu komutlar Jenkins yapılandırması için çalışma dizini oluşturur.
FROM jenkins/jenkins:latest
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
- Bu ayar Jenkins kurulum sihirbazını kalıcı olarak kapatır.
docker build -t jenkins:jcasc .
- Bu komut özel Jenkins Docker imajını oluşturur.
docker run --name jenkins --rm -p 8080:8080 jenkins:jcasc
- Jenkins 8080 portu üzerinden çalıştırılır.
2️⃣ Gerekli Jenkins Eklentilerini Otomatik Yüklemek
- Jenkins Configuration as Code kullanılabilmesi için gerekli eklentiler imaj aşamasında yüklenir.
ant:latest
configuration-as-code:latest
git:latest
matrix-auth:latest
workflow-aggregator:latest
authorize-project:latest
- Bu liste:
-
JCasC yapılandırmasını,
-
Yetkilendirme mekanizmalarını,
-
Pipeline altyapısını sağlar.
COPY plugins.txt /usr/share/jenkins/ref/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/ref/plugins.txt
- Bu adım Jenkins eklentilerinin otomatik kurulmasını sağlar.
3️⃣ Jenkins URL Yapılandırması
- Jenkins sistem URL’sinin tanımlanması gerekir.
unclassified:
location:
url: http://tr1-node01.rabisu.cloud:8080/
- Bu yapılandırma Jenkins’in kendi adresini bilmesini sağlar.
ENV CASC_JENKINS_CONFIG /var/jenkins_home/casc.yaml
COPY casc.yaml /var/jenkins_home/casc.yaml
- Bu ayar JCasC dosyasının Jenkins tarafından okunmasını sağlar.
4️⃣ Güvenli Admin Kullanıcısı Oluşturma
- Kullanıcı bilgileri yapılandırma dosyasına yazılmaz.
- Bunun yerine ortam değişkenleri kullanılır.
jenkins:
securityRealm:
local:
allowsSignup: false
users:
- id: ${JENKINS_ADMIN_ID}
password: ${JENKINS_ADMIN_PASSWORD}
- Bu yapı admin kullanıcısını güvenli şekilde oluşturur.
docker run --rm -p 8080:8080 \
--env JENKINS_ADMIN_ID=admin \
--env JENKINS_ADMIN_PASSWORD=GizliSifre123 \
jenkins:jcasc
5️⃣ Yetkilendirme ve Güvenlik Yapılandırması
- Yetkilendirme ve build güvenliği JCasC ile tanımlanır.
authorizationStrategy:
globalMatrix:
permissions:
- "Overall/Administer:admin"
- "Overall/Read:authenticated"
security:
queueItemAuthenticator:
authenticators:
- global:
strategy: triggeringUsersAuthorizationStrategy
jenkins:
remotingSecurity:
enabled: true
- Bu yapılandırma ne sağlar?
-
Admin kullanıcısına tam yetki
-
Giriş yapmış kullanıcılara okuma izni
-
Build işlemlerinin tetikleyen kullanıcı yetkisiyle çalışması
-
Agent–Controller iletişiminin güvenli hale gelmesi
❓ Sıkça Sorulan Sorular (SSS)
1. Jenkins verileri kalıcı mı?
Hayır. --rm kullanıldığı için konteyner durunca veriler silinir. Kalıcılık için volume eklenmelidir.
-v jenkins_home:/var/jenkins_home
2. Plugin sürümleri sabitlenmeli mi? Production ortamlarında sürüm sabitlemek önerilir.
3. Kubernetes ortamında kullanılabilir mi? Evet. Bu Docker imajı Kubernetes ile uyumludur.
Sonuç
Bu rehber ile Jenkins kurulumu:
Kodla yönetilebilir,
Güvenli,
Taşınabilir,
Tekrar edilebilir
hale getirilmiştir.
Bu yapılandırmayı Rabisu Bulut altyapısındaki yüksek performanslı VDS sunucularında kullanarak CI/CD süreçlerinizi profesyonel seviyeye taşıyabilirsiniz.