Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tip
Kısa yanıt: Hızlı iskele oluşturmak için Kompose , daha geniş modernleştirme için Move2Kube , Docker Desktop kullanıyorsanız Docker Compose Köprüsü ve çalışan kapsayıcılardan veya podlardan dışarı aktarmak için Podman kullanın. Ardından sonuçları Helm veya Kustomize ile paketleyin ve Skaffold veya Tilt ile yineleyin.
En iyi araçlar: Kompose, Move2Kube, Docker Compose Bridge, Podman, Helm, Kustomize, Skaffold, Tilt ve AI destekli dönüştürme.
Bu öğreticide, Kubernetes'te kullanmak üzere çoklu kapsayıcılı uygulama hazırlarsınız. İster yeni bir örnek uygulamayla başlarken ister Docker Compose kavramlarını Azure Kubernetes Service (AKS) geçirmeyi planladığınız bir uygulama için uyarlarken bu öğreticiyi kullanabilirsiniz. Uygulamayı yerel olarak derlemek ve test etmek için Docker Compose gibi mevcut geliştirme araçlarını kullanırsınız. Şunları yapmayı öğreneceksiniz:
- GitHub örnek uygulama kaynağını kopyalayın.
- Örnek uygulama kaynağından bir kapsayıcı görüntüsü oluşturun.
- Çok kapsayıcılı uygulamayı yerel bir Docker ortamında test edin.
Important
Yeni mi başlıyorsunuz? Aks için örnek bir uygulama hazırlamak ve test etmek için bu öğreticiyi kullanın. Docker Compose'u zaten kullanıyor musunuz? Daha geniş planlama yönergeleri için Docker Compose'u Kubernetes'e geçirmek için Kubernetes belgelerine ve AKS geçişine genel bakış'a bakın.
Tamamlandıktan sonra, aşağıdaki uygulama yerel geliştirme ortamınızda çalışacaktır:
Sonraki öğreticilerde, konteyner görselini bir Azure Container Registry (ACR) yükleyip ardından bir AKS kümesine dağıtacaksınız.
Başlamadan önce
Bu öğreticide kapsayıcılar, kapsayıcı görüntüleri ve docker komutları gibi temel Docker kavramları hakkında bilgi sahibi olduğunuz varsayılmıştır. Kapsayıcı temelleri hakkında bilgi için bkz. Docker ile çalışmaya başlama.
Bu öğreticiyi tamamlamak için Linux kapsayıcılarını çalıştıran yerel bir Docker geliştirme ortamı gerekir. Docker, Docker'ı Mac, Windows veya Linux sisteminde yapılandıran paketler sağlar.
Not
Azure Cloud Shell, bu öğreticilerdeki her adımı tamamlamak için gereken Docker bileşenlerini içermez. Bu yüzden, eksiksiz bir Docker geliştirme ortamı kullanmanızı öneririz.
Uygulama kodunu alma
Bu öğreticide kullanılan sample uygulaması aşağıdaki Kubernetes dağıtımları ve hizmetlerini içeren temel bir mağaza ön uygulamasıdır:
- Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
- Ürün hizmeti: Ürün bilgilerini gösterir.
- Sipariş hizmeti: Sipariş verir.
- RabbitMQ: Sipariş kuyruğu için ileti kuyruğu.
Bilgisayarınızda bir dizin oluşturun ve Bash gibi terminal oturumunuzda bu dizine geçin. Bu örnekte demorepo adlı bir dizin kullanılır, ancak istediğiniz adı kullanabilirsiniz.
mkdir demorepo cd demorepoÖrnek uygulamayı geliştirme ortamınıza kopyalamak için git kullanın.
git clone https://github.com/Azure-Samples/aks-store-demo.gitKopyalanan dizine geçin.
cd aks-store-demo
Docker Compose dosyasını gözden geçirme
Bu öğreticide oluşturduğunuz örnek uygulama, kopyaladığınız repositorydocker-compose-quickstart YAML dosyasını kullanır.
Aşağıdaki tabloda, öğreticinin hangi hizmetleri, bağlantı noktalarını ve bağımlılıkları kullandığını hızla görebilmeniz için örnek Compose dosyasındaki temel varsayılanlar özetlenmektedir:
| Service | Kaynak | Açık bağlantı noktası | Anahtar ayarları |
|---|---|---|---|
| RabbitMQ |
rabbitmq:4.3.2-management-alpine Görüntü |
15672, 5672 |
Varsayılan kullanıcı adı username, parola password |
| Sipariş hizmeti | src/order-service |
3000 |
5672 bağlantı noktasından RabbitMQ’ye bağlanır ve orders kuyruğunu kullanır |
| Ürün hizmeti | src/product-service |
3002 |
Kullanır AI_SERVICE_URL=http://ai-service:5001/ |
| Ön mağaza | src/store-front |
8080 |
Ürün servisini 3002 üzerinde, sipariş servisini 3000 üzerinde çağırır |
services:
rabbitmq:
image: rabbitmq:4.3.2-management-alpine
container_name: 'rabbitmq'
restart: always
environment:
- "RABBITMQ_DEFAULT_USER=username"
- "RABBITMQ_DEFAULT_PASS=password"
ports:
- 15672:15672
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
networks:
- backend_services
order-service:
build: src/order-service
container_name: 'order-service'
restart: always
ports:
- 3000:3000
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- ORDER_QUEUE_HOSTNAME=rabbitmq
- ORDER_QUEUE_PORT=5672
- ORDER_QUEUE_USERNAME=username
- ORDER_QUEUE_PASSWORD=password
- ORDER_QUEUE_NAME=orders
networks:
- backend_services
depends_on:
rabbitmq:
condition: service_healthy
product-service:
build: src/product-service
container_name: 'product-service'
restart: always
ports:
- 3002:3002
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- AI_SERVICE_URL=http://ai-service:5001/
networks:
- backend_services
store-front:
build: src/store-front
container_name: 'store-front'
restart: always
ports:
- 8080:8080
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
- VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
networks:
- backend_services
depends_on:
- product-service
- order-service
networks:
backend_services:
driver: bridge
Kapsayıcı görüntüleri oluşturma ve uygulamayı çalıştırma
Kapsayıcı görüntüleri oluşturmayı ve çok kapsayıcılı uygulamaların dağıtımını otomatikleştirmek için Docker Compose'u kullanabilirsiniz.
Aşağıdaki komutları çalıştırmadan önce Docker'ın Linux kapsayıcı modunda çalıştığından emin olun.
Klonlanan
aks-store-demodeposunun kök dizininden kapsayıcı imajını oluşturun, RabbitMQ imajını indirin ve uygulamayıdocker composekomutunu kullanarak başlatın:docker compose -f docker-compose-quickstart.yml up -dkomutunu kullanarak
docker imagesoluşturulan görüntüleri görüntüleyin.docker imagesAşağıdaki daraltılmış örnek çıktı, oluşturulan görüntüleri gösterir:
REPOSITORY TAG IMAGE ID aks-store-demo-product-service latest 72f5cd7e6b84 aks-store-demo-order-service latest 54ad5de546f9 aks-store-demo-store-front latest 1125f85632ae ...docker pskomutunu kullanarak çalışan kapsayıcıları görüntüleyin.docker psAşağıdaki özetlenmiş örnek çıktıda dört çalışan kapsayıcı gösterilmektedir.
CONTAINER ID IMAGE f27fe74cfd0a aks-store-demo-product-service df1eaa137885 aks-store-demo-order-service b3ce9e496e96 aks-store-demo-store-front 31df28627ffa rabbitmq:4.3.2-management-alpine
Uygulamayı yerel olarak test etme
Çalışan uygulamanızı görmek için yerel bir web tarayıcısında adresine gidin http://localhost:8080 . Örnek uygulama aşağıdaki örnekte gösterilen şekilde yüklenir:
Bu sayfada, ürünleri görüntüleyebilir, sepetinize ekleyebilir ve ardından bir sipariş vekleyebilirsiniz.
Kendi Compose dosyalarınızı taşıyın
Docker Compose dosyasında tanımlanmış bir uygulamanız varsa, yerel doğrulama için başvuru olarak bu öğreticiyi kullanabilir ve ardından mevcut Compose yapılandırmanızı Kubernetes bildirimlerine dönüştürebilirsiniz. Docker Compose tanımlarını Kubernetes kaynaklarına dönüştürmek için Kompose, Move2Kube, Docker Compose Bridge veya Podman gibi araçları kullanın. Tam uçtan uca dönüştürme yolu için Docker Compose'u Kubernetes'e geçirmek için Kubernetes belgelerine ve başka bir düzenleyiciden veya modernleştirme iş akışından geçiş yapıyorsanız AKS geçişine genel bakış bölümüne bakın.
Dönüştürme aracı seçme
En yaygın Compose-to-Kubernetes seçeneklerinin hızlı bir karşılaştırmasına ihtiyacınız olduğunda bu tabloyu kullanın.
| Araç | Tek satırlık özet |
|---|---|
| Kompose | Hızlı Compose'tan Kubernetes'e iskelet; run kompose convert; depolama ve problar için elle temizleme gerekeceğini göz önünde bulundurun. |
| Move2Kube | Daha kapsamlı bir modernleştirme iş akışı; move2kube plan -s ./path && move2kube transform çalıştırmayı gerektirir; tek dosyalı dönüştürücülerden daha ağır. |
| Docker Compose Köprüsü | Docker Desktop odaklı dönüştürme yolu; komutunu çalıştırın docker compose bridge convert -o ./k8s/; geçerli destek ayrıntıları için bkz. Docker belgeleri. |
| Podman | Çalışan kapsayıcılardan veya pod'lardan YAML’yi dışa aktarın; podman kube generate mypod > k8s.yaml çalıştırın; Podman tabanlı iş akışları için en uygunudur. |
| Helm | Yinelenen dağıtımlar için şablon ve paket bildirimleri; helm create mychart komutunu çalıştırın; dönüştürmeden sonra en iyi sonucu verir. |
| Kustomize | Ortama özgü değişiklikleri uygulayın; kubectl apply -k . komutunu çalıştırın; en iyi dönüştürmeden sonra uygulanır. |
| Skaffold | Kubernetes iç geliştirme döngüsü oluşturun; skaffold init çalıştırın; doğrudan bir dönüştürücü değildir. |
| Eğim | Yerel Kubernetes geliştirmesini anlık güncellemeyle sürdürün; tilt up çalıştırın; Kubernetes odaklı bir iş akışı gerektirir. |
| Yapay zeka destekli dönüştürme | Bildirimleri yapay zeka ile taslak olarak hazırlayın veya karşılaştırın, ardından dağıtımdan önce çıkışı doğrulayın. |
Hangi aracı seçmeliyim?
- Hızlı bir kavram kanıtı veya başlangıç bildirimleri istiyorsanız , Kompose kullanın.
- Docker Desktop kullanıyorsanız ve Docker yerel yolu istiyorsanız Docker Compose Köprüsü'nü kullanın.
- Çok hizmetli geçiş veya modernleştirme çabanız daha büyükse Move2Kube kullanın.
- Çalışan kapsayıcılardan veya podlardan dışarı aktarmak istiyorsanız Podman'ı kullanın.
- Bildirimleriniz zaten varsa ve paketlemeye veya katmana ihtiyacınız varsa Helm veya Kustomize kullanın.
- Dönüştürmeden sonra yerel bir Kubernetes geliştirme döngüsüne ihtiyacınız varsa Skaffold veya Tilt kullanın.
- Taslak bildirimleri veya geçiş açıklamalarını istiyorsanız, yapay zeka yardımını kullanın ve sonucu resmi Kubernetes ve AKS kılavuzuna göre doğrulayın.
Dikkate alınması gereken diğer araçlar:
- 8gwifi.org Kubernetes YAML Dönüştürücüsü: Küçük Compose dosyalarıyla hızlı çevrimiçi denemeler için kullanışlıdır.
- Okteto: Uygulama ekipleri için bulut veya uzak Kubernetes geliştirme döngüsü istediğinizde kullanışlıdır.
- Devtron: Dönüştürme sonrasında Kubernetes teslimi etrafında bir platform iş akışı istediğinizde kullanışlıdır.
- Portainer: Kullanıcı arabirimi tabanlı bir kapsayıcı ve Kubernetes yönetim deneyimi istediğinizde kullanışlıdır.
Compose dosyalarınızı dönüştürün
Başlangıç noktası olarak aşağıdaki kopyalanabilir komutları kullanın:
kompose convert
move2kube plan -s ./path && move2kube transform
docker compose bridge convert -o ./k8s/
podman kube generate mypod > k8s.yaml
skaffold init
Kompose dönüştürme örneği
Açık kaynak Kompose aracı, yaygın Docker Compose ayarlarını Dağıtımlar ve Hizmetler gibi Kubernetes nesnelerine dönüştürür.
Windows'da, aşağıdaki komutla Kompose'u yükleyin:
curl -L https://github.com/kubernetes/kompose/releases/latest/download/kompose-windows-amd64.exe -o kompose.exeDiğer yükleme seçenekleri için Bkz. Kompose yükleme yönergeleri.
Dosyanızı
docker-compose.ymliçeren dizinden Kompose'u çalıştırın.kompose convertOluşturulan Kubernetes YAML dosyalarını AKS'ye dağıtmadan önce gözden geçirin.
Yapay zeka destekli dönüştürme
Bir yapay zeka yardımcısı kullanarak Kubernetes bildirimlerini taslağı oluşturabilir, Oluşturma ayarlarını Kubernetes eşdeğerleriyle karşılaştırabilir veya dönüştürmenin neden el ile değişikliklere ihtiyacı olduğunu açıklayabilirsiniz.
Genel örnek komut:
Convert this docker-compose.yml into production-ready Kubernetes manifests. Use Apps/v1, move secrets to Kubernetes Secret objects, map local volumes to PersistentVolumeClaims, and add readiness and liveness probes for the web service.
AKS’ye yönelik örnek istem:
Convert this docker-compose.yml into AKS-ready Kubernetes manifests. Target an AKS cluster, push images to Azure Container Registry, use Apps/v1 objects, move secrets to Kubernetes Secret objects, map local volumes to Azure Files or Azure Disks-backed PersistentVolumeClaims, and add readiness and liveness probes for the web service.
Her zaman yapay zeka çıktısını uygulamadan önce gözden geçirin.
apiVersion Değerleri, kaynak isteklerini ve sınırlarını, depolama sınıflarını, hizmetlerin dışa açılmasını ve sağlık yoklamalarını doğrulayın.
Yaygın çeviri sorunlarını işleme
Birimler nasıl işlenir?
Compose volumes genellikle Kubernetes kalıcı birimlerine ve bir depolama sınıfına ihtiyaç duyar. AKS'de, yalnızca yerel bağlamaları Azure Disks veya Azure Dosyalar gibi hizmetlerle değiştirin.
depends_on yerine ne geçer?
Compose depends_on, Kubernetes'te çalışma zamanı hazırlığını zorlamaz. Bunu gerektiğinde hazır bulunuşluk yoklamaları, başlatma yoklamaları veya başlatma kapsayıcısı mantığı ile değiştirin.
Gizli bilgileri ve ortam değişkenlerini nasıl ele almalıyım?
Compose ortam değerleri genellikle Kubernetes ConfigMap veya Secret kaynaklarına ya da Azure Key Vault tümleştirmelerine dönüşür.
Bağlantı noktalarına ve girişe ne olur?
ports Uygulamayı nasıl yayımladığınıza bağlı olarak Kubernetes Service nesneleriyle ve bazen giriş veya Ağ Geçidi API'si kaynaklarıyla eşleme oluşturun.
Durum denetimleri nasıl çevrilir?
Compose healthcheck ayarları genellikle Kubernetes liveness ve readiness problarına dönüşür.
Compose ağlarına ne olur?
Compose ağları genellikle özel köprü ağları yerine Service'ler ve küme DNS'i üzerinden Kubernetes hizmet keşfine karşılık gelir.
Kubernetes ile yerel olarak nasıl test ederim?
Dönüştürme işleminden sonra oluşturulan bildirimleri kind veya minikube gibi yerel bir Kubernetes ortamına dağıtın, ardından daha hızlı bir edit-build-deploy döngüsü istiyorsanız Skaffold veya Tilt kullanın.
Dönüştürmeden sonra AKS'ye özgü ayarlamaları uygulama
Kompose size bir başlangıç noktası sağlar, ancak genellikle AKS için el ile değişiklikler yapmanız gerekir:
- Görüntü başvurularını Azure Container Registry’ye (ACR) işaret edecek şekilde güncelleştirin.
- İş yükü gereksinimlerinize bağlı olarak, yalnızca yerel depolamayı ve bind mount'ları Azure Disks veya Azure Dosyalar gibi kalıcı depolama ile değiştirin.
- Compose secret’larını veya ortama özgü değerleri Kubernetes Secret’ları, ConfigMap’ler ya da Azure Key Vault tümleştirmeleriyle değiştirin.
- Uygulamayı AKS’de nasıl yayımlamak istediğinize bağlı olarak,
LoadBalancer, ingress veya ağ geçidi yapılandırması gibi ağ oluşturma ve dış erişim ayarlarını gözden geçirin. - Sabit kimliğe veya depolama davranışına ihtiyaç duyduğunuzda, durum bilgisi içeren bileşenlerin Deployment olarak mı kalması gerektiğini, yoksa StatefulSet gibi yapılara mı geçmesi gerektiğini değerlendirin.
-
depends_ongibi Compose davranışları Kubernetes çalışma zamanı davranışına doğrudan karşılık gelmediğinden, kaynak isteklerini, probe'ları ve başlatma sıralamasına ilişkin varsayımları doğrulayın.
Dönüştürme sonrası iş akışı
- Kompose, Move2Kube, Docker Compose Bridge, Podman veya yapay zeka tarafından incelenen bir taslak gibi bir araçla Compose dosyasını dönüştürün.
- Depolama, gizli bilgiler, hizmetlerin dışa açılması, sağlık denetimleri ve imaj referanslarını düzelterek manifestleri gözden geçirin ve güçlendirin.
- Manifest dosyalarını Helm ile paketleyin veya ortama özgü değişiklikleri Kustomize ile katmanlayın.
- Görüntülerinizi ACR gibi bir kayıt defterine gönderin, ardından GitOps, CI/CD veya doğrudan
kubectliş akışlarıyla dağıtın.
Örnek dizi: kompose convert -> bildirimleri gözden geçirme -> görüntüleri ACR'ye gönderme -> görüntü başvurularını güncelleştirme ->kubectl apply veya helm install.
Kaynakları temizleme
Docker Compose iş akışını izlediyseniz, çalışan kapsayıcıları durdurabilir ve kaldırabilirsiniz.
Kapsayıcı görüntülerini silmeyin çünkü bunları sonraki öğreticide kullanacaksınız. Azure Geliştirici CLI iş akışını izlediyseniz, docker compose down yerine azd down kullanın.
komutunu kullanarak docker compose down kapsayıcı örneklerini ve kaynaklarını durdurun ve kaldırın.
docker compose down
Azure Geliştirici CLI komutları
azd kullandığınızda, manuel kapsayıcı imaj bağımlılıkları yoktur.
azd, Docker'a benzer şekilde, azd up ve azd down komutları ile uygulamalarınızın ve kümelerinizin sağlama, dağıtım ve temizleme işlemlerini gerçekleştirir.
Kümeyi dağıtmadan önce infra bölümündeki azure.yaml'inizde Terraform veya Bicep kullanmak için hazırlık adımlarını özelleştirebilirsiniz. Bu proje varsayılan olarak Terraform kullanır:
infra:
provider: terraform
path: infra/terraform
Sağlayıcıyı Bicep olarak değiştirmek istiyorsanız azure.yaml dosyasını aşağıdaki gibi güncelleştirin:
infra:
provider: bicep
path: infra/bicep
Sonraki adımlar
Azure Komut Satırı Arayüzü (Azure CLI)
Bu öğreticide örnek bir uygulama oluşturdunuz, uygulama için kapsayıcı görüntüleri oluşturdunuz ve uygulamayı test ettiniz. Şunları öğrendiniz:
- GitHub örnek uygulama kaynağını kopyalayın.
- Örnek uygulama kaynağından bir kapsayıcı görüntüsü oluşturun.
- Çok kapsayıcılı uygulamayı yerel bir Docker ortamında test edin.
Sonraki öğreticide, kapsayıcı görüntülerini bir ACR'de depolamayı öğreneceksiniz.
Azure Geliştirici CLI'sı
Bu öğreticide, azd kullanarak örnek bir uygulamayı kopyaladınız. Şunları öğrendiniz:
- GitHub'dan örnek bir
azdşablonu kopyalayın. - Örnek uygulama kaynağından kapsayıcı görüntülerinin nerede kullanıldığını görüntüleyin.
Sonraki öğreticide, kopyaladığınız şablonu kullanarak azd küme oluşturmayı öğreneceksiniz.