前の投稿 IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる では,Kubernetes環境を構築した後,コンソール画面から少し操作をして終了としました。
今回はCLIを使ったクラスターへのアクセスについて書いてみたいと思います。
※既にIBM Cloud Private環境を構成済という前提で進めます。
コマンドラインからKubernetesクラスターを操作する
手元のPCから,IBM Cloud Private (Kubernetesクラスター)に接続し,操作・制御してみます。
そのために 2つのCLIと,1つのプラグインを導入します。
-
- kubectlコマンド: Kubernetes CLI [CLI]
-
- bxコマンド: IBM Cloud CLI [CLI]
-
- bx prプラグイン: IBM Cloud Private プラグイン [Plugin]
1) kubectlコマンド
1-1) kubectl: インストール
バイナリ取得,実行権限付与,OSのbinに移動。やることはそれだけです。
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.3/bin/darwin/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
参考: Install and Set Up kubectl
この他にも,IBM Cloud Privateのインストールイメージ内にあるkubectlコマンドをインストールすることもできます。
オフライン環境であったり,誰がやっても製品に対応したバージョンを導入できるという意味では便利かもしれません。
参考: Accessing your IBM Cloud Private cluster by using the kubectl CLI
1-2) IBM Cloud Privateへの接続,コマンド実行
- IBM Cloud Privateコンソールにログイン
https://10.132.75.83:8443/console
- [右上のユーザーアイコン]>[Configure client]のように辿ります (下図参照)
- ポップアップ内の "kubectl config〜〜〜" 数行をコピーします (下図参照)
- お手元のPCのターミナルにペーストして実行します
$ kubectl config set-cluster mycluster.icp --server=https://10.132.75.83:8001 --insecure-skip-tls-verify=true
Cluster "mycluster.icp" set.
$ kubectl config set-context mycluster.icp-context --cluster=mycluster.icp
Context "mycluster.icp-context" modified.
$ kubectl config set-credentials mycluster.icp-user --token=eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF0X2hhc2giOiJSZDJWSDh5Mjl3alBLNVJydjEtZjVRIiwiaXNzIjoiaHR0cHM6Ly9teWNsdXN0ZXIuaWNwOjk0NDMvb2lkYy9lbmRwb2ludC9PUCIsImF1ZCI6ImNiNmI2ZDg4YTA2MjIyYTRkZTQ0MjhmMWFmMmZlMmQyIiwiZXhwIjoxNTEyOTUxOTM4LCJpYXQiOjE1MTI5MDg3Mzh9.BYhO4iURwi0dhEqPn1DdWzNNzQZRb7-tnCXXKzdbyDOK_ChFxCC-3JdxE01JWNM3Xaku0Ji-SoII9UCbeQx_SCGabRHcvUJF2RAEbWAehykXFyB9SpyBA_W9CPUxr_s8NY3XlDD75-3EMXxad73FsgP64IgSMZD72Vm1jeS4UOge4oMkOIaAvjqud-kOYrKXib8J8oCEtI7yBNOLf8dA_puoYhl2HGD9BBrpFEpCsCkZj0m8WFeg0LAD-Km7uhI6pjsNLiWpOD4E2re82D7y7ZqGZAcGSNWh2WA07lJLlYLSbOOpwF38Z-CVCjbdqAr_Lsu0izfWYsbDPI_83W5lGA
User "mycluster.icp-user" set.
$ kubectl config set-context mycluster.icp-context --user=mycluster.icp-user --namespace=default
Context "mycluster.icp-context" modified.
$ kubectl config use-context mycluster.icp-context
Switched to context "mycluster.icp-context".
これで手元のPC上のkubectlコマンドで,IBM Cloud Private上のkube-api-serverに対するAPI操作ができるようになりました。
いくつか実行してみましょう。
- ノード情報を取得
$ kubectl get nodes
NAME STATUS AGE VERSION
10.132.75.83 Ready 1d v1.7.3-7+154699da4767fd
- pod一覧を取得
- カタログからnodejsを選択してデプロイしていたので,1つ表示されています
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
appnodejs-ibm-nodejs-sam-2158423597-m9gmk 1/1 Running 0 1d
- namespaceがkube-systemとして設定されているpodの一覧を取得
- ざっくり言うとIBM Cloud Privateの管理機能のプロセス
- クラスターコンポーネント,ネットワークや認証,コンテナの利用量計測,モニタリングなど
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
auth-apikeys-vdlfx 1/1 Running 0 1d
auth-idp-m2tf3 3/3 Running 1 1d
auth-pap-p1qj7 1/1 Running 0 1d
auth-pdp-5tsm1 1/1 Running 0 1d
calico-node-amd64-5lzc2 2/2 Running 0 1d
calico-policy-controller-1048521425-s07tl 1/1 Running 0 1d
catalog-catalog-apiserver-18wtr 1/1 Running 0 1d
catalog-catalog-controller-manager-3100032879-56t5f 1/1 Running 0 1d
catalog-ui-rzn8b 1/1 Running 0 1d
default-http-backend-198681862-t48zl 1/1 Running 0 1d
elasticsearch-client-3479638665-n8pfj 2/2 Running 0 1d
elasticsearch-data-0 1/1 Running 0 1d
elasticsearch-master-1570256108-g7b31 1/1 Running 0 1d
filebeat-ds-amd64-4tnlw 1/1 Running 0 1d
heapster-1250025240-h1x2h 2/2 Running 6 1d
helm-api-2886503079-7g3wf 1/1 Running 0 1d
helmrepo-577444838-xk6mm 1/1 Running 0 1d
icp-ds-0 1/1 Running 0 1d
icp-router-0lbfp 1/1 Running 0 1d
image-manager-0 2/2 Running 0 1d
k8s-etcd-10.132.75.83 1/1 Running 0 1d
k8s-mariadb-10.132.75.83 1/1 Running 0 1d
k8s-master-10.132.75.83 3/3 Running 0 1d
k8s-proxy-10.132.75.83 1/1 Running 0 1d
kube-dns-1038623989-jsrs6 3/3 Running 0 1d
logstash-4245234969-q4l16 1/1 Running 0 1d
metering-dm-653503904-b1hw0 1/1 Running 0 1d
metering-reader-amd64-4tvx6 1/1 Running 0 1d
metering-server-1157299371-zr5n1 1/1 Running 0 1d
metering-ui-3198198023-pkb81 1/1 Running 0 1d
monitoring-exporter-3293343457-q5t8v 1/1 Running 0 1d
monitoring-grafana-2476181526-kz8v7 2/2 Running 0 1d
monitoring-prometheus-2422752664-fcx6t 2/2 Running 0 1d
monitoring-prometheus-alertmanager-3766402458-ts6ws 2/2 Running 0 1d
monitoring-prometheus-kubestatemetrics-3025976457-kwff6 1/1 Running 0 1d
monitoring-prometheus-nodeexporter-amd64-dg9rq 1/1 Running 0 1d
nginx-ingress-lb-amd64-zhrv0 1/1 Running 0 1d
platform-api-14t17 1/1 Running 0 1d
platform-ui-3mbrx 1/1 Running 0 1d
rescheduler-9flqh 1/1 Running 0 1d
tiller-deploy-2307655136-zjv3n 1/1 Running 0 1d
unified-router-lkgjr 1/1 Running 0 1d
2) bxコマンド (IBM Cloud CLI)
2-1) IBM Cloud CLI のインストール
IBM Cloud CLI Installer のページから,お使いのOSにあったものを選択しダウンロードします。(下図参照)
macOSの場合だと,"Bluemix_CLI_0.6.2.pkg" のようなファイルがダウンロードできますので,オープンしてウィザードに従ってインストールしましょう。
$ bx --help // ヘルプで使いかたも確認しておきましょう
bxコマンドは,IBM Cloud (旧Bluemix)を操作できます。
IBM Cloud Privateでは,次のステップで導入するプラグインを追加して使用します。
3) bx prプラグイン (IBM Cloud Privateプラグイン)
3-1) IBM Cloud Private プラグインのインストール
IBM Cloud PrivateのKubernetesクラスターのノード操作や,helm charをロードする際などに使用します。
詳細は以下のCLIリファレンスを参照ください。
参考: IBM Cloud Private CLI command reference
以下の手順で,prプラグインをコンソール画面から取得し,お使いのPCに導入します。
- IBM Cloud Privateコンソールにログイン
https://10.132.75.83:8443/console
- [メニュー]>[Tools]>[Command line]を選択
- お使いのOSにあったものをクリックしてダウンロード
- bxコマンドで,上記でダウンロードしたファイル(icp-darwin-amd64)を指定してインストール
$ bx plugin install icp-darwin-amd64
- 参考:
$ bx pr --help
で使いかたを確認できます
3-2) bx prプラグインでクラスターを操作してみる
せっかくなので,いくつかコマンドを叩いてみましょう。
クラスターにログインします。
今回はシングルノードなので,masterノードのIPは 10.132.75.83
ですので以下のように指定します。
$ bx pr login -a https://10.132.75.83:8443 --skip-ssl-validation
Login method invokedAPI endpoint: https://10.132.75.83:8443
Username> admin
Password>
Authenticating...
OK
Select an account:
1. ICP Account (8733008909db59ca880939cfa1a17509)
Enter a number> 1
Targeted account: ICP Account (8733008909db59ca880939cfa1a17509)
APIエンドポイントや,APIバージョンを確認してみます。
$ bx pr api
API Endpoint: https://10.132.75.83:8443/api
API Version: v1
Skip SSL Validation: true
masterの一覧を出力してみましょう。
$ bx pr masters mycluster
OK
ID Public IP Private IP State
mycluster-00000000-m1 10.132.75.83 10.132.75.83 deployed
まとめ
(...というか余談がほとんど)
今回はCLIでのクラスターアクセスについて記述しました。
といっても高度なことは何もしていなくて,kubectlとIBM Cloud PrivateのCLIを導入,少し試しただけです。
CLIの使い分けという意味では,
アプリ(Pod/Deployment/Service)を直接デプロイしたい時は,きっとkubectlコマンドを使いますよね。
パッケージとしてhelm chartをロードする時や,IBM Cloud Privateそのもののクラスター操作については,bx prコマンド(プラグイン)を使用する方向性かと思われます。今は正直言ってかなり非力なCLIですが,kubeadmでやれることや,もっと便利に使えるように拡張されることを期待します。
ちなみにbxコマンドというのがそもそもIBM Cloud(旧Bluemix)を操作するコマンドだったりします、
つまり,bxコマンドでパブリッククラウド(IBM Cloud Container Service)と,プライベートクラウド(IBM Cloud Private)両方を制御できちゃう,そんな方向性でしょうか。
(BOSHでCloud Foundry Application RuntimeもCloud Foundry Container Runtimeも両方制御するよーというのと同じイメージですかね。)
ほぼコマンドインストール編のような感じでしたが,今回はこの辺りで。