首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过ssh bastion主机使用kubectl,请从bitbucket管道部署。

通过ssh bastion主机使用kubectl,请从bitbucket管道部署。
EN

Stack Overflow用户
提问于 2021-09-29 10:48:32
回答 2查看 693关注 0票数 0

我们有两个GKE私有集群,其中只能通过ssh代理访问。

在本地环境中,这是这样工作的:

  1. 打开ssh连接,端口8888转发到bastion主机。 gcloud compute ssh dev-cluster-bastion --project client-dev --zone xxxx -- -L 8888:127.0.0.1:8888
  2. 在另一次会议上 HTTPS_PROXY=localhost:8888 kubectl get pods

这将返回正在运行的豆荚的列表。

当我们在bitbucket管道中这样做时,ssh连接,但随后关闭,kubectl调用失败。来自ssh连接的消息是:

Pseudo-terminal will not be allocated because stdin is not a terminal

所以端口转发也被关闭了。

-fN添加到ssh启动没有帮助,端口转发不起作用。

gcloud compute ssh dev-cluster-bastion --project client-dev --zone xxxx -- -fN -L 8888:127.0.0.1:8888

然后告诉我client_loop: send disconnect: Connection reset by peer

有什么想法吗?如何在bitbucket管道中打开端口8888 tcp隧道,这样我们就可以向集群发送kubectl命令了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-04 15:58:56

在非交互环境中使用Google的推荐方法(如Bitbucket管道、GitHub操作等)是:

  1. 创建一个服务帐户,并参考此链接创建服务帐户。
  2. 为该服务帐户创建一个密钥文件并下载它。请参考链接创建文件。
  3. 向此帐户授予所需的IAM权限,以便能够将SSH放入Bastion主机
  4. 将密钥文件安全地提供给管道环境(大多数CI/CD系统允许加密机密文件或敏感环境变量)
  5. 在管道中,使用gcloud auth activate-service-account --key-file=...使gcloud使用服务帐户。
  6. 现在在管道中运行gcloud compute ssh,并像往常一样使用SSH端口转发。

请注意:

  • 步骤1.-4。只有一次;
  • 步骤5.和步骤6.是管道的一部分,并将在每次运行管道时运行。
  • 唯一的区别是-fN标志的存在,它在后台执行SSH,使它在远程主机上不运行命令(即只执行端口转发)。

您还可以参考服务帐户创建开始使用Bitbucket-管道获得更多信息。

票数 1
EN

Stack Overflow用户

发布于 2021-09-30 16:02:26

要修复此错误,将不分配伪终端,因为stdin不是终端。遵循以下步骤之一:

发生此错误是因为运行SSH时只有一个-t选项,而对SSH进程的标准输入不是TTY。SSH具体打印该消息--在本例中--单个-t等效于"RequestTTY yes",而其中两个等价于"RequestTTY force“。

如果希望使用TTY运行远程命令,请指定两次-t。如果您正在这样做,那么在您的命令中而不是-t中使用-t -t或-tt。

要修复此错误,请执行以下步骤:client_loop:发送断开连接:由对等重置连接:

您应该在客户端/etc/ssh/ssh_config上查看这些参数

ServerAliveInterval

ServerAliveCountMax

若要将间隔设置为值60,请尝试

ServerAliveInterval 60

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69374942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档