Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

353
Vistas
Acceda a la API de Kubernetes desde un pod en C#

Estoy buscando una forma ligera de acceder a la API de Kubernetes desde un Pod en una aplicación de C#.

Los documentos de Kubernetes mencionan dos formas de acceder a la API desde un pod :

  1. Ejecute el proxy kubectl en un contenedor sidecar en el pod, o como un proceso en segundo plano dentro del contenedor

Esto generalmente funciona y permite llegar fácilmente a un punto final de API con solo una o dos líneas de código, por ejemplo:

 using System; using System.Net; namespace GetIngresses { class Program { static void Main(string[] args) { var apiBaseUrl = "http://127.0.0.1:8001"; // requires kubectl proxy Console.WriteLine((new WebClient()). DownloadString($"{apiBaseUrl}/apis/networking.k8s.io/v1/ingresses")); } } }

Sin embargo, ahora hay un proceso de kubectl proxy en ejecución para monitorear, mantener, etc., esto no parece ideal para la producción.

  1. Use la biblioteca de cliente de Go y cree un cliente con las funciones rest.InClusterConfig() y kubernetes.NewForConfig(). Manejan la localización y la autenticación en el servidor ap.

Mi aplicación está escrita en C#, no en Go. Hay una biblioteca de cliente de C# que presumiblemente podría lograr lo mismo. Pero, ¿realmente tengo que traer una biblioteca de cliente completa a bordo solo para un simple GET a un único punto final?

Idealmente, me gustaría usar WebClient , como en el ejemplo anterior. La documentación menciona que

La forma recomendada de ubicar el servidor ap dentro del pod es con el nombre DNS kubernetes.default.svc, que se resuelve en una IP de servicio que, a su vez, se enrutará a un servidor ap.

Entonces, en el ejemplo anterior, ¿puedo hacer esto...?

 var apiBaseUrl = "http://kubernetes.default.svc"

... y obtener WebClient para pasar las credenciales de cuenta de servicio requeridas? Si es así, ¿cómo?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Idealmente, me gustaría usar WebClient

Kubernetes es una API REST, por lo que funcionaría. Como se muestra en Acceder directamente a la API REST usando el proxy kubectl , es fácil explorar la API usando, por ejemplo, curl .

Ejemplo con curl y kubectl proxy : la respuesta está en formato json.

 curl http://localhost:8080/api/v1/pods

El factor de complicación es que probablemente necesite un paquete de certificados privados, y es una buena práctica validarlo correctamente por razones de seguridad. Al acceder a la API desde un pod, el certificado del cliente se encuentra en /var/run/secrets/kubernetes.io/serviceaccount/ca.crt y, además, debe autenticarse con el token ubicado en /var/run/secrets/kubernetes.io/serviceaccount/token

Pero, ¿realmente tengo que traer una biblioteca de cliente completa a bordo solo para un simple GET a un único punto final?

Lo que obtienes de una biblioteca cliente es:

  • Autenticación implementada usando certificados y tokens
  • Acceso de cliente escrito, en lugar de URL y solicitudes de código manual

El ejemplo dotnet-client muestra cómo se ve el "Acceso de cliente escrito", para "listar Pods en el espacio de nombres predeterminado" (veralternativas de autenticación ):

 var config = KubernetesClientConfiguration.InClusterConfig() // auth from Pod IKubernetes client = new Kubernetes(config); Console.WriteLine("Starting Request!"); var list = client.ListNamespacedPod("default"); foreach (var item in list.Items) { Console.WriteLine(item.Metadata.Name); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda