Bridge to Kubernetes’in işleyiş biçimiHow Bridge to Kubernetes works

Kubernetes Köprüsü, uygulamanızın veya hizmetlerinizin geri kalanı ile Kubernetes kümenize bağlı olmaya devam ederken geliştirme bilgisayarınızda kodu çalıştırmanızı ve hata ayıklamanıza olanak tanır.Bridge to Kubernetes allows you to run and debug code on your development computer, while still connected to your Kubernetes cluster with the rest of your application or services. Örneğin, birbirine bağlı çok sayıda hizmet ve veritabanına sahip büyük bir mikro hizmet mimariniz varsa, bu bağımlılıkların geliştirme bilgisayarınızda çoğaltılması zor olabilir.For example, if you have a large microservices architecture with many interdependent services and databases, replicating those dependencies on your development computer can be difficult. Ayrıca, iç döngü geliştirme sırasında her kod değişikliği için Kubernetes kümenize kod oluşturup dağıtmak, bir hata ayıklayıcıyla yavaş, zaman alabilir ve kullanılması zor olabilir.Additionally, building and deploying code to your Kubernetes cluster for each code change during inner-loop development can be slow, time consuming, and difficult to use with a debugger.

Kubernetes Köprüsü, doğrudan geliştirme bilgisayarınız ve kümeniz arasında bir bağlantı oluşturmak yerine kodunuzu kümenize derleyip dağıtmak zorunda kalmaktan kaçınır.Bridge to Kubernetes avoids having to build and deploy your code to your cluster by instead creating a connection directly between your development computer and your cluster. Hata ayıklama sırasında geliştirme bilgisayarınızı kümenize bağlamak, herhangi bir Docker veya Kubernetes yapılandırması oluşturmadan hizmetinizi tam uygulama bağlamında hızlıca test etmenize ve geliştirmenize olanak sağlar.Connecting your development computer to your cluster while debugging allows you to quickly test and develop your service in the context of the full application without creating any Docker or Kubernetes configuration.

Kubernetes Köprüsü, bağlı Kubernetes kümeniz ile geliştirme bilgisayarınız arasında trafiği yeniden yönlendirir.Bridge to Kubernetes redirects traffic between your connected Kubernetes cluster and your development computer. Bu trafik yeniden yönlendirmesi, Kubernetes kümenizde çalışan geliştirme ve hizmetinizdeki kodların aynı Kubernetes kümesinde olduklarından farklı iletişim kurmasına olanak tanır.This traffic redirection allows code on your development computer and services running in your Kubernetes cluster to communicate as if they are in the same Kubernetes cluster. Kubernetes Köprüsü, geliştirme bilgisayarınızda Kubernetes kümenizde bulunan ortam değişkenlerini ve takılı birimleri de çoğaltmak için bir yol sağlar.Bridge to Kubernetes also provides a way to replicate environment variables and mounted volumes available to pods in your Kubernetes cluster in your development computer. Geliştirme bilgisayarınızda ortam değişkenlerine ve bağlı birimlere erişim sağlamak, bu bağımlılıkları el ile çoğaltmadan kodunuzda hızla çalışmanıza olanak sağlar.Providing access to environment variables and mounted volumes on your development computer allows you to quickly work on your code without having replicate those dependencies manually.

Uyarı

Kubernetes Köprüsü yalnızca geliştirme ve test senaryolarında kullanılmak üzere tasarlanmıştır.Bridge to Kubernetes is intended for use in development and testing scenarios only. Üretim kümeleri veya etkin kullanımda olan canlı hizmetlerle kullanılmak üzere tasarlanmamıştır veya desteklenmez.It is not intended or supported for use with production clusters or live services in active use.

Şu anda desteklenen özelliklerle ilgili bilgiler ve Kubernetes Köprüsü için gelecekteki bir yol haritası, Kubernetes yol haritası Ile köprüaltında bulunabilir.Information about the currently supported features and a future roadmap for Bridge to Kubernetes may be found at Bridge to Kubernetes roadmap.

Kubernetes için köprü kullanmaUsing Bridge to Kubernetes

