×

CLI 配置文件允许您配置不同的配置文件或上下文,以用于CLI 工具概述。上下文包含与昵称关联的 OpenShift Dedicated 服务器信息。

关于 CLI 配置文件之间的切换

上下文允许您在使用 CLI 操作时轻松地在多个 OpenShift Dedicated 服务器或集群上的多个用户之间切换。昵称通过提供对上下文、用户凭据和集群详细信息的简写引用,使管理 CLI 配置更容易。用户第一次使用oc CLI 登录后,如果不存在,OpenShift Dedicated 会创建一个~/.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 Dedicated 集群的连接详细信息,包括其主服务器的地址。在此示例中,一个集群的昵称是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

CLI配置文件的手动配置

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

如果您想手动配置CLI配置文件,可以使用oc config命令,而不是直接修改文件。oc config命令包含许多为此目的提供的有用子命令。

表1. CLI配置子命令
子命令 用法

set-cluster

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

set-context

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

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

use-context

使用指定的上下文昵称设置当前上下文。

$ 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操作都将使用新的上下文。

加载和合并规则

发出CLI操作时,您可以遵循这些规则,以了解CLI配置的加载和合并顺序。

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

    • 如果设置了--config选项,则只加载该文件。该标志只设置一次,不进行合并。

    • 如果设置了$KUBECONFIG环境变量,则使用它。该变量可以是一个路径列表,如果是,则将这些路径合并在一起。修改值时,会在定义节的文件中修改它。创建值时,它会在第一个存在的文件中创建。如果链中没有文件存在,则它会在列表中的最后一个文件中创建它。

    • 否则,使用~/.kube/config文件,并且不进行合并。

  • 使用的上下文根据以下流程中的第一个匹配项确定:

    • --context选项的值。

    • CLI配置文件中的current-context值。

    • 此阶段允许空值。

  • 确定要使用的用户和集群。此时,您可能有也可能没有上下文;它们是根据以下流程中的第一个匹配项构建的,该流程针对用户和集群分别运行一次:

    • --user选项的值(用户名)和--cluster选项的值(集群名称)。

    • 如果存在--context选项,则使用上下文的 value。

    • 此阶段允许空值。

  • 确定要使用的实际集群信息。此时,您可能有也可能没有集群信息。集群信息的每一部分都是根据以下流程中的第一个匹配项构建的:

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

      • --server,

      • --api-version

      • --certificate-authority

      • --insecure-skip-tls-verify

    • 如果存在集群信息和属性的值,则使用它。

    • 如果没有服务器位置,则会发生错误。

  • 确定要使用的实际用户信息。用户使用与集群相同的规则构建,但每个用户只能有一种身份验证技术;冲突的技术会导致操作失败。命令行选项优先于配置文件值。有效的命令行选项是:

    • --auth-path

    • --client-certificate

    • --client-key

    • --token

  • 对于仍然缺失的任何信息,都将使用默认值,并提示您提供其他信息。