Azure Kubernetes Service kümenize uygulama dağıtma
- 10 dakika
Şirketiniz, bulut tabanlı video işleme hizmetinizi dağıtmanın yollarını arıyor. Buluta özel geliştirme platformunuz olarak Azure Kubernetes Service'i (AKS) seçtiniz. Küme yapılandırıldıktan sonra, video işleme uygulamanızdaki bileşenlerden birini dağıtmaya hazır olursunuz. Kubernetes dağıtım sürecini incelemek için şirketinizin web sitesinin statik bir sürümünü dağıtmaya karar verdiniz.
Kubernetes’in dağıtım yolu üzerinde durmadan önce benzer bir uygulamayı Kubernetes olmayan ortamlara dağıtırken izlediğiniz adımlardan bazılarını gözden geçirelim.
Hedef platformunuz olarak Azure sanal makinesi (VM) kullandığınızı varsayalım. İlk adım sunucu yazılımını uygulamayı barındırması için hazırlamaktır. Aşağıdaki görevleri yerine getirin:
- İşletim sistemini yükleme.
- İşletim sistemini en son güvenlik ve yazılım düzeltme ekleriyle güncelleştirdiğinizden emin olma.
- Web sunucusu yazılımını yükleyip yapılandırma.
- Web uygulamasını dağıt.
Müşterilerden gelen talep artışını işlemek için web sitesinin ölçeğini genişletmeye karar vediğinizde her yeni VM için bu işlemi yineleyin.
Alternatif olarak web sitesini Azure Container Instances gibi kapsayıcı tabanlı bir platformda da çalıştırabilirsiniz. Temel sunucu teknolojisi konusunda endişelenmeniz gerekmez, ancak bu stratejiyi el ile kullanmak için çeşitli kapsayıcıları yapılandırmanız ve yönetmeniz gerekir.
Kubernetes ve AKS kapsayıcıları düzenlemenize yardımcı olur. Kubernetes kapsayıcı düzenleme özellikleri kümedeki iş yüklerinin yönetimini kolaylaştırır. Uygulamalarınızı AKS kümesi içinde çalıştırmak için kapsayıcı görüntülerinden oluşturulan kapsayıcıları kullanarak iş yüklerini dağıtırsınız.
Kapsayıcı kayıt defteri nedir?
Kapsayıcı kayıt defteri, kapsayıcı görüntülerini daha sonra dağıtmak üzere güvenli bir şekilde bulutta depolamanıza olanak tanır. Kapsayıcı kayıt defterini, kapsayıcı görüntünüzün çeşitli sürümlerini depolayan bir arşiv olarak düşünebilirsiniz. Depolanan her görüntünün tanımlama için atanan bir etiketi vardır.
Örneğin contoso-website:latest etiketli görüntünün farklı bir sürümü olan contoso-website:v1.0.0 görüntüsüne sahip olabilirsiniz.
Kapsayıcı kayıt defterleri genel veya özel olabilir. Özel kayıt defterleri, görüntülere erişmek ve görüntüleri indirmek için kimlik bilgileri gerektirir ve kapsayıcı görüntülerini depolarken izlediğiniz stratejidir.
Kubernetes yalnızca kapsayıcı kayıt defterinde barındırılan görüntüleri dağıtmanıza izin verir. Normalde özel bir kapsayıcı kayıt defteri oluşturmak, standart AKS dağıtım stratejinizin bir parçasıdır.
Kubernetes podu nedir?
Kubernetes podu , kapsayıcıları ve uygulamaları mantıksal bir yapıda gruplandırır. Bu podlar zeka içermez ve bir veya birden fazla uygulama kapsayıcısından oluşur. Her birinin IP adresi, ağ kuralları ve kullanıma sunulmuş bağlantı noktaları vardır.
Örneğin, contoso-website ile ilgili tüm iş yüklerinde arama yapmak istiyorsanız, app etiketine ve contoso-website değerine sahip podlar için kümeyi sorgularsınız.
Kubernetes dağıtımı nedir?
Kubernetes dağıtımı podların bir evrimidir. Dağıtım, podları ölçeklendirilmesini sağlayan akıllı bir nesneye sarmalar. Karmaşık ağ kurallarını yapılandırmanıza gerek kalmadan uygulamanızı daha fazla yükü desteklemek için kolayca çoğaltabilir ve ölçeklendirebilirsiniz.
Dağıtımlar, kapalı kalma süresine gerek kalmadan yalnızca görüntü etiketini değiştirerek kullanıcıların uygulamaları güncelleştirmesini sağlar. Bir dağıtımı güncelleştirdiğinizde, dağıtım tüm uygulamaları silmek yerine çevrimiçi uygulamaları birer birer kapatır. Ardından bunları en yeni sürümle değiştirir. Bu yönü her dağıtımın kullanılabilirlik üzerinde görünür bir etki yapmadan kendi içinde podları güncelleştirebileceği anlamına gelir.
Kubernetes bildirim dosyaları
Kubernetes bildirim dosyası iş yüklerinizi YAML biçiminde bildirimli olarak açıklamanızı sağlar ve Kubernetes nesne yönetimini basitleştirir.
Bir iş yükünü el ile dağıtmanız gerektiğini düşünün. Çeşitli yönler üzerinde düşünmeli ve bunları yönetmelisiniz. Bir kapsayıcı oluşturmanız, belirli bir düğüm seçmeniz, podda sarmalamanız, podu çalıştırmanız, yürütmesini izlemeniz ve diğer işlemleri yapmanız gerekir.
Bildirim dosyaları, açıklanan iş yükünü oluşturmak ve yönetmek için ihtiyacınız olan tüm bilgileri içerir.
Kubernetes etiketi nedir?
Kubernetes etiketi Kubernetes nesnelerini mantıksal olarak gruplandırmanızı sağlar. Bu etiketler, belirli bir etiket adıyla eşleşen nesneler için sistemin kümeyi sorgulamasını sağlar.
Bildirim dosyasının yapısı
Bildirim dosyasının yapısı, oluşturduğunuz kaynağın türüne bağlı olarak farklılık gösterir. Bununla birlikte bildirim dosyaları ortak yönergeleri paylaşır. Bu yönergeler kullanılacak API’ler ve oluşturulacak iş yükü türü gibi çeşitli yönleri tanımlar.
Tüm bildirim dosyalarının ilk iki girdisinde iki önemli anahtar vardır: apiVersion ve kind. Dağıtım dosyasının bir örneği aşağıda verilmiştir.
apiVersion: apps/v1 # Where in the API it resides
kind: Deployment # The kind of workload we're creating
anahtar, apiVersion dağıttığınız nesneyi yöneten API sunucusu uç noktasını tanımlar.
anahtar, kind bu dağıtımın oluşturduğu iş yükünü tanımlar.
Tüm dosyalar için diğer ortak anahtarlar metadata ve name anahtarlarıdır. Tüm Kubernetes kaynaklarının bir adı olmalıdır . Bu ad metadata anahtarının içine kaydedilir.
apiVersion: apps/v1
kind: Deployment
metadata:
name: contoso-website # This will be the name of the deployment
Dağıtımdaki nesneleri gruplandırma
Podları bulup gruplandırmak için dağıtımlar label kullanır. Dağıtımınızın bildirim dosyasının bir parçası olarak etiketi tanımlarsınız.
Aşağıda bir örnek verilmiştir.
matchLabels tanımı içinde tanımlanan selector değerinin spec tanımına eklendiğine dikkat edin.
# deployment.yaml
# ...
spec:
selector:
matchLabels:
app: contoso-website
# ...
Bu noktadan itibaren, oluşturmak istediğiniz kaynak türüne göre tüm dosyalar farklı yapılara sahiptir.
Dağıtım dosyasını uygulama
Kubernetes dağıtım bildirimi dosyasını kubectl kullanarak dağıtırsınız. Aşağıda komutun bir örneği verilmiştir.
kubectl apply -f ./deployment.yaml