Visual Studio 'da Kubernetes için köprü kullanmak üzere, ASP.net ve Web geliştirme iş yükü yüklü ve Kubernetes uzantısı 'nın yüklü olduğu Windows 10 ' da Visual Studio 2019 sürüm 16,7 Preview 4 veya daha yenisi olması gerekir.To use Bridge to Kubernetes in Visual Studio, you need Visual Studio 2019 version 16.7 Preview 4 or greater running on Windows 10 with the ASP.NET and web development workload installed and the Bridge to Kubernetes Extension installed. Kubernetes için köprü kullandığınızda Kubernetes kümenize bir bağlantı kurmak için kümedeki var olan Pod 'a giden ve giden tüm trafiği geliştirme bilgisayarınıza yönlendirme seçeneğiniz vardır.When you use Bridge to Kubernetes to establish a connection to your Kubernetes cluster, you have the option of redirecting all traffic to and from an existing pod in the cluster to your development computer.

Not

Kubernetes için köprü kullanırken, geliştirme bilgisayarınıza yönlendirmek üzere hizmetin adı istenir.When using Bridge to Kubernetes, you are prompted for the name of the service to redirect to your development computer. Bu seçenek, yeniden yönlendirme için bir pod belirlemek için uygun bir yoldur.This option is a convenient way to identify a pod for redirection. Kubernetes kümeniz ile geliştirme bilgisayarınız arasındaki tüm yeniden yönlendirme bir pod içindir.All redirection between your Kubernetes cluster and your development computer is for a pod.

Kubernetes Köprüsü, kümenize bir bağlantı kurduğunda:When Bridge to Kubernetes establishes a connection to your cluster, it:

  • Hizmeti kümenizdeki yerine, sizin kodunuzda kullanılacak geliştirme bilgisayarınızdaki bağlantı noktasını ve kodunuz için tek seferlik eylem olarak başlatma görevini yapılandırmak isteyip istemediğinizi sorar.Prompts you to configure the service to replace on your cluster, the port on your development computer to use for your code, and the launch task for your code as a one-time action.
  • Küme üzerindeki Pod içindeki kapsayıcıyı, trafiği geliştirme bilgisayarınıza yönlendiren bir uzak Aracı kapsayıcısı ile değiştirir.Replaces the container in the pod on the cluster with a remote agent container that redirects traffic to your development computer.
  • Geliştirme bilgisayarınızdan gelen trafiği kümenizde çalışan uzak aracıya iletmek için kubectl bağlantı noktasını geliştirme bilgisayarınızda ilet olarak çalıştırır.Runs kubectl port-forward on your development computer to forward traffic from your development computer to the remote agent running in your cluster.
  • Uzak aracıyı kullanarak kümenizdeki ortam bilgilerini toplar.Collects environment information from your cluster using the remote agent. Bu ortam bilgileri ortam değişkenlerini, görünür Hizmetleri, birim takmaları ve gizli takmaları içerir.This environment information includes environment variables, visible services, volume mounts, and secret mounts.
  • Geliştirme Bilgisayarınızdaki hizmetin, kümede çalışıyor gibi aynı değişkenlere erişebilmesi için Visual Studio 'da ortamı ayarlar.Sets up the environment in Visual Studio so the service on your development computer can access the same variables as if it were running on the cluster.
  • Ana bilgisayar dosyanızı, kümenizdeki hizmetleri geliştirme bilgisayarınızda yerel IP adresleriyle eşlenecek şekilde güncelleştirir.Updates your hosts file to map services on your cluster to local IP addresses on your development computer. Bu ana bilgisayar dosya girdileri, geliştirme bilgisayarınızda çalışan kodun kümenizde çalışan diğer hizmetlere istek yapmasına izin verir.These hosts file entries allow code running on your development computer to make requests to other services running in your cluster. Ana bilgisayar dosyanızı güncelleştirmek için, Kubernetes 'e olan köprü, kümenize bağlanırken geliştirme bilgisayarınızda yönetici erişimi ister.To update your hosts file, Bridge to Kubernetes will ask for administrator access on your development computer when connecting to your cluster.
  • Geliştirme bilgisayarınızda kodu çalıştırmaya ve hata ayıklamaya başlar.Starts running and debugging your code on your development computer. Gerekirse, Kubernetes 'e olan köprü, şu anda bu bağlantı noktalarını kullanan Hizmetleri veya süreçlerini durdurarak geliştirme bilgisayarınızda gerekli bağlantı noktalarını serbest bırakılır.If necessary, Bridge to Kubernetes will free required ports on your development computer by stopping services or processes that are currently using those ports.

