【问题标题】:Access Kubernetes API using REST APIs使用 REST API 访问 Kubernetes API
【发布时间】:2019-05-17 10:45:36
【问题描述】:

我正在尝试从 NodeJS 访问 Kubernetes API。在没有 kubectl 或 gcloud 命令行工具可用的环境中运行。使用 https://github.com/kubernetes-client/javascript 客户端 SDK。问题是如何认证和访问远程集群。在 GCP 中运行的 K8s 我需要这个。

换句话说,尝试做“gcloud container clusters get-credentials”所做的事情,但没有“gcloud”cli。

【问题讨论】:

  • “在环境中运行...”内部集群,或者你的意思是从你的工作站(或其他东西)?
  • 在集群外运行,开启。工作站。将其视为运行在 Kubernetes 之上的自定义编排器。

标签: rest api authentication kubernetes


【解决方案1】:

我认为您可以使用 GoDaddy 推广的 kubernetes-clientNodeJS 调用 Kubernetes API。 Kubernetes-client for NodeJS 简化了调整 Kubernetes API 接口的方法。

下面的例子演示了如何使用一个小sn-p来提取Kubernetes默认Namespace中的所有Deployments

const Client = require('kubernetes-client').Client;
const config = require('kubernetes-client').config;

const client = new Client({ config: config.fromKubeconfig(), version: '1.9' });
const deployments = await client.api.v1.namespaces('default').deployments.get();

Here你可以找到更多使用kubernetes-client的sn-ps。

【讨论】:

  • 问题是关于身份验证的。如何将 gcp 服务帐户中创建的密钥传递给 API 以使用?
  • 看看Kubernetes官方documentation.
【解决方案2】:

如果您想从外部使用 Kubernetes Master API,您需要通过here 描述的方式之一进行授权。

特别是,如果您想使用用户名/密码并使用 GKE(GCP 上的 k8),则可以按以下步骤操作:

  1. 点击您的集群名称和“显示凭据”,您可以在其中找到用户名和密码。
  2. 为您的 REST 调用使用标题:“授权:基本 BASE64ENCODED(USER:PASSWORD)”。

【讨论】:

  • 有没有更好的方法,不需要使用管理员用户/密码?理想情况下,我想在 gcp 中创建一个服务帐户,并以某种方式将其密钥传递给 GKE API。
猜你喜欢
  • 2018-05-28
  • 2013-12-29
  • 1970-01-01
  • 2019-01-04
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多