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
Hata ayıklamak istediğiniz bir uygulamaya sahip kubernetes kümesi.
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:
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.
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.
Yerel sürümünüze yeniden yönlendirmek istediğiniz Kubernetes hizmetini 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.
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.
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.
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:
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.
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.
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.
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.
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:
C#
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:
JavaScript
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ı"
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.
Remote development provides benefits like consistent environments, the ability to use more powerful hardware, and the flexibility to develop on different platforms without impacting your local machine. Visual Studio Code provides tools for various remote development setups, such as using a container, a remote machine, or the Windows Subsystem for Linux (WSL). In this path, you'll learn about the different remote development offerings available in Visual Studio Code and practice using them.