Kümenize bir bağlantı kurduktan sonra, kodu kapsayıcı olmadan yerel olarak bilgisayarınızda çalıştırabilir ve hata ayıklama yapabilir ve kod, kümenizin geri kalanıyla doğrudan etkileşime geçebilir.After you establish a connection to your cluster, you can run and debug code natively on your computer, without containerization, and the code can directly interact with the rest of your cluster. Uzak aracının aldığı tüm ağ trafiği, bağlantı sırasında belirtilen yerel bağlantı noktasına yönlendirilir, böylece yerel olarak çalışan kodunuz bu trafiği kabul edebilir ve işleyebilir.Any network traffic the remote agent receives is redirected to the local port specified during the connection so your natively running code can accept and process that traffic. Kümenizin ortam değişkenleri, birimleri ve gizli dizileri, geliştirme bilgisayarınızda çalışan kod için kullanılabilir hale getirilir.The environment variables, volumes, and secrets from your cluster are made available to code running on your development computer. Ayrıca, Kubernetes 'e Köprüleyerek geliştirici bilgisayarınıza eklenen ana bilgisayar dosya girişleri ve bağlantı noktası iletimi nedeniyle, kodunuz kümenizdeki hizmet adlarını kullanarak kümenizde çalışan hizmetlere ağ trafiği gönderebilir ve bu trafik kümenizde çalışan hizmetlere iletilir.Also, due to the hosts file entries and port forwarding added to your developer computer by Bridge to Kubernetes, your code can send network traffic to services running on your cluster using the service names from your cluster, and that traffic gets forwarded to the services that are running in your cluster. Geliştirme bilgisayarınız ile kümeniz arasında, bağlandığınız zaman trafik yönlendirilir.Traffic is routed between your development computer and your cluster the entire time you're connected.

Ayrıca, Kubernetes Köprüsü, dosya aracılığıyla geliştirme bilgisayarınızda bulunan küme içindeki kümelerde bulunan ortam değişkenlerini ve bağlı dosyaları çoğaltmak için bir yol sağlar KubernetesLocalProcessConfig.yaml .In addition, Bridge to Kubernetes provides a way to replicate environment variables and mounted files available to pods in your cluster on your development computer through the KubernetesLocalProcessConfig.yaml file. Bu dosyayı Ayrıca yeni ortam değişkenleri ve birim bağlama oluşturmak için de kullanabilirsiniz.You can also use this file to create new environment variables and volume mounts.

Not

Küme bağlantısı süresi (artı 15 dakika) için, Kubernetes Köprüsü, yerel bilgisayarınızda yönetici izinleriyle Endpointmanager adlı bir işlem çalıştırır.For the duration of the connection to the cluster (plus an additional 15 minutes), Bridge to Kubernetes runs a process called EndpointManager with admin permissions on your local computer.

KubernetesLocalProcessConfig. YAML ile ek yapılandırmaAdditional configuration with KubernetesLocalProcessConfig.yaml

KubernetesLocalProcessConfig.yamlDosya, kümedeki yığınlarınızın kullanabildiği ortam değişkenlerini ve bağlı dosyaları çoğaltmanıza olanak sağlar.The KubernetesLocalProcessConfig.yaml file allows you to replicate environment variables and mounted files available to your pods in your cluster. Kubernetes geliştirme için Visual Studio 'Yu kullanırken, KubernetesLocalConfig. YAML dosyası, yönlendirilirken hizmetin proje dosyası ile aynı dizinde bulunmalıdır.When using Visual Studio for Bridge to Kubernetes development, the KubernetesLocalConfig.yaml file must be located in the same directory as the project file for the service you are redirecting. Ek yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. Kubernetes Için köprü yapılandırma.For more information on the additional configuration options, see Configure Bridge to Kubernetes.

