Bridge to Kubernetes’in işleyiş biçimi

Kubernetes'e Köprü, Kubernetes'i hedefleyen mikro hizmet uygulamaları yazmaya yönelik yinelemeli bir geliştirme aracıdır. Kubernetes köprüsü uzantısı Visual Studio ve Visual Studio Code (VS Code) için kullanılabilir.

Kubernetes köprüsü, geliştirme bilgisayarınızda kod çalıştırmanıza ve hata ayıklamanıza olanak tanır. Bu bilgisayar, uygulamanızın veya hizmetlerinizin geri kalanıyla kubernetes kümenize bağlı olmaya devam eder. Birbirine bağlı birçok hizmet ve veritabanına sahip büyük bir mikro hizmet mimariniz varsa, bu bağımlılıkları geliştirme bilgisayarınıza çoğaltmak zor olabilir. Her kod değişikliği için Kubernetes kümenize kod oluşturmak ve dağıtmak yavaş, zaman alıcı ve zor olabilir.

Kubernetes köprüsü, geliştirme bilgisayarınızla kümeniz arasında bir bağlantı oluşturur. Bu yaklaşım, kodunuzu derlemek ve kümenize dağıtmak zorunda kalmanızı önler. Hizmetinizi kümenize bağlı olarak bağlam içinde test edebilir ve geliştirebilirsiniz. Bu yaklaşım, daha fazla Docker veya Kubernetes yapılandırması oluşturmadan hata ayıklamanıza olanak tanır.

Kubernetes köprüsü, bağlı Kubernetes kümeniz ile geliştirme bilgisayarınız arasındaki trafiği yeniden yönlendirir. Kubernetes kümenizdeki yerel kod ve hizmetler aynı Kubernetes kümesinde gibi iletişim kurabilir.

Kubernetes köprüsü, Kubernetes kümenizdeki ortam değişkenlerini ve bağlı birimleri geliştirme bilgisayarınıza çoğaltmanıza olanak tanır. Ortam değişkenlerine ve bağlı birimlere erişim, bu bağımlılıkları çoğaltmak zorunda kalmadan kodunuz üzerinde çalışmanıza olanak tanır.

Gereksinimler

Dekont

Kubernetes köprüsü, Masaüstü Kubernetes kümeleri için Docker ile çalışmaz. Bridge to Kubernetes'i kullanmak için aşağıdaki yapılandırmalardan biri gerekir:

Kubernetes kümenize bağlantı kurmak için Bridge to Kubernetes kullanabilirsiniz. Bu bağlantı, kümedeki mevcut bir poddan gelen ve gelen trafiği geliştirme bilgisayarınıza yönlendirir.

Dekont

Bridge to Kubernetes kullanırken, geliştirme bilgisayarınıza yeniden yönlendirmek için hizmetin adı istenir. Bu seçenek, yeniden yönlendirme için bir pod tanımlamanın kullanışlı bir yoludur. Kubernetes kümeniz ile geliştirme bilgisayarınız arasındaki tüm yeniden yönlendirmeler bir pod içindir. Daha fazla bilgi için bkz . Bir hizmeti kullanılabilir hale getirme.

VS Code'da Bridge to Kubernetes, yerel olarak çalıştırabildiğiniz sürece tüm dilleri destekler. Visual Studio'da, Kubernetes'e Köprü .NET Core'ı destekler. Bridge to Kubernetes, Windows düğümleri desteği gerektirdiği için Visual Studio'da .NET Framework'i desteklemez.

Dikkat

Kubernetes köprüsü yalnızca geliştirme ve test senaryolarında kullanılmak üzere tasarlanmıştır. Üretim kümeleriyle veya etkin kullanımdaki canlı hizmetlerle kullanılmak üzere tasarlanmamış veya desteklenmemektedir.

Geçerli özellikler ve gelecekteki planlar için bkz . Kubernetes Köprüsü yol haritası.

Bağlantı kurma

