16
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kubernetes の config フィアルをマージする

Posted at

単純な Tips のメモ。

今私は複数のクラスタを切り替えたいと思っている。だから、二つの config ファイルを1つにマージしたい。

configのデフォルト

~/.kube/conf になる。このコンフィグファイルの構造は下記の通り。大きく分けて、clusters, contexts, users に分かれていてそれぞれ複数登録できるようになっている。

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data:  YOUR_CERTIFICATE_AUTHORITY_DATA
    server: https://sacluster-aksresource-757738-55889d33.hcp.eastus.azmk8s.io:443
  name: sacluster
contexts:
- context:
    cluster: sacluster
    user: clusterUser_AKSresource_sacluster
  name: sacluster
current-context: sacluster
kind: Config
preferences: {}
users:
- name: clusterUser_AKSresource_sacluster
  user:
    client-certificate-data: YOUR_CLIENT_CERTIFICATE
    client-key-data: YOUR_CLIENT_KEY_DATA
    token: YOUR_TOKEN

az aks/acs get-credential

az acs kubernetes get-credentials
コマンド、もしくは、az aks get-credentialsコマンドは、マスターノードに接続して、/home/azureuser/.kube/conf を取ってきて、ローカルの、~/.kube/conf に入れてくれる。既存のものがあるとマージしてくれる。

kubectl config

kubectl config コマンドを使うと、これらの設定ファイルをそうさできる。例えば

$ kubectl config current-context
sacluster

このコマンドで現在選択されているクラスターが選択できる。既存のなくなったクラスターの情報を消したいときは

$ kubectl config delete-cluster YOUR_CLUSTER_NAME
$ kubectl config delete-context YOUR_CULSTER_NAME

残念ながら users のセクションは削除できなさげだったので、手動で実施した。実際にクラスタを作るときは、ユーザは意識していなかったが、acs-engine / aks だと、certificate ベースのものになっている様子だ。

この辺りのは

2つの config ファイルのマージ

Stack Overflow にバッチリのやつがあった。one line kubectl command to merge config file with ~/.kube/config?

KUBECONFIG=~/.kube/config:~/config kubectl config view --flatten

KUBECONFIG には、複数のコンフィグファイルをかける。それに対してkubectl config view でその内容を表示して、--flatten オプションで、全ての内容を表示する。すると、config ファイルと同じものになるという仕組みだ。やってみよう。今回は、ACS と AKS の config をマージする。

$ scp azureuser@sasbrk.japaneast.cloudapp.azure.com:/home/azureuser/.kube/config .

で、config を取得する。acs-engine で作成したものなので、az acs get-credentialsは使えない。
概要を出してみよう。AKS, ACS のが興味深い。

$ KUBECONFIG=~/.kube/config:./config kubectl config view 
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://sacluster-aksresource-757738-55889d33.hcp.eastus.azmk8s.io:443
  name: sacluster
- cluster:
    certificate-authority-data: REDACTED
    server: https://sasbrk.japaneast.cloudapp.azure.com
  name: sasbrk
contexts:
- context:
    cluster: sacluster
    user: clusterUser_AKSresource_sacluster
  name: sacluster
- context:
    cluster: sasbrk
    user: sasbrk-admin
  name: sasbrk
current-context: sacluster
kind: Config
preferences: {}
users:
- name: clusterUser_AKSresource_sacluster
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
    token: YOUR_TOKEN_INFO
- name: sasbrk-admin
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED

ついにマージする。

$ KUBECONFIG=~/.kube/config:./config kubectl config view --flatten > newconfig
$ mv ~/.kube/config ~/.kube/config_bak
$ cp newconfig ~/.kube/config

動作確認する。

$ kubectl cluster-info
Kubernetes master is running at https://sacluster-aksresource-757738-55889d33.hcp.eastus.azmk8s.io:443
   :
$ kubectl config use-context sasbrk
Switched to context "sasbrk".
$ kubectl  cluster-info
Kubernetes master is running at https://sasbrk.japaneast.cloudapp.azure.com
     :

うむ。いい感じ。

16
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?