Yalıtımda geliştirmeye yönelik yönlendirme özelliklerini kullanmaUsing routing capabilities for developing in isolation

Varsayılan olarak, Kubernetes Köprüsü, bir hizmet için tüm trafiği geliştirme bilgisayarınıza yönlendirir.By default, Bridge to Kubernetes redirects all traffic for a service to your development computer. Ayrıca, istekleri yalnızca bir alt etki alanından geliştirme bilgisayarınıza gelen bir hizmete yönlendirmek için yönlendirme özelliklerini kullanma seçeneğiniz de vardır.You also have the option to use routing capabilities to only redirect requests to a service originating from a subdomain to your development computer. Bu yönlendirme özellikleri, yalıtımın geliştirilmesi için Kubernetes Köprüsü kullanmanızı ve kümenizdeki diğer trafiği kesintiye uğramaktan kaçınmanızı sağlar.These routing capabilities allow you to use Bridge to Kubernetes to develop in isolation and avoid disrupting other traffic in your cluster.

Aşağıdaki animasyon, yalıtımda aynı kümede çalışan iki geliştirici göstermektedir:The following animation shows two developers working on the same cluster in isolation:

Animasyonlu GIF, yalıtımı gösteren

Yalıtımda çalışmayı etkinleştirdiğinizde Kubernetes Köprüsü, Kubernetes kümenize bağlanılmasına ek olarak aşağıdakileri yapar:When you enable working in isolation, Bridge to Kubernetes does the following in addition to connecting to your Kubernetes cluster:

  • Kubernetes kümesinin Azure Dev Spaces etkin olmadığını doğrular.Verifies Kubernetes cluster does not have Azure Dev Spaces enabled.
  • Seçtiğiniz hizmetinizi aynı ad alanındaki kümede ç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.Replicates your chosen service in the cluster in the same namespace and adds a routing.visualstudio.io/route-from=SERVICE_NAME label and routing.visualstudio.io/route-on-header=kubernetes-route-as: GENERATED_NAME annotation.
  • , Kubernetes kümesindeki aynı ad alanında bulunan yönlendirme yöneticisini yapılandırır ve başlatır.Configures and starts the routing manager in the same namespace on the Kubernetes cluster. Yönlendirme Yöneticisi, ad alanınız içinde yönlendirmeyi yapılandırırken Routing.VisualStudio.io/Route-from=SERVICE_NAME label ve Routing.VisualStudio.io/Route-on-Header=Kubernetes-Route-as: GENERATED_NAME ek açıklamalarını aramak için bir etiket seçici kullanır.The routing manager uses a label selector to look for the routing.visualstudio.io/route-from=SERVICE_NAME label and routing.visualstudio.io/route-on-header=kubernetes-route-as: GENERATED_NAME annotation when configuring routing in your namespace.

Kubernetes Köprüsü, Kubernetes kümenizde Azure Dev Spaces etkinleştirildiğini algılarsa, Kubernetes için köprü kullanabilmeniz için Azure Dev Spaces önce devre dışı bırakmanız istenir.If Bridge to Kubernetes detects that Azure Dev Spaces is enabled on your Kubernetes cluster, you are prompted to disable Azure Dev Spaces before you can use Bridge to Kubernetes.