Bridge to Kubernetes kümenize bir bağlantı kurduğunda aşağıdaki eylemleri gerçekleştirir:

  • Hizmeti kümenizde değiştirecek şekilde yapılandırmanızı, kodunuz için kullanılacak geliştirme bilgisayarınızdaki bağlantı noktasını ve kodunuzun başlatma görevini tek seferlik bir eylem olarak yapılandırmanızı ister.
  • Kümedeki poddaki kapsayıcıyı, trafiği geliştirme bilgisayarınıza yönlendiren bir uzak aracı kapsayıcısıyla değiştirir.
  • Geliştirme bilgisayarınızdan gelen trafiği kümenizde çalışan uzak aracıya iletmek için geliştirme bilgisayarınızda kubectl bağlantı noktası iletmeyi çalıştırır.
  • Uzak aracıyı kullanarak kümenizden ortam bilgilerini toplar. Bu ortam bilgileri ortam değişkenlerini, görünür hizmetleri, birim bağlamalarını ve gizli dizi bağlamalarını içerir.
  • Geliştirme bilgisayarınızdaki hizmetin kümede çalışıyor gibi aynı değişkenlere erişebilmesi için Visual Studio'da ortamı ayarlar.
  • Kümenizdeki hizmetleri geliştirme bilgisayarınızdaki yerel IP adresleriyle eşlemek için konak dosyanızı Güncelleştirmeler. Bu konaklar dosya girişleri, geliştirme bilgisayarınızda çalışan kodun kümenizde çalışan diğer hizmetlere istekte bulunabilmesini sağlar. Konaklar dosyanızı güncelleştirmek için, Kubernetes'e Köprü'nün geliştirme bilgisayarınızda yönetici erişimine sahip olması gerekir.
  • Geliştirme bilgisayarınızda kodunuzu çalıştırmaya ve hata ayıklamaya başlar. Gerekirse, Kubernetes'e Köprü, o anda bu bağlantı noktalarını kullanan hizmetleri veya işlemleri durdurarak geliştirme bilgisayarınızdaki gerekli bağlantı noktalarını serbest bırakın.

Kubernetes köprüsünü kullanma

Kümenize bağlantı kurduktan sonra, kapsayıcıya alma olmadan bilgisayarınızda kodu yerel olarak çalıştırın ve hatalarını ayıklayın. Kod kümenizle etkileşim kurar. Uzak aracının aldığı tüm ağ trafiği, bağlantı sırasında belirtilen yerel bağlantı noktasına yönlendirilir. Yerel olarak çalışan kodunuz bu trafiği kabul edebilir ve işleyebilir. Kümenizdeki ortam değişkenleri, birimler ve gizli diziler, geliştirme bilgisayarınızda çalışan kodlar için kullanılabilir hale getirilir.

Kubernetes'e Köprü, konak dosya girdileri ve bağlantı noktası iletmeyi geliştirici bilgisayarınıza ekler. Kodunuz, kümenizdeki hizmet adlarını kullanarak kümenizde çalışan hizmetlere ağ trafiği gönderebilir. Bu trafik kümenizde çalışan hizmetlere iletilir. Bağlantınız boyunca geliştirme bilgisayarınızla kümeniz arasında trafik yönlendirilir.

Buna ek olarak, Kubernetes Köprüsü, geliştirme bilgisayarınızdaki kümenizdeki podlar için kullanılabilir ortam değişkenlerini ve bağlı dosyaları dosya aracılığıyla KubernetesLocalProcessConfig.yaml çoğaltmak için bir yol sağlar. Bu dosyayı yeni ortam değişkenleri ve birim bağlamaları oluşturmak için de kullanabilirsiniz.

Dekont

Kümeye bağlantının süresi boyunca ve 15 dakika boyunca, Kubernetes'e Köprü yerel bilgisayarınızda yönetici izinlerine sahip EndpointManager adlı bir işlem çalıştırır.

Birden çok hizmetle paralel olarak hata ayıklayabilirsiniz. Hata ayıklamak istediğiniz hizmet sayısı kadar Visual Studio örneği başlatın. Hizmetlerinizin farklı bağlantı noktalarını yerel olarak dinlediğinden emin olun. Bunları ayrı olarak yapılandırın ve hatalarını ayıklayın. Yalıtım bu senaryoda desteklenmez.

