2017-05-09 37 views
0

我是一个小团队的一员,我们希望使用我们自己的ssh密钥来管理kubernetes集群。Azure ACS:kubectl的多个SSH密钥

我使用--generate-ssh-keys选择我的id_rsa.pub是〜/ .ssh,然后我使用az acs kubernetes get-credentials --resource-group $group --name $k8s_name来获得我的更新kubectl配置文件。

我的同事可以用这个做很多事情,但不能kubectl exec,因为它需要ssh访问minions/agents。

用我的钥匙,我可以进入主人,但似乎无法让代理部署额外的authorized_key。

有没有办法做到这一点?即使它需要一些手动工作?

回答

1

您可以通过使用您在创建群集时输入的主ssh密钥通过主服务器访问代理(如果您已在主服务器中删除该密钥,则需要再次添加该密钥)。

试试这个指南如下:How to login into DC-OS slave through Master

+0

这是有效的,它解决了我的问题,但如果这是有道理的,我不觉得这是“答案”。这是混乱,手动和复杂 – Chris

+0

我明白,我同意你的看法。如果你想有一个干净的解决方案,也许你应该考虑Ansible,在这种情况下,唯一的问题是学习曲线,但它将是值得的。以下是一些链接:http://docs.ansible.com/ansible/authorized_key_module.html和https://github.com/erjosito/ansible-azure-lab –

1

我们做的方式,它是通过使你的同事使用更新主服务器上的K8S用户帐户的authorized_keys:

az vm user update -u azureuser --ssh-key-value "$(< ~/.ssh/id_rsa.pub)" -n <<master vm name>> -g <<k8s acs resource group>> 

他们应该然后能够运行kubectl命令。

我还没有遇到需要在代理上执行此操作的任何kubectl命令,但是您可以通过获取虚拟机名称并在每个虚拟机名称中运行来编写脚本。像下面的内容会给你虚拟机的名称列表(只要你的ACS集群资源组中的唯一的事情):

az vm list -g ONEKAY --query "[*].osProfile.computerName" 

您应该能够通过使用的第一个命令到该列表运行添加公钥。

我不确定这是“规定”的方式来做到这一点,但它会工作。