Yönlendirme Yöneticisi başlatıldığında şunları yapar:The routing manager does the following when it starts up:

  • Alt etki alanı için GENERATED_NAME kullanarak ad alanında bulunan tüm gelen parolaları (yük dengeleyici dahil) çoğaltır.Duplicates all ingresses (including load balancer ingresses) found in the namespace using the GENERATED_NAME for the subdomain.
  • GENERATED_NAME alt etki alanı ile yinelenen giriş ile ilişkili her hizmet için bir haberci Pod oluşturur.Creates an envoy pod for each service associated with duplicated ingresses with the GENERATED_NAME subdomain.
  • Yalıtım aşamasında çalıştığınız hizmet için ek bir haberci Pod oluşturur.Creates an additional envoy pod for the service you are working on in isolation. Bu, alt etki alanı olan isteklerin geliştirme bilgisayarınıza yönlendirilmesine izin verir.This allows requests with the subdomain to be routed to your development computer.
  • Her haberci pod için yönlendirme kurallarını, alt etki alanı ile hizmetlerin yönlendirilmesini işleyecek şekilde yapılandırır.Configures routing rules for each envoy pod to handle routing for services with the subdomain.

Aşağıdaki diyagramda, Kubernetes Köprüsü kümenize bağlanmadan önce bir Kubernetes kümesi gösterilmektedir:The following diagram shows a Kubernetes cluster before Bridge to Kubernetes connects to your cluster:

Kubernetes Köprüsü olmadan küme diyagramı

Aşağıdaki diyagramda, Kubernetes ile aynı küme, yalıtım modunda etkin olarak gösterilmiştir.The following diagram shows the same cluster with Bridge to Kubernetes enabled in isolation mode. Burada, yinelenen hizmeti ve yönlendirmeyi destekleyen yinelenen hizmeti ve sorguları yalıtımlara bakabilirsiniz.Here, you can see the duplicate service and the envoy pods that support routing in isolation.

Kubernetes ile Köprü özellikli küme diyagramı

Kümede GENERATED_NAME alt etki alanı ile bir istek alındığında, isteğe bir Kubernetes-Route-as = GENERATED_NAME üst bilgisi eklenir.When a request with the GENERATED_NAME subdomain is received on the cluster, a kubernetes-route-as=GENERATED_NAME header is added to the request. Haberci Pod, kümede uygun hizmete istek yapan yönlendirmeyi işler.The envoy pods handle routing that request to the appropriate service in the cluster. İstek yalıtımda üzerinde çalışılan hizmete yönlendiriliyorsa, bu istek uzak aracı tarafından geliştirme bilgisayarınıza yönlendirilir.If the request is routed to the service that is being worked on in isolation, that request is redirected to your development computer by the remote agent.

Kümede GENERATED_NAME alt etki alanı olmayan bir istek alındığında, isteğe hiçbir üst bilgi eklenmez.When a request without the GENERATED_NAME subdomain is received on the cluster, no header is added to the request. Haberci Pod, kümede uygun hizmete istek yapan yönlendirmeyi işler.The envoy pods handle routing that request to the appropriate service in the cluster. İstek değiştirilmekte olan hizmete yönlendiriliyorsa, bu istek bunun yerine uzak aracı yerine özgün hizmete yönlendirilir.If the request is routed to the service that is being replaced, that request is instead routed to the original service instead of the remote agent.

Önemli

Kümenizdeki her hizmet ek istekler yaparken Kubernetes-Route-as = GENERATED_NAME üst bilgisini iletmelidir.Each service on your cluster must forward the kubernetes-route-as=GENERATED_NAME header when making additional requests. Örneğin, Servicea bir istek aldığında, yanıt döndürmeden önce serviceb 'ye bir istek yapar.For example, when serviceA receives a request, it then makes a request to serviceB before return a response. Bu örnekte, Servicea 'nın isteğinde Kubernetes-Route-as = GENERATED_NAME üst bilgisini iletmesi gerekir.In this example, serviceA needs to forward the kubernetes-route-as=GENERATED_NAME header in its request to serviceB. ASP.netgibi bazı dillerin, üst bilgi yaymayı işleme yöntemlerine sahip olabilir.Some languages, such as ASP.NET, may have methods for handling header propagation.

Kümenizin bağlantısını kestiğinizde, Kubernetes 'e olan köprü, tüm haberci Pod ve yinelenen hizmeti kaldırır.When you disconnect from your cluster, by default, Bridge to Kubernetes will remove all the envoy pods and the duplicate service.

Not

