(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【IBMCloud/ROKS】ブラウザで取得したtokenでoc loginする流れ

スポンサーリンク

はじめに

IBM Cloud上のOpenShift環境(ROKS)に対して、OpenShift CLI(oc)コマンドを利用してログインする流れについて記載しました。イメージとしては、ブラウザからTokenを取得&同Tokenを利用してoc loginを試みます。

環境情報
$ oc version
Client Version: 4.6.32

ログイン情報の取得

IBM Cloudにログイン後、「Openshift>クラスター」と進むと「OpenShift Web コンソール」というボタンがあります。
ここを押下するとWebコンソールが開き、右上の「IAM#XX」というユーザ情報が表示されている箇所をプルダウンすると「Copy login command」が選択可能。これを選択するとタブが開いて以下情報が表示されます。

Your API token is
sha256~_XX
Log in with this token
oc login --token=sha256~_XX --server=https://cX-e.jp-tok.containers.cloud.ibm.com:XX
Use this token directly against the API
curl -H "Authorization: Bearer sha256~_XX" "https://cX-e.jp-tok.containers.cloud.ibm.com:XX/apis/user.openshift.io/v1/users/~"

このoc login...と記載のある箇所を利用します。

実際にログインする

サーバーのURLにprivateという文言がないのでVPN接続等は不要でpingが通るので

$ ping cX-e.jp-tok.containers.cloud.ibm.com
cX.jp-tok.containers.cloud.ibm.com [128.168.75.X]に ping を送信しています 32 バイトのデータ:
128.168.75.X からの応答: バイト数 =32 時間 =42ms TTL=51 ...
...

同ログインコマンドをそのまま押下するとログインに成功して

$ oc login --token=sha256~_.. --server=https://cX-e.jp-tok.containers.cloud.ibm.com:X
Logged into ... as "IAM#XX" using the token provided.

コンテキストが格納されます。

$ kubectl config get-contexts
*         default/cX-e-jp-tok-containers-cloud-ibm-com:X/IAM#XX   cX-e-jp-tok-containers-cloud-ibm-com:X IAM#X/cX-e-jp-tok-containers-cloud-ibm-com:X              default

尚、期間がすぎると再度Tokenを取得する必要があります。

$ oc get node
Unable to connect to the server: failed to refresh token: oauth2: cannot fetch token: 400 Bad Request
Response: {
        "errorCode": "BXNIM0408E",
        "errorMessage": "Provided refresh token is expired"
}

終わりに

下記の流れと同じでログインに成功するとUserが動的に作成されて

情報もコマンドから確認できます。

$ oc get user
NAME                         UID                                    FULL NAME   IDENTITIES
...
IAM#XX        XXX               IAM:XX

同トークンは一定期間が経つと期限が切れますが、ibmcloudコマンド不要でクラスターにアクセスができます。
ちなみにAdmin権限であれば以下でログインも可能です。

$ ibmcloud oc cluster config -c xx --admin

以上、ご参考になれば幸いです。