Ek yapılandırma

KubernetesLocalProcessConfig.yaml dosyası, kümenizdeki podlarınız için kullanılabilir ortam değişkenlerini ve bağlı dosyaları çoğaltmanıza olanak tanır. Visual Studio'yu kullandığınızda KubernetesLocalConfig.yaml dosyası hizmetin proje dosyasıyla aynı dizinde olmalıdır. Daha fazla bilgi için bkz . Kubernetes köprüsünü yapılandırma.

Yalıtımlı geliştirme için yönlendirme özelliklerini kullanma

Varsayılan olarak, Kubernetes'e Köprü, bir hizmetin tüm trafiğini geliştirme bilgisayarınıza yönlendirir. Bunun yerine, yalnızca bir alt etki alanından gelen istekleri geliştirme bilgisayarınıza yeniden yönlendirmek için yönlendirme özelliklerini kullanabilirsiniz. Bu yönlendirme özellikleri yalıtarak geliştirmek ve kümenizdeki diğer trafiği kesintiye uğratmamak için Kubernetes'e Köprü'leri kullanmanıza olanak sağlar.

Aşağıdaki animasyonda, aynı küme üzerinde yalıtımlı olarak çalışan iki geliştirici gösterilmektedir:

Animation shows isolation, with two developers working with the same cluster.

Yalıtma içinde çalışmayı etkinleştirdiğinizde, Kubernetes'e Köprü, Kubernetes kümenize bağlanmaya ek olarak aşağıdaki eylemleri gerçekleştirir:

  • Kubernetes kümesinde Azure Dev Spaces'in etkinleştirilmediğini doğrular.
  • Seçtiğiniz hizmeti kümede aynı ad alanında çoğaltır ve bir routing.visualstudio.io/route-from=SERVICE_NAME etiketi ve routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME ek açıklaması ekler.
  • Kubernetes kümesindeki aynı ad alanında yönlendirme yöneticisini yapılandırıp başlatır. Yönlendirme yöneticisi, ad alanınızda yönlendirmeyi yapılandırırken routing.visualstudio.io/route-from=SERVICE_NAME etiketi ve routing.visualstudio.io/route-on-header=kubernetes-route-as=GENERATED_NAME ek açıklamasını aramak için bir etiket seçici kullanır.

Dekont

Kubernetes'e Köprü, Azure Dev Spaces'in Kubernetes kümenizde etkinleştirilip etkinleştirilmediğini denetler. Bridge to Kubernetes'i kullanmadan önce Azure Dev Spaces'i devre dışı bırakmanızı ister.

Yönlendirme yöneticisi başlatıldığında aşağıdaki eylemleri gerçekleştirir:

  • Alt etki alanının GENERATED_NAME kullanarak ad alanında bulunan yük dengeleyici girişler de dahil olmak üzere tüm girişler yinelenir.
  • GENERATED_NAME alt etki alanı ile yinelenen girişlerle ilişkili her hizmet için bir elçi podu oluşturur.
  • Üzerinde çalıştığınız hizmet için yalıtarak başka bir elçi podu oluşturur. Bu yapılandırma, alt etki alanına sahip isteklerin geliştirme bilgisayarınıza yönlendirilmesine olanak tanır.
  • Alt etki alanıyla hizmetler için yönlendirmeyi işlemek üzere her bir elçi podunun yönlendirme kurallarını yapılandırılır.

Aşağıdaki diyagramda, Köprüden Kubernetes'e kümenize bağlanmadan önce bir Kubernetes kümesi gösterilmektedir:

Diagram of cluster without Bridge to Kubernetes.

Aşağıdaki diyagramda, Yalıtım modunda etkinleştirilmiş Kubernetes'e Köprü ile aynı küme gösterilmektedir. Burada, yalıtılmış yönlendirmeyi destekleyen yinelenen hizmeti ve elçi podlarını görebilirsiniz.

Diagram of cluster with Bridge to Kubernetes enabled.