Yönlendirme Yöneticisi dağıtımı ve hizmeti, ad alanınız içinde çalışmaya devam edecektir.The routing manager deployment and service will remain running in your namespace. Dağıtımı ve hizmeti kaldırmak için, ad alanınız için aşağıdaki komutları çalıştırın.To remove the deployment and service run the following commands for your namespace.

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

Tanılama ve günlüğe kaydetmeDiagnostics and logging

Kümenize bağlanmak için Kubernetes Köprüsü kullanılırken, kümenizdeki tanılama günlükleri, Kubernetes klasörüne olan köprüdeki geliştirme bilgisayarınızın geçici dizinine kaydedilir.When using Bridge to Kubernetes to connect to your cluster, diagnostic logs from your cluster are logged to your development computer's TEMP directory in the Bridge to Kubernetes folder.

RBAC yetkilendirmesiRBAC authorization

Kubernetes, kullanıcılar ve gruplar için izinleri yönetmek üzere rol tabanlı Access Control (RBAC) sağlar.Kubernetes provides Role-based Access Control (RBAC) to manage permissions for users and groups. Daha fazla bilgi için bkz. Kubernetes belgeleri , BIR YAML dosyası oluşturarak ve kubectl bunu kümeye uygulamak için kullanarak RBAC özellikli bir küme için izinleri ayarlamanıza olanak sağlar.For information, see the Kubernetes documentation You can set the permissions for an RBAC-enabled cluster by creating a YAML file and using kubectl to apply it to the cluster.

Küme izinlerini ayarlamak için, kendi ad alanınızı ve erişmesi gereken konuları (kullanıcılar ve gruplar) kullanarak aşağıdaki gibi Permissions. yıml gıbı bır YAML dosyası oluşturun veya değiştirin <namespace> .To set permissions on the cluster, create or modify a YAML file such as permissions.yml like the following, using your own namespace for <namespace> and the subjects (users and groups) that need access.

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

Şu komutu kullanarak izinleri uygulayın:Apply the permissions by using the command:

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

SınırlamalarLimitations

Kubernetes Köprüsü aşağıdaki sınırlamalara sahiptir:Bridge to Kubernetes has the following limitations:

  • Pod, başarıyla bağlanmak için Kubernetes 'e Köprüsü için bu Pod 'da çalışan tek bir kapsayıcıya sahip olabilir.A pod may only have a single container running in that pod for Bridge to Kubernetes to successfully connect.
  • Şu anda, Kubernetes Pod Köprüsü 'nün Linux kapsayıcıları olması gerekir.Currently, Bridge to Kubernetes pods must be Linux containers. Windows kapsayıcıları desteklenmez.Windows containers are not supported.
  • Kubernetes köprüsü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.Bridge to Kubernetes needs elevated permissions to run on your development computer in order to edit your hosts file.
  • Kubernetes Köprüsü Azure Dev Spaces etkinleştirilmiş kümeler üzerinde kullanılamaz.Bridge to Kubernetes can't be used on clusters with Azure Dev Spaces enabled.

Azure Dev Spaces etkinleştirilmiş Kubernetes ve kümeler için köprü oluşturmaBridge to Kubernetes and clusters with Azure Dev Spaces enabled

Azure Dev Spaces etkinleştirilmiş bir kümede Kubernetes için köprü kullanamazsınız.You can't use Bridge to Kubernetes on a cluster with Azure Dev Spaces enabled. Azure Dev Spaces etkinleştirilmiş bir kümede Kubernetes için köprü kullanmak istiyorsanız, kümenize bağlanmadan önce Azure Dev Spaces devre dışı bırakmanız gerekir.If you would like to use Bridge to Kubernetes on a cluster with Azure Dev Spaces enabled, you must disable Azure Dev Spaces before connecting to your cluster.

Sonraki adımlarNext steps

Yerel geliştirme bilgisayarınıza kümenize bağlanmak için Kubernetes Köprüsü kullanmaya başlamak için bkz. Kubernetes Için köprü kullanma.To get started using Bridge to Kubernetes to connect to your local development computer to your cluster, see Use Bridge to Kubernetes.