WordPress, dünyanın en popüler içerik yönetim sistemlerinden biridir ve Kubernetes, bu sistemi ölçeklenebilir ve yüksek erişilebilir bir şekilde çalıştırmak için mükemmel bir platform sunar. İşte WordPress’in Kubernetes üzerinde nasıl çalıştırılacağına dair adım adım bir rehber:
Kubernetes Ortamının Hazırlanması
WordPress’i Kubernetes üzerinde çalıştırmak için öncelikle bir Kubernetes kümesi oluşturulmalıdır. Bu, genellikle bulut sağlayıcılarının yönettiği Kubernetes hizmetleri (Amazon EKS, Google GKE, Azure AKS vb.) veya yerel bir Kubernetes kümesi kurarak yapılabilir. Bir bulut sağlayıcısı kullanılıyorsa, genellikle sağlayıcının kendi araçları ve belgeleri takip edilerek bir küme oluşturulur.
Docker İmajı Oluşturma
WordPress’in Kubernetes üzerinde çalışabilmesi için öncelikle WordPress uygulamasının bir Docker imajına ihtiyaç vardır. Bu imaj, WordPress’in resmi DockerHub deposundan çekilebilir veya özel bir imaj oluşturulabilir. Özel bir imaj oluşturmak, ekstra PHP modüllerinin veya WordPress eklentilerinin önceden yüklü olması gibi avantajlar sunar:
“`dockerfile
FROM wordpress:latest
RUN apt-get update && apt-get install -y libzip-dev
RUN docker-php-ext-install zip
“`
Bu Docker imajı, WordPress’in temel işlevselliğine ek olarak gerekli PHP modüllerini içerir.
Kubernetes Manifeslerinin Hazırlanması
WordPress’in Kubernetes üzerinde çalıştırılması için birkaç temel Kubernetes kaynak dosyası (manifests) oluşturulmalıdır:
Deployment
Deployment, WordPress uygulamasını çalıştıran podları tanımlar:
“`yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
spec:
replicas: 3
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
– name: wordpress
image: wordpress:latest
env:
– name: WORDPRESS_DB_HOST
value: wordpress-mysql
– name: WORDPRESS_DB_USER
value: wordpress
– name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
ports:
– containerPort: 80
“`
Service
WordPress uygulamasına dışarıdan erişim sağlamak için bir Service oluşturulur:
“`yaml
apiVersion: v1
kind: Service
metadata:
name: wordpress
spec:
selector:
app: wordpress
ports:
– protocol: TCP
port: 80
targetPort: 80
“`
ConfigMap ve Secret
WordPress yapılandırması ve veritabanı bilgileri için ConfigMap ve Secret kaynakları kullanılır:
“`yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: wordpress-config
data:
WORDPRESS_DB_NAME: wordpress
WORDPRESS_TABLE_PREFIX: wp_
—
apiVersion: v1
kind: Secret
metadata:
name: mysql-pass
type: Opaque
data:
password:
“`
Veritabanı Yönetimi
WordPress, bir veritabanına ihtiyaç duyar. Bu, ayrı bir MySQL veya MariaDB pod’u olarak çalıştırılabilir. Kubernetes’te bu, StatefulSet ile yapılır:
“`yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: wordpress-mysql
spec:
serviceName: “mysql”
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
– name: mysql
image: mysql:5.7
env:
– name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
– name: MYSQL_DATABASE
value: wordpress
– name: MYSQL_USER
value: wordpress
– name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-pass
key: password
ports:
– containerPort: 3306
volumeMounts:
– name: data
mountPath: /var/lib/mysql
volumeClaimTemplates:
– metadata:
name: data
spec:
accessModes: [“ReadWriteOnce”]
resources:
requests:
storage: 20Gi
“`
Persistent Volume Claims (PVC)
WordPress ve MySQL, verileri kalıcı olarak saklamak için Persistent Volumes kullanır. Bu, verilerin podların yeniden başlatılması durumunda korunmasını sağlar.
WordPress Yükleme ve Konfigürasyon
WordPress’in ilk kurulumu, Kubernetes üzerinde biraz daha karmaşık olabilir. Bir LoadBalancer veya Ingress kullanarak WordPress’e dışarıdan erişim sağlandıktan sonra, normal WordPress kurulumu yapılır. Veritabanı bilgileri, daha önce oluşturulan Secret ve ConfigMap’lerden çekilir.
Güncellemeler ve Ölçeklendirme
Kubernetes’in otomatik ölçeklendirme özelliği, WordPress sitelerinin yoğun trafik zamanlarında performansını korumasına yardımcı olur. Ayrıca, Kubernetes’in rolling updates özelliği ile WordPress uygulaması sorunsuz bir şekilde güncellenebilir.
İzleme ve Loglama
Kubernetes üzerinde WordPress çalıştırırken, uygulamanın durumu ve performansını izlemek önemlidir. Prometheus, Grafana gibi araçlarla Kubernetes üzerindeki WordPress uygulamaları izlenebilir ve loglar toplanabilir.
Güvenlik
WordPress’in Kubernetes üzerinde çalışması, güvenlik açısından ekstra dikkat gerektirir. Pod güvenlik politikaları, Ingress denetleyicileri ve Secret yönetimi gibi konulara dikkat edilmelidir.
Bu adımlar, WordPress’in Kubernetes üzerinde nasıl çalıştırılacağına dair temel bir rehber sunar. Her adım, özel gereksinimlere göre uyarlanabilir ve genişletilebilir.