SaltStack Kubernetes Module Setting
Installation
Kubernetes API를 호출하는데 사용할 Target Minion에 아래와 같이 Package를 설치합니다.
root 권한에서 작업합니다.
kubernetes 설치
Kubernetes API Python Bindings
Kubernetes API Python 버전은 12.0.1 로 지정하여 Install 해야 함.
다른 버전 설치 시 오류가 발생할 수 있음.
$ pip3 install kubernetes==12.0.1
Configuring K8s KUBERNETESMOD
salt-minion
config에 추가할 내용은 다음과 같다.
아래 中, kubernetes.kubeconfig
와 kubernetes.kubeconfig-data
둘 중 하나만 설정하면 된다.
만일 둘 다 설정되어 있다면, kubernetes.kubeconfig
를 우선한다.
단, kubernetes.kubeconfig
로 설정하였을 경우는, k8s Control plane node에 salt-minion
설치 및 설정되어야 하는 경우만 해당된다.(로컬 파일에 접근해야 하기 때문)
원격 노드에서 k8s api를 사용해야 하는 경우는 kubernetes.kubeconfig-data
를 사용하도록 한다.
위의 이유로 CH에서는 kubernetes.kubeconfig-data
를 사용하는 방법을 표준으로 채택한다.
kubernetes.kubeconfig: '/root/.kube/config'
kubernetes.kubeconfig-data: '<base64 encoded "/root/.kube/config" content>'
kubernetes.context: '<context name inside ~/.kube/config>'
kubernetes.kubeconfig-data 설정 방법은 다음과 같다.
먼저 kubeconfig
파일 내용을 base64
로 one line encoding한다.
$ cat ~/.kube/config | base64 | tr -d '\n'
YfasdreXBpVmVyc2lvbjogdjEKY2x1c3RlcnM6Ci0gY2x1c3RlcjoKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VONVJFTkRRV0pEWjBGM1NVSkJaMGxDUVVSQlRrSm5hM0ZvYTJsSE9YY3dRa0ZSYzBaQlJFRldUVkpOZDBWUldVUldVVkZFUlhkd2NtUlhTbXdLWTIwMWJHUkhWbnBOUWpSWVJGUkpkMDFFWTNsUFZFRXdUVVJaTVUweGIxaEVWRTEzVFVSamVVNTZRVEJOUkZreFRURnZkMFpVUlZSTlFrVkhRVEZWUlFwQmVFMUxZVE5XYVZwWVNuVmFXRkpzWTNwRFEwRlRTWGRFVVZsS1MyOWFTV2gyWTA1QlVVVkNRbEZCUkdkblJWQkJSRU5EUVZGdlEyZG5SVUpCVG1SaUNuaDRUbkpNYzNNNUwxQlRLMWt5UmpKM1lWZENaMUZHYUdGVFprRjJOMmRsVERkYWQwdEZkREpoYUZoSlV5OVdOWFJTZFZacFFrZDRTRm8zVFdwV2VUWUtZbEpHY1RGWVVEUXlZalI0YzJaRWQwNXdhbUp0YVhoSWNqSlRUemRtVjFrd1dGQlpheTh4TkhkdFRuVnlWMVoyUzNKdFVuWlZUMVpvU0RGUk5uUkdOd3BuTDA5emFWUllkRE5OUVdoeFoyMUxjMEZ0ZFN0dWNrZ3ZVMngyZVRjME1YZFpZalZhYTBNeWRFaEdZbWhUY25FeFVVVlJVaTlQVVU0MFFXMUhPVTl3Q21wd1RVcFhOSEo0YkM5cVprWkZLelpWYlZWT1drVmlOWHBuTjNRM1NUbDVia3hJWTFCa1JraG1UbVZITmtsTmFVb3dNbUp4ZDJsR2NWRmhWMUJPYjA0S2VtZFhOV2gxVUZJeGNqWXdTUzg1UW1sUlZHMVdOMmM0U1RKT0swZE9PVkZsUlVaT2FTOXBSaTlYYzJSSE9YUnNlbXBKZDNaVmNIbGFhMkU0WTJWV2RBcEpOQzlVTUV4cmNFMVBOWFV2YmpoWlpqQkZRMEYzUlVGQllVMXFUVU5GZDBSbldVUldVakJRUVZGSUwwSkJVVVJCWjB0clRVRTRSMEV4VldSRmQwVkNDaTkzVVVaTlFVMUNRV1k0ZDBSUldVcExiMXBKYUhaalRrRlJSVXhDVVVGRVoyZEZRa0ZHVDJ4dWVGWmxjRXgyVm1aMlZIY3pSa001THlzNFprMHhlRm9LWVcxSWMyWTJTV3RoWjJGSlV5OXBXR012VGpJeWNWSmhjelJMV1VvM1FXbEhNMHBPUzBsM09FMTNUbFJTTUdSelVuTTJjSEp0UWpSU2JFMWpia3BHU3dwSU0xQnNNM0ppYVVkNVpFc3hUSGN4VUc1MGJYUlNRalJEVkhOdVFsaHVNbFZvVjNwQk1FcG1kalJIT0cxWlpWWlJjMFZQYlhSbVlrTkxaWHBVY0VwMENuZFhaalYwTmk5elRFcEdSalV5VTBOV1lVc3hiMU5pVGpGdlNrWlpaeXR5UmpobU1XRmtORFpuYjBGMlJ6WlZXRFpDWkRFclpIWjBkblJZVVZKb2IyNEtTalJDT0ZSa2NEZEpWVlZ1WWk5V2J6SnRkRWxGT1doNlpEZEZZWEV3T0hadFQzSmllV0pGVm1rd1JWRlViRXRLUlVwS2FXcEJjbFV3UW1rNWFXaE9OUXBLYlhwYVNIZEVRMFZOTUZwSVQzaFlaM2xXTW14RWJqRXZMMG9yYm1WM1VWUXZlQ3N2TURKa1RISk1MMDE1UzJSQlYxRXlNVzF4V1hKdlFUMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIHNlcnZlcjogaHR0cHM6Ly8xMC4wLjIuNTo2NDQzCiAgbmFtZToga3ViZXJuZXRlcwpjb250ZXh0czoKLSBjb250ZXh0OgogICAgY2x1c3Rlcjoga3ViZXJuZXRlcwogICAgdXNlcjoga3ViZXJuZXRlcy1hZG1pbgogIG5hbWU6IGt1YmVybmV0ZXMtYWRtaW5Aa3ViZXJuZXRlcwpjdXJyZW50LWNvbnRleHQ6IGt1YmVybmV0ZXMtYWRtaW5Aa3ViZXJuZXRlcwpraW5kOiBDb25maWcKcHJlZmVyZW5jZXM6IHt9CnVzZXJzOgotIG5hbWU6IGt1YmVybmV0ZXMtYWRtaW4KICB1c2VyOgogICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVU00YWtORFFXUnhaMEYzU1VKQlowbEpaR1JqVWpoRk9HOXNRV3QzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpSUVhkR1ZFVlVUVUpGUjBFeFZVVUtRWGhOUzJFelZtbGFXRXAxV2xoU2JHTjZRV1ZHZHpCNVRVUkJNMDFxYTNkT1JFRXlUbFJPWVVaM01IbE5WRUV6VFdwcmQwNUVRVEpPVkZwaFRVUlJlQXBHZWtGV1FtZE9Wa0pCYjFSRWJrNDFZek5TYkdKVWNIUlpXRTR3V2xoS2VrMVNhM2RHZDFsRVZsRlJSRVY0UW5Ka1YwcHNZMjAxYkdSSFZucE1WMFpyQ21KWGJIVk5TVWxDU1dwQlRrSm5hM0ZvYTJsSE9YY3dRa0ZSUlVaQlFVOURRVkU0UVUxSlNVSkRaMHREUVZGRlFUTnRZazEzWWs5NU1EQlNjM05NVERNS2NUTXdaMlpyYm5FeFJWazJjVXd5TldKdGRXWmFhRVI0VVROSWIwOVdWaTloVlhwaVkxQTJZalZQZEhjeVNuQTJkeXRUU21kdVpXUXJVa1owUWs1VGFncGlRMUZ2VlRsMVJFNUVURzAyUXk5S01YaHlWVk41YkhOckwxZHNOMjVTVGpCUmNVSjZaMjAwZUd4TFMwRmhSek15U2xCUGRURklWRTFEVDFSQ2JXUXZDbVZNVjJ4SVl5OWhjbEk1WlM5NUszaFZiV3htT1c1VlUzTnRSalZFVjBGSk5WTXZhR3BVT0dkRVltSjRSbTFGTXpsaGJXVkxWSEpTY2paVU1FSnZaWGdLUlV4VWVIWXdWbHBNWW5ocVlWZDZaVUpDY2tVNWVuZGlaRWwzUW1WbWFXNU5jbXR2Wkdnd1kyVlBPSHB4T0hOc1JrTmpTV0YyVm1KM1MxQm1TVFZQWmdwTGEyWnZWRVZNWmtSWEsyOUdhVzA0SzBwVVpuYzRTa041VkRCUVpXaG9ZamxWZUZSYVdGQTRibkpRVDJGNk9HWTRhelpIZFZoVGNGVlhjMHRwVEZab0NsWTBlSGgwZDBsRVFWRkJRbTk1WTNkS1ZFRlBRbWRPVmtoUk9FSkJaamhGUWtGTlEwSmhRWGRGZDFsRVZsSXdiRUpCZDNkRFoxbEpTM2RaUWtKUlZVZ0tRWGRKZDBSUldVcExiMXBKYUhaalRrRlJSVXhDVVVGRVoyZEZRa0ZCWVRORFFYVkNkRUY1YmpsR1l5OHJiRzlXZDB4b1RraEhlbmhSWlhKcWExSTRWZ3A0WmxWclVYRTBhRkZ1YkVwdWRVWlVRbEZqT1dGMUsxcFpZVVJsU0N0Q2VsQkJRVUUzUlZwWVJYcFlibmRpWlZoUVFXRkJOa0Z5WVhwSmRqWmtWemR6Q2pOU1owTm9Va2RoVlhKWGNWTTRNR1pyU0doQlVHdzRieXRUZUZwcFNWSTNhVVZNTmxsV09WVlFUek5vVEc5SGJXMHJOVk5ZVXpGS1JWaFhSVFpNZDJnS1JrZzBkVGhZY0RWWGFXaGhNM1k0VTBkV1pTdDRVMHBSTjBNMVdXRjJSV2RGTkdzMVJHdFZhRmhGV0N0RVZrOXhNbVJUTlVWVFIzRnpXVGQxZDFCbFRncFJLMnhuV1dkME9YVTBaeXR5WXpKQmEwZEpNR2d4VVc1ekswZGhTelUxZDJSMmVEbGFXakp1WlVoa2JVbzBMM1pJUjNCU2NVZHNRbXhvVUU5cUszZzJDa1l4Wml0U01UUktlRUprVmt0emEwNVRNblpLUVUxRU5HMWFMMHBCUkhaeGVscG9TV014YW10SFNEbElSalp1ZG5Zd1RUMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIGNsaWVudC1rZXktZGF0YTogTFMwdExTMUNSVWRKVGlCU1UwRWdVRkpKVmtGVVJTQkxSVmt0TFMwdExRcE5TVWxGYjJkSlFrRkJTME5CVVVWQk0yMWlUWGRpVDNrd01GSnpjMHhNTTNFek1HZG1hMjV4TVVWWk5uRk1NalZpYlhWbVdtaEVlRkV6U0c5UFZsWXZDbUZWZW1KalVEWmlOVTkwZHpKS2NEWjNLMU5LWjI1bFpDdFNSblJDVGxOcVlrTlJiMVU1ZFVST1JFeHROa012U2pGNGNsVlRlV3h6YXk5WGJEZHVVazRLTUZGeFFucG5iVFI0YkV0TFFXRkhNekpLVUU5MU1VaFVUVU5QVkVKdFpDOWxURmRzU0dNdllYSlNPV1V2ZVN0NFZXMXNaamx1VlZOemJVWTFSRmRCU1FvMVV5OW9hbFE0WjBSaVluaEdiVVV6T1dGdFpVdFVjbEp5TmxRd1FtOWxlRVZNVkhoMk1GWmFUR0o0YW1GWGVtVkNRbkpGT1hwM1ltUkpkMEpsWm1sdUNrMXlhMjlrYURCalpVODRlbkU0YzJ4R1EyTkpZWFpXWW5kTFVHWkpOVTltUzJ0bWIxUkZUR1pFVnl0dlJtbHRPQ3RLVkdaM09FcERlVlF3VUdWb2FHSUtPVlY0VkZwWVVEaHVjbEJQWVhvNFpqaHJOa2QxV0ZOd1ZWZHpTMmxNVm1oV05IaDRkSGRKUkVGUlFVSkJiMGxDUVVkRWNsTTJMMlZNT0VGQ2QxcDJMd3BaWnpsS2NVTTVaelYzVlRZeFlsWlVaVTExTVN0MlJIWXdWRkZxU0RaQ1kzTm1iV2hzVEM5YVRsQmhPVFExSzBKTmNEZE1jVmRHUWpNMFdEZEphR1JKQ2pCNU56bFZkRmMwWnpaVWNubGtWRVptY1VKUVFVNVZRV0ZIUkZOWVJURmxVV056YmxkUmIwSkZjRlJoZHpKdFUyOUNkWGg2YUZkNmQzVlVibTA1Y21VS2JqVTFja05zYmtScGRtbElRVEE0VWpaaFUxRmFNVVozUlRSWVNWSkpiWFJ3WVdwcE1uRmFVRUYzVHpodmVUbEpVVzFQV1VSMmMyTlFhbmM1YjBrdlpBcFRSU3MyWlVaTVZUZENjVzh4TlVwUmVETkVjVEJxZERkWVNsbzVNWHB5Tkc0ME9VMXVjbWxzTkc0d0syRnZWalFyVldWQ2NXRTNURGxFYldJeFVYTnBDbXBtTmxWa1JscFZWWEZsUkN0QlRVY3paMmxUYURONlRuQk1jM04zUjBKcmVVZHZORGxUVTFwVFpuSnVWbWRpTlZRNVJIRlVaVVJCWkhOQlZIaGtlUzhLWWtoNWRVZFpSVU5uV1VWQk9HOWlja2R5T1Vock5WTldiRE4xWldGTlVteHZhRkZpTm1KcmVVTlpkMFIzTkc5cU5XSTJaMDlOY2pKblpXZGhlWGN5TXdwdlFsbDBVMWxVTjBrdmQyaGpVVlFyWW1ObGVFeHZVV2xGYVZRNVRXWTJaM2RpVlZsSEsxQldaMk5oVFZKMFEyOUdlRXRsUldONU9IZDVTRzgyZWpJMkNtZGFkMGROVVM5SlFsbDFOMmxMT0dKbFRYaEtjVTl1Ykc1cVFURmhkV3BvYW5VM0x6RktjMkY0YlRoRVRtWllXQ3RMTTJzclNrMURaMWxGUVRaelIzSUtTbVZFT1hCR05uZFdXREZPY21GVk1IQnZNemx6VGt4clVsSXJRamd2ZURkSFVsSnBPVTFwV0VsbU9FZHBiakUyZVVwc1MybERaSEJXYjI5aVVtd3ZiQXBsYkVOMFRtWXhjSEZMU0RCNmFXVmpNa3MyZWxKUlRXaFJha1ZHVUN0eFYxcDZNV05QVWt0WWNYcHpNQzl1Wmtndk1uTktiSHBDUjFCS1duQldSRVY1Q25VM2NURjZUV2RESzNSNlJrWmpjazFHU2xGU1pEWlpTamMwUVZOQk0yUnpkbXhHWW1wTk1FTm5XVUkxYTNCQkx6bERjVnBJUWpWM2RGSk5VRk5aVURRS016QlBkWGRhYzBoc2FIYzROVkExYUhGR1JVRndlREI1ZFZoeVZURnhaRFZ3UTFKSVpXeFhOa1ZEVm1wV2FrZEZUR3h1ZGtNeVZsa3llRzVuSzJSaWVncDNlV1V5Y3pGeVVHeDNkWGxaT1RSbE1ITktVMEZsVDA1dVZ6TTBibWhVYWpZMldtVTJXalZIZVZkcVZXUTFTelV4ZHpSR2EyeHVPRVpuV25jNVVsRTRDbHBwYm5kR1YwRjViMGQwYm01VWEwb3JORWRRTmxGTFFtZEhTMVV5TkhNemJGTjJkVTh6ZUdFNU1FUkNWRWd2V1hoeWVqTm5jbHB2VTJOcmMzTkpSRk1LY0RnclJsbE1iamd2TUVWMUsyd3lPSGxoYVhSaVJGaFZTSGx2U2xsVVRtaEtOblY0WkVOd1JtZExhMFo0TXpkVGRHbE9NemhuU2pZeFYzRkhNVFIzV2dwSU1UUXdTMWszVm1WVFlWaEtSbmhzUmxsNmQzbzNNMjV3SzIxalJUSk1NRkZDTTNweVFsTjFiWFpFVVhwaGVXbHNWV00yWVZwbGVXNHhNMjVUTjI5TkNreHFZazVCYjBkQlprMWhkSGRVWlZoTGNtZFdXWHBsVldONFdIUXhhRE4wVFRkTGVFMVZWU3RWTlc5dlVYVmphRTlqTUhoaVRYRXdXRE5YVFRoR1IwY0tTbXN3V1ZvdlVFNXVSa1JhVFV4emIxSndVbVZXUlVONU5uZENiRWRCU2tWbVNIRm9XbUl4YVRkbmRFNTZXbFF2YzBrMVNXZzNZa2R5UzFCTmFGSkVlUXB0UlhWYU4wOXBOVVUxSzJabE1UbExOMEpoTTNjeFJUSjJWRVl6U20xd1QxVkJlVkpLTVRZck1FNDJhMjV2UkRKa2RqZzlDaTB0TFMwdFJVNUVJRkpUUVNCUVVrbFdRVlJGSUV0RldTMHRMUzB0Q2c9PQo=
minion.conf
파일에 다음과 같이 추가한다.
Testing Salt command
CloudHub Portal addon argument 추가
Sidebar의 Clouds 메뉴에서 Kubernetes Tab을
on/off optionable
처리합니다.CloudHub
argument
에 Add-on 옵션 추가합니다.-u=k8s:on
CloudHub service 재시작