2.4. CLI プロファイルの管理
CLI 設定ファイルでは、CLI ツールの概要 で使用するさまざまなプロファイルまたはコンテキストを設定できます。コンテキストは、ユーザー認証 および ニックネーム と関連付けられた OpenShift Container Platform サーバー情報から構成されます。
2.4.1. CLI プロファイル間のスイッチについて
CLI 操作を使用する場合に、コンテキストを使用すると、複数の OpenShift Container Platform サーバーまたはクラスターにまたがって、複数ユーザー間の切り替えが簡単になります。ニックネームを使用すると、コンテキスト、ユーザーの認証情報およびクラスターの詳細情報の省略された参照を提供することで、CLI 設定の管理が容易になります。ユーザーが oc
CLI を使用して初めてログインした後、OpenShift Container Platform は ~/.kube/config
ファイルを作成します (まだ存在しない場合)。oc login
操作中に自動的に、または CLI プロファイルを手動で設定することにより、より多くの認証と接続の詳細が CLI に提供されると、更新された情報が設定ファイルに保存されます。
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
clusters
セクションは、マスターサーバーのアドレスを含む OpenShift Container Platform クラスターの接続の詳細を定義します。この例では、1 つのクラスターのニックネームはopenshift1.example.com:8443
で、もう 1 つのクラスターのニックネームはopenshift2.example.com:8443
となっています。- 2
- この
contexts
セクションでは、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
users
セクションは、ユーザーの認証情報を定義します。この例では、ユーザーニックネームalice/openshift1.example.com:8443
は、アクセストークンを使用します。
CLI は、実行時にロードされ、コマンドラインから指定されたオーバーライドオプションとともにマージされる複数の設定ファイルをサポートできます。ログイン後に、oc status
または oc project
コマンドを使用して、現在の作業環境を確認できます。
現在の作業環境の確認
$ 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 in this example.
現在のプロジェクトのリスト表示
$ 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
2.4.2. CLI プロファイルの手動設定
このセクションでは、CLI 設定の高度な使用方法を説明します。ほとんどの場合、oc login
コマンドおよび oc project
コマンドを使用してログインし、コンテキスト間とプロジェクト間の切り替えを実行できます。
CLI 設定ファイルを手動で設定する必要がある場合は、ファイルを直接変更せずに oc config
コマンドを使用することができます。oc config
コマンドには、この目的で役立ついくつかのサブコマンドが含まれています。
サブコマンド | 使用法 |
---|---|
| 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 login https://openshift1.example.com --token=ns7yVhuRNpDM9cgzfhhxQ7bM5s7N2ZVrkZepSRf4LC0
- 自動的に作成されたクラスターエントリーを表示します。
$ oc config view
出力例
apiVersion: v1 clusters: - cluster: insecure-skip-tls-verify: true server: https://openshift1.example.com name: openshift1-example-com contexts: - context: cluster: openshift1-example-com namespace: default user: alice/openshift1-example-com name: default/openshift1-example-com/alice current-context: default/openshift1-example-com/alice kind: Config preferences: {} users: - name: alice/openshift1.example.com user: token: ns7yVhuRNpDM9cgzfhhxQ7bM5s7N2ZVrkZepSRf4LC0
- 現在のコンテキストを更新して、ユーザーが必要な namespace にログインできるようにします。
$ oc config set-context `oc config current-context` --namespace=<project_name>
- 現在のコンテキストを調べて、変更が実装されていることを確認します。
$ oc whoami -c
後続のすべての CLI 操作は、オーバーライドする CLI オプションにより特に指定されていない限り、またはコンテキストが切り替わるまで、新しいコンテキストを使用します。
2.4.3. ルールの読み込みおよびマージ
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
-
- 欠落している情報がある場合には、デフォルト値が使用され、追加情報を求めるプロンプトが出されます。