Köprüden Kubernetes'e (VS Code) kullanma

Not

Microsoft artık Kubernetes Köprüsü projesini etkin bir şekilde korumayı planlamaktadır. Önümüzdeki birkaç ay içinde projeyi arşiv durumuna geçireceğiz. Bu arada, proje hala kullanılabilir ve indirilebilir. Bu süre boyunca, gelecekteki kullanımınız için Bridge to Kubernetes'e benzer avantajlar sağlayan topluluk projelerini keşfetmeyi ve önermeyi umuyoruz. Sorularınız varsa lütfen GitHub'daki sorun panomuzdan bizimle iletişime geçin.

Kubernetes köprüsü, uygulamanızın veya hizmetlerinizin geri kalanıyla Kubernetes kümenize bağlıyken geliştirme bilgisayarınızda kod çalıştırmanıza ve hata ayıklamanıza olanak tanır. Bu kılavuzda, Kubernetes kümeniz ile geliştirme bilgisayarınızda çalışan kod arasındaki trafiği yeniden yönlendirmek için Kubernetes'e Köprü kullanmayı öğreneceksiniz.

Başlamadan önce

Bu makalede, mikro hizmet mimarisine sahip kendi kümeniz olduğu ve kümenizdeki podlardan birinde hata ayıklamak istediğiniz varsayılır. Mevcut bir örnek uygulamayla Kubernetes'e Köprü kullanmayı öğrenmek istiyorsanız bkz . Örnekle Kubernetes'e Köprü kullanma. Azure Kubernetes hizmetini kullanıyorsanız ve daha karmaşık bir örnek uygulama kullanmak istiyorsanız bkz . Kubernetes'e Köprü (AKS).

Önkoşullar

Kümenize bağlanma ve hizmette hata ayıklama

