2.3. 管理 CLI 配置集


CLI 配置文件允许您配置不同的配置文件或上下文,以用于 CLI 工具概述。上下文由与 nickname 关联的用户身份验证 和 OpenShift Container Platform 服务器信息组成。

2.3.1. 关于 CLI 配置集间的切换

通过上下文,您可以在多个 OpenShift Container Platform 服务器或使用 CLI 操作时轻松地切换多个用户。nicknames 通过提供对上下文、用户凭证和集群详情的简短参考来更轻松地管理 CLI 配置。第一次使用 CLI 登录后,OpenShift Container Platform 会创建一个 ~/.kube/config 文件(如果不存在)。随着更多身份验证和连接详情被提供给 CLI,可以在 oc login 操作或手动配置 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 集群的连接详情,包括其 master 服务器的地址。在本例中,一个集群的别名为 openshift1.example.com:8443,另一个别名是 openshift2.example.com:8443
2
这个 contexts 项定义了两个上下文:一个别名是 alice-project/openshift1.example.com:8443/alice,使用 alice-project 项目,openshift1.example.com:8443 集群以及 alice 用户,另外一个别名是 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 statusoc 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.3.2. 手动配置 CLI 配置集

注意

本节介绍 CLI 配置的更多高级用法。在大多数情况下,您可以使用 oc loginoc project 命令登录并在上下文和项目间切换。

如果要手动配置 CLI 配置文件,您可以使用 oc config 命令,而不是直接修改这些文件。oc config 命令包括很多有用的子命令来实现这一目的:

表 2.1. CLI 配置子命令
子命令使用方法

set-cluster

在 CLI 配置文件中设置集群条目。如果引用的 cluster nickname 已存在,则指定的信息将合并到其中。

$ 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]

set-context

在 CLI 配置文件中设置上下文条目。如果引用的上下文 nickname 已存在,则指定的信息将合并在.

$ oc config set-context <context_nickname> [--cluster=<cluster_nickname>]
[--user=<user_nickname>] [--namespace=<namespace>]

use-context

使用指定上下文 nickname 设置当前上下文。

$ oc config use-context <context_nickname>

set

在 CLI 配置文件中设置单个值。

$ oc config set <property_name> <property_value>

<property_name> 是一个以点分隔的名称,每个令牌代表属性名称或映射键。<property_value> 是要设置的新值。

unset

在 CLI 配置文件中取消设置单个值。

$ oc config unset <property_name>

<property_name> 是一个以点分隔的名称,每个令牌代表属性名称或映射键。

view

显示当前正在使用的合并 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

  • 更新当前上下文以便用户登录到所需的命名空间:
$ oc config set-context `oc config current-context` --namespace=<project_name>
  • 检查当前上下文,确认是否实施了更改:
$ oc whoami -c

所有后续 CLI 操作都使用新的上下文,除非通过覆盖 CLI 选项或直至上下文切换为止。

2.3.3. 载入和合并规则

您可以在为 CLI 配置发出加载和合并顺序的 CLI 操作时遵循这些规则:

  • 使用以下层次结构和合并规则从工作站检索 CLI 配置文件:

    • 如果设置了 --config 选项,则只加载该文件。标志会被设置一次,且不会发生合并。
    • 如果设置了 $KUBECONFIG 环境变量,则会使用它。变量可以是路径列表,如果将路径合并在一起。修改值后,会在定义该节的文件中对其进行修改。创建值时,会在存在的第一个文件中创建它。如果链中不存在任何文件,则会在列表中创建最后一个文件。
    • 否则,将使用 ~/.kube/config 文件,且不会发生合并。
  • 使用的上下文根据以下流程中的第一个匹配项决定:

    • --context 选项的值。
    • CLI 配置文件中的 current-context 值。
    • 此阶段允许一个空值。
  • 要使用的用户和集群是决定的。此时,您可能也可能没有上下文;它们基于以下流程中的第一个匹配项构建,该流中为用户运行一次,一次用于集群:

    • 用于用户名的 --user 的值,以及集群名称的 --cluster 选项。
    • 如果存在 --context 选项,则使用上下文的值。
    • 此阶段允许一个空值。
  • 要使用的实际集群信息决定。此时,您可能没有集群信息。集群信息的每个信息根据以下流程中的第一个匹配项构建:

    • 以下命令行选项中的任何值:

      • --server,
      • --api-version
      • --certificate-authority
      • --insecure-skip-tls-verify
    • 如果集群信息和属性的值存在,则使用它。
    • 如果您没有服务器位置,则出现错误。
  • 要使用的实际用户信息是确定的。用户使用与集群相同的规则构建,但每个用户只能有一个身份验证技术;冲突的技术会导致操作失败。命令行选项优先于配置文件值。有效命令行选项包括:

    • --auth-path
    • --client-certificate
    • --client-key
    • --token
  • 对于仍缺失的任何信息,将使用默认值,并提示提供其他信息。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.