Page 52 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 52
52 | CI/CD Süreç Yönetimi
4.4. Dağıtım (Deploy)
Uygulamaların dağıtımında kubernetes tercih edilmektedir. Kubernetes YAML formatında yazılan
nesne tanımlamalarını kullanır. Deployment olarak tanımlanan Kubernetes nesnesi, CD pipeline’ında
en aktif nesnedir. Örnekte bir uygulamanın Deployment nesnesi için YAML tanımlamaları vardır.
GitOps yaklaşımına göre bu tanımlamalar bir Git deposunda tutulmaktadır. ArgoCD Git deposundaki
değişiklikleri otomatik olarak çeker ve Kubernetes’teki çalışan tanımlarla karşılaştırır. Eğer bir
değişiklik varsa, bunu bildirim olarak gösterir. ArgoCD üzerinde yapılan ayara göre, çalışan tanımlar
güncellenir ve eğer tanımda imaj değişikliği varsa Kubernetes sistemi imajı, imaj deposundan çeker
ve yeniden kurar. Yeni konteyner sorunsuz şekilde ayağa kalktıktan sonra eski versiyonlu uygulama
konteyneri kapatılır. Uygulama yeni versiyonu ile sunulmuş olur. Uygulamanın sunulması için birden
fazla yöntem vardır. Bir yöntemlerden bir tanesi aşağıdaki örnek tanımlaması olası olan Service
nesnesi kullanmaktır. Service tanımlaması ile uygulama 8080 portundan dışarı açılmış olur.
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app
namespace: default
labels:
name: demo-app
spec:
replicas: 2
selector:
matchLabels:
app: demo-app
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: demo-app-pod
image: yte.bilgem.gov.tr:9092/docker-images/demo-app:v1.0
ports:
- containerPort: 8080
—--
apiVersion: v1
kind: Service
metadata:
namespace: default
labels:
visualize: “true”
name: demo-app-service
spec:
selector:
app: demo-app
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
type: NodePort