×

CLI 配置文件允许您配置不同的配置文件或上下文,以便与CLI 工具概述一起使用。上下文包含与昵称关联的 Red Hat OpenShift Service on AWS (ROSA) 服务器信息。

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

上下文允许您在使用 CLI 操作时轻松地在多个 ROSA 服务器或集群中的多个用户之间切换。昵称通过提供上下文、用户凭据和集群详细信息的简写引用,使管理 CLI 配置更加容易。用户第一次使用oc CLI 登录后,如果不存在~/.kube/config文件,ROSA 会创建一个。随着更多身份验证和连接详细信息提供给 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部分定义了 ROSA 集群的连接详细信息,包括其主服务器的地址。在此示例中,一个集群的昵称是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 选项,则使用该选项的值。

    • 在此阶段允许为空值。

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

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

      • --server,

      • --api-version

      • --certificate-authority

      • --insecure-skip-tls-verify

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

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

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

    • --auth-path

    • --client-certificate

    • --client-key

    • --token

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