第3章 CLI プロファイルの管理
3.1. 概要
CLI 設定ファイルにより、「OpenShift CLI」で使用するさまざまなプロファイルまたは コンテキスト の設定が可能になります。コンテキストは、「ユーザー認証」および ニックネーム と関連付けられた OpenShift Container Platform サーバー情報から構成されます。
3.2. CLI プロファイル間の切り替え
CLI 実行操作を使用する場合に、コンテキストを使用すると、複数の OpenShift Container Platform サーバーまたは クラスター にわたる複数ユーザーの切り替えが簡単になります。ニックネームで、コンテキスト、ユーザーの認証情報およびクラスター情報の省略された参照情報を提供することで、CLI 設定の管理が簡単になります。
初回の「CLI でのログイン」後、OpenShift Container Platform は ~/.kube/config ファイルを作成します (すでに存在しない場合)。追加の認証および接続の詳細情報が oc login
操作時に自動的に、または「明示的な設定」によって CLI に提供されると、更新情報は設定ファイルに保存されます。
例3.1 CLI 設定ファイル
apiVersion: v1 clusters: 1 - cluster: insecure-skip-tls-verify: true server: https://openshift1.example.com:8443 name: openshift1.example.com:8443 - cluster: insecure-skip-tls-verify: true server: https://openshift2.example.com:8443 name: openshift2.example.com:8443 contexts: 2 - context: cluster: openshift1.example.com:8443 namespace: alice-project user: alice/openshift1.example.com:8443 name: alice-project/openshift1.example.com:8443/alice - context: cluster: openshift1.example.com:8443 namespace: joe-project user: alice/openshift1.example.com:8443 name: joe-project/openshift1/alice current-context: joe-project/openshift1.example.com:8443/alice 3 kind: Config preferences: {} users: 4 - name: alice/openshift1.example.com:8443 user: token: xZHd2piv5_9vQrg-SKXRJ2Dsl9SceNJdhNTljEKTb8k
- 1
クラスター
セクションは、マスターサーバーのアドレスを含む OpenShift Container Platform クラスターの接続の詳細について定義します。この例では、1 つのクラスターのニックネームは openshift1.example.com:8443 で、もう 1 つのクラスターのニックネームは openshift2.example.com:8443 となっています。- 2
- この
コンテキスト
セクションは、2 つのコンテキストを定義します。1 つは、ニックネームが alice-project/openshift1.example.com:8443/alice で、alice-project プロジェクト、openshift1.example.com:8443 クラスター、および alice ユーザーを使用します。もう 1 つはニックネームが joe-project/openshift1.example.com:8443/alice で、joe-project プロジェクト、openshift1.example.com:8443 クラスター、および alice ユーザーを使用します。 - 3
current-context
のパラメーターは、joe-project/openshift1.example.com:8443/alice コンテキストが現在使用中であることを示しています。これにより、alice ユーザーは、openshift1.example.com:8443 クラスターの joe-project プロジェクトで作業することが可能になります。- 4
CLI は複数の設定ファイルをサポートできます。これらの設定ファイルは、コマンドラインで指定した上書きオプションと共に、ランタイム時に読み込まれ、マージされます。
ログイン後、oc status
コマンドまたは oc project
コマンドを使用して、現在稼働中の環境を確認できます。
例3.2 稼働中の環境の確認
$ oc status oc status In project Joe's Project (joe-project) service database (172.30.43.12:5434 -> 3306) database deploys docker.io/openshift/mysql-55-centos7:latest #1 deployed 25 minutes ago - 1 pod service frontend (172.30.159.137:5432 -> 8080) frontend deploys origin-ruby-sample:latest <- builds https://github.com/openshift/ruby-hello-world with joe-project/ruby-20-centos7:latest #1 deployed 22 minutes ago - 2 pods To see more information about a service or deployment, use 'oc describe service <name>' or 'oc describe dc <name>'. You can use 'oc get all' to see lists of each of the types described above.
$ oc project Using project "joe-project" from context named "joe-project/openshift1.example.com:8443/alice" on server "https://openshift1.example.com:8443".
ユーザー認証情報およびクラスター詳細の組み合わせを使用してログインするには、oc login
コマンドを再度実行し、対話プロセスで関連情報を指定します。コンテキストが存在しない場合は、コンテキストが指定される情報に基づいて作成されます。
すでにログインしている場合で現行ユーザーがアクセス可能な別のプロジェクトに切り替えたい場合は、oc project
コマンドを使用してプロジェクト名を指定します。
$ oc project alice-project Now using project "alice-project" on server "https://openshift1.example.com:8443".
oc config view
コマンドを使用すると、出力に示されるような現在の CLI 設定全体をいつでも表示することができます。
「高度な使用方法」で利用できる CLI 設定コマンドが他にもあります。
管理者の認証情報が利用できる状態であっても 「デフォルトシステムユーザー」の system:admin としてログインしていない場合には、認証情報が「CLI 設定ファイル」にある限り、いつでもこのユーザーとしてログインし直すことができます。以下のコマンドはログインを実行し、デフォルト のプロジェクトに切り替えます。
$ oc login -u system:admin -n default
3.3. CLI プロファイルの手動設定
このセクションでは、CLI 設定の高度な使用方法について説明します。ほとんどの場合、oc login
コマンドと oc project
コマンドを使用するだけで、ログインやコンテキスト間およびプロジェクト間の切り替えを実行できます。
CLI 設定ファイルを手動で設定する場合に、ファイル自体を変更する代わりに oc config
コマンドを使用できます。oc config
コマンドには、この手動設定に役立つ多数のサブコマンドが含まれています。
サブコマンド | 使用方法 |
---|---|
|
CLI 設定ファイルにユーザーエントリーを設定します。参照されるユーザーニックネームがすでに存在する場合、指定情報はマージされます。 $ oc config set-credentials <user_nickname> [--client-certificate=<path/to/certfile>] [--client-key=<path/to/keyfile>] [--token=<bearer_token>] [--username=<basic_user>] [--password=<basic_password>] |
|
CLI 設定ファイルにクラスターエントリーを設定します。参照されるクラスターのニックネームがすでに存在する場合、指定情報はマージされます。 $ oc config set-cluster <cluster_nickname> [--server=<master_ip_or_fqdn>] [--certificate-authority=<path/to/certificate/authority>] [--api-version=<apiversion>] [--insecure-skip-tls-verify=true] |
|
CLI 設定ファイルにコンテキストエントリーを設定します。参照されるコンテキストのニックネームがすでに存在する場合、指定情報はマージされます。 $ oc config set-context <context_nickname> [--cluster=<cluster_nickname>] [--user=<user_nickname>] [--namespace=<namespace>] |
|
指定されたコンテキストのニックネームを使用して、現在のコンテキストを設定します。 $ oc config use-context <context_nickname> |
|
CLI 設定ファイルに個別の値を設定します。 $ oc config set <property_name> <property_value>
|
|
CLI 設定ファイルの個別の値の設定を解除します。 $ oc config unset <property_name>
|
|
現在使用中のマージされた CLI 設定を表示します。 $ oc config view 指定された CLI 設定ファイルの結果を表示します。 $ oc config view --config=<specific_filename> |
使用例
以下の設定ワークフローを見てみましょう。まず、「アクセストークン」を使用するユーザーニックネーム alice の認証情報を設定します。
$ oc config set-credentials alice --token=NDM2N2MwODgtNjI1Yy10N3VhLTg1YmItYzI4NDEzZDUyYzVi
openshift1 という名前のクラスターエントリーを設定します。
$ oc config set-cluster openshift1 --server=https://openshift1.example.com
alice ユーザーおよび openshift1 クラスターを使用する、alice という名前のコンテキストを設定します。
$ oc config set-context alice --cluster=openshift1 --user=alice
alice コンテキストが作成されたので、そのコンテキストに切り替えます。
$ oc config use-context alice
alice コンテキストの aliceproject namespace を設定します。
$ oc config set contexts.alice.namespace aliceproject
ここで、作成された設定を表示することができます。
$ oc config view
apiVersion: v1
clusters:
- cluster:
server: https://openshift1.example.com
name: openshift1
contexts:
- context:
cluster: openshift1
namespace: aliceproject
user: alice
name: alice
current-context: alice 1
kind: Config
preferences: {}
users:
- name: alice
user:
token: NDM2N2MwODgtNjI1Yy10N3VhLTg1YmItYzI4NDEzZDUyYzVi
- 1
- 現在のコンテキストは、alice に設定されています。
上書きする CLI オプションで指定されるか、またはコンテキストが切り替えられない限り、後続のすべての CLI 操作は alice コンテキストを使用します。
3.4. 読み込みおよびマージのルール
CLI 操作を実行する際、CLI 設定の読み込みおよびマージの順序は、以下のルールに従います。
CLI 設定ファイルは、以下の階層およびマージルールを使用してワークステーションから取得されます。
-
--config
オプションが設定されている場合、そのファイルのみが読み込まれます。フラグが一度だけ設定される可能性があり、マージは実行されません。 -
$KUBECONFIG
環境変数が設定されている場合は、これを使用します。変数はパスの一覧である可能性があり、その場合、パスは 1 つにマージされます。値が変更される場合は、スタンザを定義するファイルで変更されます。値が作成される場合は、存在する最初のファイルで作成されます。ファイルがチェーン内に存在しない場合は、一覧の最後のファイルが作成されます。 -
または、~/.kube/config ファイルが使用され、マージは実行されません。
-
使用するコンテキストは、以下のチェーンの最初のヒットに基づいて決定されます。
-
--context
オプションの値。 -
CLI 設定ファイルの
current-context
値。 -
この段階では空の値が許可されます。
-
使用するユーザーおよびクラスターが決定されます。この時点では、コンテキストがある場合とない場合があります。コンテキストは、以下のチェーンの最初のヒットに基づいて作成されます。これは、ユーザー用に 1 回、クラスター用に 1 回実行されます。
-
ユーザー名の
--user
オプションおよびクラスター名の--cluster
オプションの値。 -
--context
オプションがある場合は、コンテキストの値を使用します。 -
この段階では空の値が許可されます。
-
ユーザー名の
使用する実際のクラスター情報が決定されます。この時点では、クラスター情報がある場合とない場合があります。それぞれのクラスター情報は、以下のチェーンの最初のヒットに基づいて作成されます。
以下のコマンドラインオプションのいずれかの値。
-
--server
, -
--api-version
-
--certificate-authority
-
--insecure-skip-tls-verify
-
- クラスター情報および属性の値がある場合は、それを使用します。
-
サーバーロケーションがない場合は、エラーが生じます。
使用する実際のユーザー情報が決定されます。ユーザーは、クラスターと同じルールを使用して作成されます。ただし、複数の手法が競合することによって操作が失敗することから、ユーザーごとの 1 つの認証手法のみを使用できます。コマンドラインのオプションは、設定ファイルの値よりも優先されます。以下は、有効なコマンドラインのオプションです。
-
--auth-path
-
--client-certificate
-
--client-key
-
--token
-
- 欠落している情報がある場合には、デフォルト値が使用され、追加情報を求めるプロンプトが出されます。