Hibrit Bulut App Geliştirme için Docker Nasıl Kullanılır
Giriş Giriş Giriş
Modern uygulama geliştirme esnekliği, ölçeklenebilirlik ve maliyet-ayaklık gerektirir. Hybrid cloud architectures - kamu bulut hizmetleri ile ilgili özel altyapı - AWS'de bir üretim kümesine veya veri merkezinde bulunan bir CAD için güçlü bir çözüm.Docker, endüstri standardı konteynerleştirme platformu, hibrid bulut geliştirme için kritik bir olanak sağlıyor.
Hibrit Bulut ve Docker
Hibrit bulut, özel bulut kaynaklarının entegrasyonuna atıfta bulunur (topraklar veya tek bir ortamda barındırılan), AWS, Azure veya Google Cloud gibi sağlayıcıların kamu bulut hizmetleri ile ilgili özel altyapıda hassas iş yüklerini ve verileri patlama kapasitesi, analitik veya kurtarma için alırken saklamaya olanak sağlar.
Docker konteyner paketi, bağımlılıkları, kütüphaneleri ve tek bir tek, hayal edilebilir bir sanata yapılandırma ile birlikte bir uygulama paketi paketi.Bu izolasyon, uygulama temel ev sahibi işletim sistemi veya bulut sağlayıcının hemen hemen hemen hemen çalışmasını sağlar.
- [FONT:0)Portability - Yerel olarak geliştirin, herhangi bir buluta veya on-premises sunucusuna değişiklik olmadan dağıtın.
- [FONT:0]Konsistency[[Dönetici:0)[Döneticimde çalışır” – Eliminate “projeksiyonda çalışır” sorunları tam zamanlı ortamına göndererek.
- [FONT:0]Kaynak verimliliği[DÜT:1] – Konteynerler ev sahibi OS çekirdeğini paylaşıyor, sanal makinelere kıyasla yüksek oranda azaltıyor.
- [FONT:0)Rapid dağıtım[[[Dönetici: 1) - Docker görüntüleri bir kez inşa edilebilir ve yüzlerce düğümün üzerinde saniyede birkaç saniye içinde dağıtılabilir.
Docker ile hibrit bulutu birleştirerek, takımlar birleşik bir operasyonel model elde edebilir: özel ve kamusal ortamlarda onları tek bir dizi fotoğraf ve orkestrayı yönetebilir, karmaşıklığı azaltır ve teslimatı hızlandırabilir.
Hibrit Bulut için Up Docker
Yüklemek için
Docker Engine'i geliştirme makineleriniz ve hedef sunucularınız üzerine kurmak. Yerel gelişim için, [[Dönetici:0)Docker Desktop[Dönetici: Windows, Mac ve Linux için kullanılabilir) bir kullanıcı dostu arayüz sağlar.For production Linux servers, install Docker Engine via your distribution's package manager or by followingurFLT:2[Döneticileri)[Döneticileri için kullanılabilir.In cloud virtual makineleri (e.g., AWS EC2, Azure VMs), aynı talimatları kullanın veya yardımcı olun.
- Docker daemon'un çalışmasını ve çizmeyi etkinleştirmesini sağlayın.
- Kullanıcınızı, her komut için (Linux) ►FLT:1'den kaçınmak için ekleyin.
- Yüklemeyi hak edin:2) ve [[DüzDÜye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye/Üye)
Hibrit bulut senaryoları için, konteynerleri çalıştıracak her düğümdeki yüklemeyi tekrarlayın - hem de önceden gelen sunucular ve halk bulut örnekleri.
Docker Images
Her konteyner, bir Docker görüntüsünden başlar, birİLFLT:4 tarafından tanımlanır. Üretim görüntüleri için en iyi uygulamalar küçük temel görüntüler (örneğin, Alp Linux), multi- aşamalı, boyutu azaltmak için inşa eder ve beklenmedik güncellemelerden kaçınmak için açık sürüm oluşturur.
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY package*.json ./
RUN npm ci --only=production
EXPOSE 3000
CMD ["node", "dist/server.js"]
Görüntüyü, ortamı içeren bir tanımlayıcı etiketle inşa edin (örneğin, 03.03.2012)
Bir Kayıt Kayıt ile Görselleri Yönetin
Yapılı görüntülerinizi hem özel hem de halk bulutlarından erişilebilir bir konteyner kayıtlarında saklayın. Seçenekler şunları içerir:
- [FONT:0]Docker Hub[DÜT:1] - Özel havuz planları ile Kamu kayıt.
- [0]Amazon ECR) - AWS IAM ile iyi ulaşılmış erişim kontrolü için entegre edilmiştir.
- [FONT=0) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- [FONT:0)Harbor[DÜT:1) – Açık kaynaklı kayıt, güvenlik tarama ve replikasyon ile ilgili olarak.
Her başarılı inşadan sonra görüntüler: 03.Bölümde hibrit bulut kurulumlarında, replikasyonu destekleyen bir kayıt kullanmayı düşünün (örneğin, Harbor veya ECR haç replikasyonu) geç saatlere kadar geri çekilmeyi gerektirir.
Gemileri işletmek
Bir kayıtta resimlerle, herhangi bir Docker host'da konteynerler çekebilir ve çalıştırabilirsiniz. Temel dağıtım komutları hızla orkestrasyon araçlarına yol açar, ancak basit karma bulut testleri için:
- SSH hedef sunucuya (on-premises veya bulut VM) girilir.
- Kayıt defterinize kayıt: [[Dint: 16.
- Görüntüyü çek: 03.03.2012
- Gerekli çevre değişkenleri, limanları ve hacim hatları ile konteyneri çalıştırın.
docker run -d \
--name myapp-prod \
-p 80:3000 \
-e DB_HOST=private.db.internal \
-e DB_NAME=production \
--restart unless-stopped \
myregistry.io/myapp:v1.2.3
Üretim hibrit dağıtımları için, asla manuel SSH komutlarına güvenmeyin. Bunun yerine, bir sonraki bölümde açıklandığı gibi orkestration ve otomasyon kullanın.
Soykırım Konteynerleri Across Hybrid Clouds
Bireysel konteynerler bir avuç hizmet için yönetilebilir, ancak karma bulut ortamları genellikle planlanan, ölçeklenmiş ve otomatik olarak iyi bir şekilde iyi çalışılmalıdır. İki popüler orkestration platformları Docker ile iyi çalışır:
Docker Swarm
Docker'in yerli kümeleme çözümü, Docker'in tek bir sanal ev sahibine ev sahipliği yapıyor. Swarm, Docker CLI komutlarıyla zaten rahat ve ideal bir takım için ayarlamak için basit. Servis keşif, yuvarlanma güncelleştirmeleri ve her iki giriş ve bulutta düğümler arasında ölçeklendirmek.
- Yöneticide bir batarm ilk olarak hayır: “Ücretsiz”
- Herhangi bir ağdan işçi düğümleri ekleyin ( bulut VM dahil) token: 03.03.2012
- Bir hizmetle işlayın: “Ücret: 15.
Swarm'ın basitliği, daha küçük hibrit bulut dağıtımları için harika bir seçim yapar, ancak Kubernetes'in gelişmiş özelliklerini yoksundur (örneğin CPU, özel kaynak tanımlarına dayanan otomatikleştir).
Kubernetes (K8s)
Kubernetes, konteyner orkestrası için gerçek standart haline geldi, dağıtım, ağ, depolama ve yapılandırma için zenginler sunuyor.For hybrid cloud, Kubernetes kümeleri ve bulut sağlayıcıları kubeadm, Rancher veya yönetilen hizmetler gibi araçları kullanarak yönetebilir (Amazon EKS, Azure AKS, Google GKE).
- Bir kontrol uçağı Node on-premises veya bir bulut bölgesinde oluşturun.
- Diğer bulutlarda veya aynı kümeye kadar çalışan işçilere katılın.
- Kullanım Koşulları:0) Hayır, sadece açık bulutta bulunan ve temiz olmayan web bağlantıları.
- İşi uygulamaları, [[DÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜK, ÂHİR, ÂHİRLİĞİ, ÂHİRLİĞİ, ÂHİRLİĞİ ÂNİN ÂHİRLER.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myregistry.io/myapp:v1.2.3
ports:
- containerPort: 3000
Kubernetes'in esnekliği ve ekosistemi (Helm, Prometheus, Istio) kurumsal hibrit bulut projeleri için uygun hale getirir. [FONTT:0)Konaklama için resmi Kubernetes belgesine ([Dönetici: 1) atıfta bulun.
Hibrit Bulut Docker Deployments
Ağlama, hibrit buluttaki en büyük zorluklardan biridir. Konteynerler, önceden gelen ağ ve bulut sanal ağlarla iletişim kurmak, sık sık sık güvenlik duvarları ve NAT ağ geçitleri içerir:
- [FONT=0)Overlay ağ[Dönetici] - Docker'in Swarm için aşırı sürücü veya Kubernetes CNI eklentileri (Flannel, Calico, Weave) bu sıkışık trafik.
- [FONT=0]VPN / SD-WAN[[Döntilmiş: 1) - Veri merkeziniz ve bulut VPC arasında güvenli bir tünel oluşturun. Birçok bulut sağlayıcı VPN ağ geçidi veya Doğrudan Connect sunar.
- [FONT:0]Hizmet ağ[[Dönetici:0)[[[Dönetici:0))[[[Dönetici:0)))[[[[Döneticiler, Istio veya Konsolos Connect gibi araçlar, karma ağ geçidinde şeffaf mTLS şifreleme, trafik bölmesi ve gözlemlenebilirlik sağlar.
- [FONT=0]DNS tabanlı hizmet keşfi) – Hem Swarm hem de Kubernetes, IP'lere hizmet isimlerini çözen dahili DNS'lere sahiptir. DNS kararlarını sitelerin (örneğin, CoreDNS’yi) kullanarak sağlayın.
Örneğin, alt ağ bağlantılı olup olmadığını doğrudan inter-node routing ile Calico'yu kullanabilir. Alternatif olarak, Flannel gibi aşırı bir aşırı yükleme mevcut VPN'ler üzerinde çalışabilir.
Güvenlik Önergeleri
Güvenlik, birden fazla idari alana doğru hareket ettiğinde çok önemlidir. Hibrit bulutta Docker için Anahtar uygulamalar:
- [FONT:0)Image search[[[Döntgen: 1)[Dönetici:0)[Döntgenlik:))[Dönergeler veya bulut-tabant tarayıcılar (ECR tarama, Azure)
- [FONT=0) Sekreterlik[[Dönetici:0))[Köpekler veya çevre dosyalarında asla sert kodlanmış sırları kullanın.Docker sırları kullanın (Swarm), Kubernetes sırları ( şifreleme ile), veya dış diskler (HashiCorp Vault).
- [FONT:0]Least ayrıcalıkları[[[Dönetici: 1 ) – Tank olmayan kullanıcılar olarak konteynerler kullanın. Mümkün olan sadece kök dosya sistemleri kullanın. K8s'te güvenlik bağlamları uygulayın: [[ENGT:20).
- [FONT=0) {0}Şerefli ağların (Cehenne) veya altta bulunanların (d) veya diğer kişilerin (veya) bir araya gelmeleri için, (geçmiş) bir şekilde, (geçmiş) .
- [FONT:0]Yönetici doğrulama[[Dönetici:0)[[Dönetici:0))[[Dönetici doğrulama[[Dönetici:0)) - Kısa ömürlü jetonlar veya IAM rollerini özellikle bulut kayıtlarından uzaklaştırmak için kullanın.
Daha derin bir dalış için, danışmak:0)Docker güvenlik en iyi uygulamaları ) ve [[Ücretsizler:2)CIS Docker Benchmark[[DÜye Olmayanlar 3 ).
Data Persistence and Storage
Konteynerler tasarım yoluyla ephemeraldir, ancak birçok uygulama (databases, içerik yönetim sistemleri, dosya mağazaları) kalıcı veriler gerektirir.
- [FONT:0]Volumes[[[Dönetici: 1) - Ev sahibi üzerindeki eller tek bir düğüm için iyi, ancak bulutlarda taşınabilir değil. Her iki ortamdan erişilebilir olan uzaktan depolama çözümleri kullanın.
- [FONT:0)Network File Systems (NFS)) – On-premises NAS'dan bulut VM'lere NFS ihracatını Dağı.
- [FONT:0)Cloud-native depolama – AWS EFS, Azure Files veya Google Filestore aynı anda paylaşılan yapılandırma veya medya dosyaları için iyi VPN üzerinden monte edilebilir.
- [FONT:0)Distributed databases[[Döneticiler) – Belirli düğümlere bağlı devletli kümeler ve kalıcı hacimler ile çalışır.Rok (Ceph) veya Portx gibi özel depolama orkestrası için.
Hibrit bulut için, verilerin tüketildiği yere yakın tutulmasını hedefler. Ortak bir model: Bulutta veritabanınızın ereplicaslarını oku, birincil gelen on-premises. Application kapsayıcılar en yakın kopyaya bağlanır.
CI/CD ve Otomasyon
Hibrit bulut gelişimi otomasyonda gelişir. sağlam bir CI/CD boru hatları Docker görüntüleri, testler çalışır, bir kayıt için itir ve her iki özel ve halk bulutları arasında hedef ortamlar (dev, staging, üretim) dağıtılır.
- [FONT:0) Kaynak kontrolü[DÜT:1) - Git boru hattını tetikler.
- [FONT:0)Yap[DÜDÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜN
- [FONT:0)Test[DÜT:1) – Tank ünitesi, entegrasyon ve güvenlik taramaları üretime aynı şekilde yapılır.
- [FONT:0)Yönetici iter[Döncükler)[Döncükler)[Döncükler) – Tag ve sadece testlerden sonra itin.
- [FONT:0]İşçilik[Dönetici:0)) - Swarm ([DÜŞÜNCÜŞÜN) veya Kubernetes ([[DÜŞÜNÜŞÜNÜŞÜNÜŞÜN) ile Automate, Flux (ArgoCD, Flux) for declarative deployments için.
Bir GitLab CI aşaması için örnek parçaları Kubernetes kümesine dağıtılır:
deploy-production:
stage: deploy
image: bitnami/kubectl:latest
script:
- kubectl set image deployment/myapp myapp=$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
- kubectl rollout status deployment/myapp
only:
- tags
Hibrit bulutta, CI/CD koşucunuzun farklı bulutlardaki hem kayıt hem de kümelere gerçekleştirilebilir.
İzleme ve Logging
Hibrit bulut ortamları arasındaki konteyner sağlığının önemi önemlidir. Tüm kümelerden toplanan bir platformda giriş ve ölçümler.
- [FONT=0)Metrics[Döneticiler[Döneticiler ile) konteyner CPU, bellek, ağ için Prometheus (resmiler) için.Use Thanos or VictoriaMetrics for cross-cluster, long-term storage.
- [FONT:0]Logging[[Dönetici: 1) Konteynerler, giriş /str için girişler yayıyor; bir giriş sürücüsü (örneğin, Fluentd, Logstash) bir merkeze (Elasticsearch, Loki, CloudWatch Logs).
- [FONT:0]Tracing[DÜT:1) – Farklı bulutlarda dağıtılan hizmetlerde dağıtık kanallaşma için açık bir temetri.
- [FONT:0]Dashboards[DFLT:1] – Grafana hem isim hem de bulut konteyner performansında gösteren birleşik panjurlar için.
Proaktif uyarı (örneğin, Alertmanager kullanarak) takımların konteynerlerin nerede çalıştırıldığına bakılmaksızın sorunlara hızlı yanıt vermesine yardımcı olur.
En İyi Uygulama Özetleri
Yukarıdaki tartışmalardan başlayarak, burada, Docker'i hibrit bulut uygulamasında kullanmak için en iyi uygulamaların birleştirilmesi listesi:
- [FONT:0) Tek bir orkestrasyon platformuna () standartlaştırın - Ekosistemi ve portability for sağlayıcıları için Kubernetes'i tercih edin.
- [FONT:0) Kod olarak altyapıyı kullanın[[Döneticiler, ağlar ve sürümlerde iş yükleri.
- [FONT=0]Implement GitOps [Dönetici: 1) Gitte istenen devlet tutun; otomatik araçlar senkronize edelim.
- [FONT:0) Tedarik zincirini [Dönetici: 1) Güvenliye Giriş: Sürekli görüntüler, sürekli olarak tarama ve sırları döndürür.
- [FONT=0) Ağ gecikmesi için planlayın[Dönetici:0)[Dönetici:0))[Dönetici için planlamalar.
- [[Düzücük senaryolar erken) test eder – Geliştirme sırasında bulut sınırlarında entegrasyon testleri yürütmek, dağıtımdan sonra değil.
- [FONT:0] Her şeyi izleyin – Merkezileştirilmiş gözlemlenebilirlik farklı bulut davranışlarından ortaya çıkabilecek sorunları tespit etmenize ve teşhis etmenize yardımcı olur.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
Docker, düşünceli orkestra ve otomasyonla birlikte, hibrit bulut uygulama geliştirme için sağlam bir temel sağlar. Uygulamalarınızı konteynerle birleştirerek, özel veri merkezleri ve kamu bulutları arasında aynı sanatifact'ı güvenle dağıtma yeteneği kazanır. Montajdan, güvenlik ve gözlemlenebilirliğe kadar - bu stratejileri ölçeklenebilir, ölçeklenebilir, iş ihtiyaçlarını karşılayabilir.