2017-05-09 67 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" 

您應該能夠通過使用的第一個命令到該列表運行添加公鑰。

我不確定這是「規定」的方式來做到這一點,但它會工作。