Ana içeriğe geç

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.cloud veya localhost kullanı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​

  1. 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:
  1. JCasC yapılandırmasını,

  2. Yetkilendirme mekanizmalarını,

  3. 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ı​

  1. 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: $&#123;JENKINS_ADMIN_ID&#125;
password: $&#123;JENKINS_ADMIN_PASSWORD&#125;
  • 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ı​

  1. 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?
  1. Admin kullanıcısına tam yetki

  2. Giriş yapmış kullanıcılara okuma izni

  3. Build işlemlerinin tetikleyen kullanıcı yetkisiyle çalışması

  4. 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.