Bridge to Kubernetes ile hata ayıklama işlemini başlatmanın birkaç farklı yolu vardır. açık kaynak Kubernetes uzantısından başlıyorsanız, Bridge to Kubernetes yüklü değilse Yerel tünel hata ayıklamayı yükleme ve kullanma bölümüne gidin. Bridge to Kubernetes zaten yüklüyse aşağıdaki adımlarla devam edin:

  1. Geliştirme bilgisayarınızda, geçerli bağlamınızın uygulamanızın çalıştığı kümeye ve ad alanına ayarlandığından emin olun.

  2. Visual Studio Code'da hata ayıklamak istediğiniz uygulamanın çalışma alanını açın. Kümeler altındaki Kubernetes uzantısı görünümünde kümenizin ve ad alanınızın seçili olduğundan emin olun. Komut Paleti'ni (Mac'te CTRL+SHIFT+P veya Cmd+Shift+P) açın ve Kubernetes Köprüsü: Yapılandırma işlemini başlatmak için yapılandır komutunu çalıştırın.

  3. Yerel sürümünüze yeniden yönlendirmek istediğiniz Kubernetes hizmetini seçin.

    Bağlanacak hizmeti seçin

    Kubernetes kümesindeki tüm trafik, hizmetiniz için geliştirme bilgisayarınızda çalışan uygulamanızın sürümüne yönlendirilir. Kubernetes köprüsü ayrıca uygulamadan giden tüm trafiği Kubernetes kümenize geri yönlendirir.

    Önemli

    Yalnızca tek bir podu olan hizmetleri yeniden yönlendirebilirsiniz.

  4. Hizmetinizi seçtikten sonra sonraki bölümü atlayın ve Kubernetes Köprüsü ile yerel tünel hata ayıklama için hata ayıklayıcıyı yapılandırma bölümündeki adımları izleyerek devam edin.

Yerel tünel hata ayıklamasını yükleme ve kullanma

Açık kaynak Kubernetes uzantısı yüklü olduğunda ve hata ayıklamak istediğiniz hizmetlere sahip bir Kubernetes kümesine sahip olduğunuzda yerel tünel hata ayıklamasını kullanmaya başlamak için bu adımları izleyin. Bu bölümdeki adımlar, Kubernetes Köprüsü yüklemesinde size yol gösterir ve yerel tünel hata ayıklaması için yapılandırma işlemini başlatır.

Not

VS Code için Kubernetes uzantısı, uzantı yazarlarının VS Code Market'ten diğer yerel tünel çözümlerine katkıda bulunmalarını sağlayan bir API giriş noktası sağlar. Kubernetes köprüsü, Yerel Tünel Hata Ayıklama özelliğinin olası uygulamalarından biridir.

VS Code'da yerel tünel hata ayıklamasını kullanmaya başlamanın iki yolu vardır. İlk yol, Komut Paleti'ni (Mac'te CTRL+SHIFT+P veya Cmd+Shift+P) açmak ve Kubernetes: Debug (Yerel Tünel) yazmaktır.

VS Code'da Hata Ayıkla (Yerel Tünel) komutunu gösteren ekran görüntüsü

Alternatif olarak Kubernetes küme gezgininize gidin. Etkin kümenin kaynaklarını açın ve hata ayıklamak istediğiniz bir hizmet veya pod bulun, ardından hizmete sağ tıklayın ve Hata Ayıkla: Yerel Tünel'i seçin.

Bu noktada, yerel hata ayıklama özellikleri sunan bir VS Code uzantısı yüklü değilse yerel hata ayıklama sağlayan bir uzantı seçmek için Market'e yönlendirilirsiniz. Kubernetes Köprüsü uzantısını seçin.

VS Code'da Yerel Tünelde Hata Ayıkla bağlam menüsünü gösteren ekran görüntüsü

Bridge to Kubernetes uzantısı yüklendikten sonra, Hata Ayıkla: Yerel Tünel'i bir sonraki seçişinde yükleme adımını atlar ve doğrudan sonraki adım olan Kubernetes Köprüsü ile yerel tünel hata ayıklaması için hata ayıklayıcıyı yapılandırma adımına geçersiniz.

Köprüden Kubernetes'e yerel tünel hata ayıklaması için hata ayıklayıcıyı yapılandırma

Yerel tünel hata ayıklaması için hata ayıklayıcısını yapılandırmanın ilk adımı, uygulamanızın yerel olarak çalıştırmak için kullandığı TCP bağlantı noktasını girmeniz istenir:

Bağlantı noktası numarasını girin

Uygulamanızı yerel olarak çalıştırırken normalde kullandığınız bir hata ayıklama başlatma yapılandırması seçin. Başlatma yapılandırmanız yoksa, Kubernetes Köprüsü'nün oluşturmasına izin verebilir veya oluşturmamayı seçebilirsiniz; bu durumda uygulamanızı veya hizmetinizi el ile başlatmanız gerekir. Yapılandırmaları başlatma bölümünde daha fazla bilgi edinin.

Hata ayıklayıcı başlatma yapılandırmasını seçin

Yalıtılmış veya yalıtılmış olmayan çalıştırma seçeneğiniz vardır. Yalıtılmış çalıştırırsanız, yalnızca istekleriniz yerel işleminize yönlendirilir; diğer geliştiriciler etkilenmeden kümeyi kullanabilir. Yalıtılmış çalıştırmazsanız, tüm trafik yerel işleminize yönlendirilir. Bu seçenek hakkında daha fazla bilgi için bkz . Yalıtımlı geliştirme için yönlendirme özelliklerini kullanma.

Yalıtım seçin

Soldaki Hata Ayıkla simgesini seçin ve üst kısımdaki Kubernetes ile NPM aracılığıyla başlat gibi yeni eklenen Kubernetes başlatma yapılandırmasını seçin. Bu başlatma yapılandırması, bu seçeneği belirlerseniz Bridge to Kubernetes tarafından oluşturulur.

Başlatma profilinde hata ayıklamayı seçme

Not

EndpointManager'ın yükseltilmiş bir şekilde çalışmasına ve konak dosyanızı değiştirmesine izin vermeniz istenir.

VS Code Durum çubuğu turuncuya döndüğünde ve Kubernetes uzantısı bağlı olduğunuzu gösterdiğinde geliştirme bilgisayarınız bağlanır.

Köprüden Kubernetes'e hata ayıklama

Geliştirme bilgisayarınız bağlandıktan sonra trafik, değiştirdiğiniz hizmet için geliştirme bilgisayarınıza yeniden yönlendirmeye başlar.

Not

Sonraki başlatmalarda hizmet adı, bağlantı noktası, başlatma görevi veya yalıtılmış çalıştırılıp çalıştırılmayacağı sorulmayacak. Bu değerler içinde .vscode/tasks.jsonkaydedilir. Bu ayarları daha sonra değiştirmek için Komut Paleti'ni (Mac'te CTRL+SHIFT+P veya Cmd+Shift+P) açın ve Kubernetes Köprüsü: Yapılandır komutunu çalıştırın. Bridge to Kubernetes'in başlatma profilinize eklediği belirli yapılandırma ayarlarını görmek için .vscode/launch.json ve .vscode/tasks.json açabilirsiniz.

Kümeniz c-ares kullanan bir gRPC uygulaması olan gRPC C çekirdeğini kullanıyorsa başlatma profilinize değeriyle nativeGRPC_DNS_RESOLVER bir ortam değişkeni eklenir. Bu değişken, bağlanırken 2 dakikalık bir gecikmeyi önlemek için geçici bir çözüm kullanılacağını belirtir. Daha fazla bilgi için bu gRPC sorununa bakın.

Kesme noktası ayarlama

F9 ile bir kesme noktası ayarlayın veya Çalıştır'ı ve ardından Kesme Noktasını Değiştir'i seçin.

Genel URL'yi açarak örnek uygulamaya gidin. Kodunuz kesme noktasına ulaştığında hata ayıklayıcıda açılmalıdır. Hizmeti sürdürmek için Ctrl+F5 tuşlarına basın veya Çalıştır'ı ve ardından Devam'ı seçin. Tarayıcınıza dönün ve bisiklet için bir yer tutucu görüntü gördüğünüzden emin olun.

Uygulamanızı güncelleştirme

Yerel olarak kod değişiklikleri yaptığınızda, bunların kümeyi kullanan diğer kişiler tarafından görünür olup olmaması, yalıtılmış çalışıp çalışmadığınıza bağlıdır. Yalıtılmış çalıştırıyorsanız, diğer kullanıcıları etkilemeyen değişiklikler yapabilirsiniz.

Kodunuzu düzenleyin, değişikliklerinizi kaydedin ve Mac'te Ctrl+Shift+F5 (⇧⌘F5) tuşlarına basın veya Çalıştır'ı ve ardından Hata Ayıklamayı Yeniden Başlat'ı seçin. Yeniden bağlandıktan sonra tarayıcınızı yenileyin ve değişikliklerinizi doğrulayın.

Çalıştır'ı seçip Hata Ayıklamayı Durdur'u seçin veya hata ayıklayıcıyı durdurmak için Shift+F5 tuşuna basın.

Not

Varsayılan olarak, hata ayıklama görevinin durdurulması da geliştirme bilgisayarınızın Kubernetes kümenizle bağlantısını keser. Visual Studio Code ayarlarında Bridge to Kubernetes: Disconnect After Debugging (Hata Ayıkladıktan Sonra Bağlantıyı Kes) araması yaparak ve hata ayıklama dururken otomatik olarak bağlantıyı kes seçeneğinin yanındaki denetimi kaldırarak bu davranışı değiştirebilirsiniz. Bu ayarı güncelleştirdikten sonra, hata ayıklamayı durdurup başlattığınızda geliştirme bilgisayarınız bağlı kalır. Geliştirme bilgisayarınızın kümenizle bağlantısını kesmek için durum çubuğundaki Kubernetes köprüsü uzantısına tıklayın ve geçerli oturumun bağlantısını kes'i seçin.

Ek yapılandırma

Kubernetes köprüsü, ek yapılandırma olmadan trafiği yönlendirme ve ortam değişkenlerini çoğaltma işlemlerini işleyebilir. Kubernetes kümenizdeki kapsayıcıya bağlı ConfigMap dosyası gibi dosyaları indirmeniz gerekiyorsa, bu dosyaları geliştirme bilgisayarınıza indirmek için bir KubernetesLocalProcessConfig.yaml oluşturabilirsiniz. Daha fazla bilgi için bkz . Kubernetes köprüsünü yapılandırma.

Microsoft Entra Id tarafından sağlanan bir güvenlik özelliği olan yönetilen kimliği kullanan bir AKS kümesi kullanıyorsanız, bu senaryo için Kubernetes'e Köprü yapılandırma hakkında bilgi için bkz . Kubernetes Köprüsü ile yönetilen kimliği kullanma.

Günlüğe kaydetme ve tanılamayı kullanma

Günlük çıkışı, geliştirme bilgisayarınız Kubernetes kümenize bağlandıktan sonra Kubernetes Köprüsü penceresine yazılır.

Kubernetes Durum çubuğuna tıklayın ve Bağlantı tanılama bilgilerini göster'i seçin. Bu komut, günlük çıkışındaki geçerli ortam değişkenlerini ve DNS girişlerini yazdırır.

Ayrıca, tanılama günlüklerini geliştirme bilgisayarınızın Bridge to Kubernetes TEMP dizinindeki dizinde bulabilirsiniz. Windows 10'da bu, içindedir %TEMP%\Bridge to Kubernetes. Mac'te, TEMP dizini bir terminal penceresinden çalıştırılarak echo $TMPDIR bulunabilir. Linux'ta ise olur /tmp/Bridge to Kubernetes.

Yalıtım modunda çalıştırma

Bridge to Kubernetes ile üzerinde çalıştığınız hizmetlerin yalıtılmış bir sürümünü de ayarlayabilirsiniz. Bu, kümeyi kullanan diğer kişilerin değişikliklerinizden etkilenmeyebileceği anlamına gelir. Bu yalıtım modu, isteklerinizi etkilenen her hizmetin kopyanıza yönlendirerek ancak diğer tüm trafiği normal şekilde yönlendirerek gerçekleştirilir. Yalıtılmış uygulamanın yerel uç nokta URL'sine erişmek için hata ayıklayıcıyı yalıtım modunda başlatın, durum çubuğunda Kubernetes menüsünü açın ve uç nokta girişini seçin. Yönlendirmenin yalıtım modunda nasıl çalıştığı hakkında daha fazla bilgi için bkz . Köprüden Kubernetes'e Çalışma.

Üst bilgi yayma

Bridge to Kubernetes'i tasarlandığı şekilde kullanmak için, gelen isteklerden hizmetlerinizin kümedeki diğer hizmetlere yaptığı isteklere Bridge to Kubernetes üst bilgisini yaydığınızdan emin olmanız gerekir. Dilden bağımsız olarak tüm HTTP isteği API'leri bunu yapmak için çerçeveye özgü bir yol sağlar. Örneğin, C# dilindeki .NET kodu için aşağıdakine benzer bir kod kullanabilirsiniz:

var request = new HttpRequestMessage();
request.RequestUri = new Uri("http://mywebapi/api/values/1");
if (this.Request.Headers.ContainsKey("kubernetes-route-as"))
{
    // Propagate the dev space routing header
    request.Headers.Add("kubernetes-route-as", this.Request.Headers["kubernetes-route-as"] as IEnumerable<string>);
}
var response = await client.SendAsync(request);

Not

Her istekte kodun etkilenmesini önlemek için System.Net.Http.DelegatingHandler'dan devralan bir sınıf oluşturabilir ve yöntemini önceki örneğe benzer bir kodla geçersiz kılabilirsinizSendAsync. Web'de bu tekniği kullanarak kod bulabilirsiniz; Bir örnek, Bridge'de "kubernetes-route-as" öğesini Kubernetes'e Düzgün Yaymaktır.

Node.js hizmetleri için, Bridge to Kubernetes deposundaki todo-app örneğinden alınan aşağıdakine benzer bir kod kullanabilirsiniz:

    server.get("/api/stats", function (req, res) {
        var options = {
            host: process.env.STATS_API_HOST,
            path: '/stats',
            method: 'GET'
        };
        const val = req.get('kubernetes-route-as');
        if (val) {
            console.log('Forwarding kubernetes-route-as header value - %s', val);
            options.headers = {
                'kubernetes-route-as': val
            }
        }
        var req = http.request(options, function(statResponse) {
            res.setHeader('Content-Type', 'application/json');
            var responseString = '';
            //another chunk of data has been received, so append it to `responseString`
            statResponse.on('data', function (chunk) {
                responseString += chunk;
            });
            statResponse.on('end', function () {
                res.send(responseString);
            });
        });

        req.on('error', function(e) {
            console.log('problem with request: ' + e.message);
          });

          req.end();
    });

Diğer hizmetlerle iletişim kurma

Aynı Kubernetes kümesindeki başka bir hizmetle, örneğin bir HTTP isteğiyle iletişim kurarken, genellikle isteğin URL'sindeki sabit kodlanmış hizmet adını kullanırsınız, ancak bu, Uzak SSH, WSL ve Codespaces gibi bazı senaryolarda çalışmaz. Bu makalede , bu senaryolar için bağlantı URL'sini belirtmek üzere Kubernetes hizmet ortamı değişkenlerinin nasıl kullanılacağı açıklanmaktadır.

Sorun giderme

Kubernetes köprüsü uzantısını etkinleştirirken bu hatayı alırsanız:

"Bağımlılıklar güncelleştirilemedi: en fazla yeniden deneme sayısı aşıldı"

İlk olarak, düğmesini kullanarak etkinleştirmeyi yeniden deneyin. Tekrar tekrar başarılı olmazsa bkz https://github.com/microsoft/mindaro/issues/32. .

Uzak bir SSH oturumunda Kubernetes'e Köprü'leri kullanırken EndpointManager başarısız olursa sorun, Bir izin sorunu nedeniyle Kubernetes'e Köprü'nün konak dosyasını değiştirememesi olabilir. Uzak SSH'yi etkinleştirmek veya yükseltilmiş olmayan kullanıcı olarak çalışmak için kodunuzu, Hizmet ortamı değişkenleri konusunda açıklandığı gibi Kubernetes hizmet ortamı değişkenlerini kullanacak şekilde güncelleştirmeli ve VS Code'un bunları kullanacak şekilde yapılandırmanız gerekir.

Sonraki adımlar

Bridge to Kubernetes hakkında daha fazla bilgi için bkz . Kubernetes Köprüsü nasıl çalışır?

Aynı anda paralel olarak birden çok hizmette hata ayıklamanız gerekiyorsa, bkz . Aynı anda birden çok hizmette hata ayıklama.