IBM Cloud Kubernetes Service(以下 IKS) では、kubectl の認証情報を bxコマンドで認証情報をダウンロードして、環境変数 KUBECONFIG にダウンロード先のパスを設定するという流れになる。 それでは、オンプレ開発環境のKubernetesとの相互運用では、ただちにkubectlコマンドの接続先を切り替えられないので不便である。
また、KUBECONFIGをログイン・シェルに設定して、利用した場合、KUBECONFIGのパスがkubectlの設定記録先となり、bx cluster-config mycluster
でダウンロードすると、後から追加したクラスタ情報を上書きされて消えてしまう。
これでは、オンプレのK8sクラスタとIKSの相互運用に支障があるので、IKSからダウンロードした認証情報とオンプレの.kube/configの認証情報とマージする方法をメモとして残しておく。
認証情報のダウンロード
次のコマンドで、認証情報をダウンロードする。 正常すると、次の様にexport KUBECONFIGが表示される。通常は、コピペして環境変数をセットするなどして、kubectlが認識できる様にする。
$ bx cluster-config [クラスタ名] --admin
...
mycluster の構成は正常にダウンロードされました。 環境変数をエクスポートして Kubernetes の使用を開始してください。
export KUBECONFIG=/Users/maho/.bluemix/plugins/container-service/clusters/mycluster-admin/kube-config-tok02-mycluster.yml
PEMファイルのコピー
ダウンロード先のディレクトリを移動して、pemファイルを $HOME/.kube へコピーする。
$ cd mycluster5-admin/
$ ls -al
total 32
drwx------ 6 maho staff 204 6 1 15:08 .
drwxr-xr-x 6 maho staff 204 6 1 17:07 ..
-rw-r--r-- 1 maho staff 3243 5 31 17:24 admin-key.pem
-rw-r--r-- 1 maho staff 1822 5 31 17:24 admin.pem
-rw-r--r-- 1 maho staff 1887 5 31 17:24 ca-tok02-mycluster5.pem
-rw-r--r-- 1 maho staff 470 6 1 15:08 kube-config-tok02-mycluster5.yml
ファイルのマージ
ダウンロードされてきた認証情報ファイルは、マニフェストで利用されるYAML形式になっており、cluster, context, usersの3つのパートがある。
apiVersion: v1
clusters:
- cluster:
certificate-authority: ca-tok02-mycluster.pem
server: https://***.***.***.***:21878
name: mycluster
contexts:
- context:
cluster: mycluster
namespace: default
user: admin
name: mycluster
current-context: mycluster
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate: admin.pem
client-key: admin-key.pem
下記の3個のパートを $HOME/.kube/configの同パートにコピペで挿入する。
- cluster:
certificate-authority: ca-tok02-mycluster.pem
server: https://***.***.***.***:21878
name: mycluster
- context:
cluster: mycluster
namespace: default
user: admin
name: mycluster
- name: admin
user:
client-certificate: admin.pem
client-key: admin-key.pem
切り替え
kubectl config get-contexts
を実行すると、オンプレとIKSのコンテキストがリストされる。
kubectl config use-context mycluster
とすれば、IKS側へ切り替わる。
あとは、kubectlの操作は同じです。
参考資料