Küme GENERATED_NAME alt etki alanıyla bir istek aldığında, isteğe kubernetes-route-as=GENERATED_NAME üst bilgisi ekler. Elçi podları, isteği kümedeki uygun hizmete yönlendirmeyi işler. Yalıtılarak üzerinde çalışılan hizmete yönelik bir istek için küme, isteği uzak aracı tarafından geliştirme bilgisayarınıza yönlendirir.

Küme, GENERATED_NAME alt etki alanı olmadan bir istek aldığında, isteğe üst bilgi eklemez. Elçi podları, isteği kümedeki uygun hizmete yönlendirmeyi işler. Değiştirilen hizmete yönelik bir istek için podlar bunu uzak aracı yerine özgün hizmete yönlendirir.

Önemli

Kümenizdeki her hizmetin ek istekler yaparken kubernetes-route-as=GENERATED_NAME üst bilgisini iletmesi gerekir. Örneğin, serviceA bir istek aldığında, yanıt döndürmeden önce serviceB'ye bir istek yapar. Bu örnekte, serviceA'nın isteğindeki kubernetes-route-as=GENERATED_NAME üst bilgisini serviceB'ye iletmesi gerekir. ASP.NET gibi bazı dillerin üst bilgi yayma işlemini işleme yöntemleri olabilir.

Kümenizin bağlantısını kestiğinizde, Kubernetes'e Köprü varsayılan olarak tüm elçi podlarını ve yinelenen hizmeti kaldırır.

Dekont

Yönlendirme yöneticisi dağıtımı ve hizmeti ad alanınızda çalışmaya devam eder. Dağıtım ve hizmeti kaldırmak için ad alanınız için aşağıdaki komutları çalıştırın.

kubectl delete deployment routingmanager-deployment -n NAMESPACE
kubectl delete service routingmanager-service -n NAMESPACE

Tanılama ve günlüğe kaydetme

Kümenize bağlanmak için Bridge to Kubernetes kullanırken bilgisayarınız tanılamayı günlüğe kaydeder. Bunları geliştirme bilgisayarınızın TEMP dizininde Kubernetes Köprüsü klasöründe depolar .

Kubernetes RBAC yetkilendirmesi

Kubernetes, kullanıcıların ve grupların izinlerini yönetmek için Rol Tabanlı Erişim Denetimi (RBAC) sağlar. Bilgi için Kubernetes belgelerine bakın. YaML dosyası kubectl oluşturup kullanarak bunu kümeye uygulayarak RBAC özellikli bir kümenin izinlerini ayarlayabilirsiniz.

Kümede izinleri ayarlamak için permissions.yml gibi bir YAML dosyası oluşturun veya değiştirin. ad alanınızı <namespace> ve erişim gerektiren kullanıcı ve grupları kullanın.

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: bridgetokubernetes-<namespace>
  namespace: development
subjects:
  - kind: User
    name: jane.w6wn8.k8s.ginger.eu-central-1.aws.gigantic.io
    apiGroup: rbac.authorization.k8s.io
  - kind: Group
    name: dev-admin
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: admin
  apiGroup: rbac.authorization.k8s.io

Aşağıdaki komutu kullanarak izinleri uygulayın:

kubectl -n <namespace> apply -f <yaml file name>

Sınırlamalar

Kubernetes köprüsü aşağıdaki sınırlamalara sahiptir:

  • Köprüden Kubernetes'e başarıyla bağlanmak için podda yalnızca tek bir kapsayıcı çalışabilir.
  • Şu anda Bridge to Kubernetes podlarının Linux kapsayıcıları olması gerekir. Windows kapsayıcıları desteklenmez.
  • Kubernetes'e Köprü'nün ana bilgisayar dosyanızı düzenlemek için geliştirme bilgisayarınızda çalışması için yükseltilmiş izinlere sahip olması gerekir.
  • Azure Dev Spaces'in etkinleştirildiği kümelerde Kubernetes'e köprü kullanılamaz.

Sonraki adımlar

Yerel geliştirme bilgisayarınıza kümenize bağlanmak için Kubernetes'e Köprü'leri kullanmaya başlamak için bkz . Kubernetes'e Köprü Kullanma (VS) veya Kubernetes'e Köprü Kullanma (VS Code).