第 2 章 OpenShift CLI (oc)
2.1. OpenShift CLI 入门
2.1.1. 关于 OpenShift CLI
使用 OpenShift CLI (oc
),您可以从终端创建应用程序并管理 Red Hat OpenShift Service on AWS (ROSA)项目。OpenShift CLI 在以下情况下是理想的选择:
- 直接使用项目源代码
- 编写 ROSA 操作脚本
- 在管理项目时,受带宽资源的限制,Web 控制台无法使用
2.1.2. 安装 OpenShift CLI
您可以通过下载二进制文件或使用 RPM 来安装 OpenShift CLI(oc
)。
2.1.2.1. 安装 OpenShift CLI
您可以安装 OpenShift CLI (oc
)来使用命令行界面与 ROSA 交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 ROSA 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 访问红帽客户门户上的 Red Hat OpenShift Service on AWS 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 单击 OpenShift v4 Linux 客户端 条目旁边的 Download Now,再保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
验证
安装 OpenShift CLI 后,可以使用
oc
命令:$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 访问红帽客户门户上的 Red Hat OpenShift Service on AWS 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 单击 OpenShift v4 Windows 客户端 条目旁边的 Download Now,再保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 访问红帽客户门户上的 Red Hat OpenShift Service on AWS 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
使用
oc
命令验证安装:$ oc <command>
2.1.2.2. 使用 Web 控制台安装 OpenShift CLI
您可以安装 OpenShift CLI (oc
),以便从 Web 控制台与 Red Hat OpenShift Service on AWS (ROSA)进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 ROSA 中的所有命令。下载并安装新版本的 oc
。
2.1.2.2.1. 使用 Web 控制台在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
-
从 OpenShift Cluster Manager 的 Downloads 页面下载您的操作系统的
oc
CLI 的最新版本。 从下载的存档中提取
oc
二进制文件。$ tar xvf <file>
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
2.1.2.2.2. 使用 Web 控制台在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
-
从 OpenShift Cluster Manager 的 Downloads 页面下载您的操作系统的
oc
CLI 的最新版本。 -
从下载的存档中提取
oc
二进制文件。 将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
安装 OpenShift CLI 后,可以使用 oc
命令:
C:\> oc <command>
2.1.2.2.3. 使用 Web 控制台在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
-
从 OpenShift Cluster Manager 的 Downloads 页面下载您的操作系统的
oc
CLI 的最新版本。 -
从下载的存档中提取
oc
二进制文件。 将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
2.1.2.3. 使用 RPM 安装 OpenShift CLI
对于 Red Hat Enterprise Linux (RHEL),如果您的红帽帐户上有一个有效的 Red Hat OpenShift Service on AWS (ROSA)订阅,您可以将 OpenShift CLI (oc
)安装为 RPM。
您必须下载二进制文件,为 RHEL 9 安装 oc
。Red Hat Enterprise Linux (RHEL) 9 不支持使用 RPM 软件包安装 oc
。
先决条件
- 必须具有 root 或 sudo 权限。
流程
使用 Red Hat Subscription Manager 注册:
# subscription-manager register
获取最新的订阅数据:
# subscription-manager refresh
列出可用的订阅:
# subscription-manager list --available --matches '*OpenShift*'
在上一命令的输出中,找到 ROSA 订阅的池 ID,并将订阅附加到注册的系统:
# subscription-manager attach --pool=<pool_id>
启用 ROSA 所需的存储库。
# subscription-manager repos --enable="rhocp-4-for-rhel-8-x86_64-rpms"
安装
openshift-clients
软件包:# yum install openshift-clients
验证
-
使用
oc
命令验证安装:
$ oc <command>
2.1.2.4. 使用 Homebrew 安装 OpenShift CLI
对于 macOS,您可以使用 Homebrew 软件包管理器安装 OpenShift CLI(oc
)。
先决条件
-
已安装 Homebrew(
brew
)。
流程
运行以下命令来安装 openshift-cli 软件包:
$ brew install openshift-cli
验证
-
使用
oc
命令验证安装:
$ oc <command>
2.1.3. 登录到 OpenShift CLI
您可以登录到 OpenShift CLI(oc
)以访问和管理集群。
先决条件
- 您必须有权访问 ROSA 集群。
-
已安装 OpenShift CLI (
oc
)。
要访问只能通过 HTTP 代理服务器访问的集群,可以设置 HTTP_PROXY
、HTTPS_PROXY
和 NO_PROXY
变量。oc
CLI 会使用这些环境变量以便所有与集群的通信都通过 HTTP 代理进行。
只有在使用 HTTPS 传输时,才会发送身份验证标头。
流程
输入
oc login
命令并传递用户名:$ oc login -u user1
提示时,请输入所需信息:
输出示例
Server [https://localhost:8443]: https://openshift.example.com:6443 1 The server uses a certificate signed by an unknown authority. You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n): y 2 Authentication required for https://openshift.example.com:6443 (openshift) Username: user1 Password: 3 Login successful. You don't have any projects. You can try to create a new project, by running oc new-project <projectname> Welcome! See 'oc help' to get started.
如果登录到 web 控制台,您可以生成包含令牌和服务器信息的 oc login
命令。您可以使用 命令来登录 OpenShift CLI,而无需交互式提示。要生成 命令,请从 web 控制台右上角的用户名下拉菜单中选择 Copy login command。
您现在可以创建项目或执行其他命令来管理集群。
2.1.4. 使用 Web 浏览器登录 OpenShift CLI
您可以使用 Web 浏览器访问和管理集群来登录 OpenShift CLI (oc
)。这可以使用户避免将其访问令牌插入到命令行中。
通过 Web 浏览器登录 CLI,在 localhost 上使用 HTTP (而非 HTTPS)运行服务器;在多用户工作站中请谨慎使用。
先决条件
- 您必须有权访问 Red Hat OpenShift Service on AWS 集群。
-
已安装 OpenShift CLI(
oc
)。 - 已安装浏览器。
流程
输入
oc login
命令,使用--web
标志:$ oc login <cluster_url> --web 1
- 1
- 另外,您可以指定服务器 URL 和回调端口。例如,
oc login <cluster_url> --web --callback-port 8280 localhost:8443
。
Web 浏览器会自动打开。如果没有,请点命令输出中的链接。如果您没有指定 Red Hat OpenShift Service on AWS server
oc
会尝试打开当前oc
配置文件中指定的集群的 Web 控制台。如果没有oc
配置,oc
会以交互方式提示输入服务器 URL。输出示例
Opening login URL in the default browser: https://openshift.example.com Opening in existing browser session.
- 如果有多个身份提供程序可用,请从提供的选项中选择您的选择。
-
在对应的浏览器字段中输入您的用户名和密码。登录后,浏览器会显示
access token received successfully; please return to your terminal
。 检查 CLI 是否有登录确认。
输出示例
Login successful. You don't have any projects. You can try to create a new project, by running oc new-project <projectname>
Web 控制台默认为前面会话中使用的配置集。要在 Administrator 和 Developer 配置集间切换,请从 Red Hat OpenShift Service on AWS Web 控制台注销并清除缓存。
您现在可以创建项目或执行其他命令来管理集群。
2.1.5. 使用 OpenShift CLI
参阅以下部分以了解如何使用 CLI 完成常见任务。
2.1.5.1. 创建一个项目
使用oc new-project
命令创建新项目。
$ oc new-project my-project
输出示例
Now using project "my-project" on server "https://openshift.example.com:6443".
2.1.5.2. 创建一个新的应用程序
使用oc new-app
命令创建新应用程序。
$ oc new-app https://github.com/sclorg/cakephp-ex
输出示例
--> Found image 40de956 (9 days old) in imagestream "openshift/php" under tag "7.2" for "php" ... Run 'oc status' to view your app.
2.1.5.3. 查看 pod
使用oc get pods
命令查看当前项目的 pod。
当您在 pod 中运行 oc
且没有指定命名空间时,默认使用 pod 的命名空间。
$ oc get pods -o wide
输出示例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE cakephp-ex-1-build 0/1 Completed 0 5m45s 10.131.0.10 ip-10-0-141-74.ec2.internal <none> cakephp-ex-1-deploy 0/1 Completed 0 3m44s 10.129.2.9 ip-10-0-147-65.ec2.internal <none> cakephp-ex-1-ktz97 1/1 Running 0 3m33s 10.128.2.11 ip-10-0-168-105.ec2.internal <none>
2.1.5.4. 查看 pod 日志
使用oc logs
命令查看特定 pod 的日志。
$ oc logs cakephp-ex-1-deploy
输出示例
--> Scaling cakephp-ex-1 to 1 --> Success
2.1.5.5. 查看当前项目
使用oc project
命令查看当前项目。
$ oc project
输出示例
Using project "my-project" on server "https://openshift.example.com:6443".
2.1.5.6. 查看当前项目的状态
使用 oc status
命令查看有关当前项目的信息,如服务、部署和构建配置。
$ oc status
输出示例
In project my-project on server https://openshift.example.com:6443 svc/cakephp-ex - 172.30.236.80 ports 8080, 8443 dc/cakephp-ex deploys istag/cakephp-ex:latest <- bc/cakephp-ex source builds https://github.com/sclorg/cakephp-ex on openshift/php:7.2 deployment #1 deployed 2 minutes ago - 1 pod 3 infos identified, use 'oc status --suggest' to see details.
2.1.5.7. 列出支持的 API 资源
使用oc api-resources
命令查看服务器上支持的 API 资源列表。
$ oc api-resources
输出示例
NAME SHORTNAMES APIGROUP NAMESPACED KIND bindings true Binding componentstatuses cs false ComponentStatus configmaps cm true ConfigMap ...
2.1.6. 获得帮助
您可以使用以下方法获得 CLI 命令和 ROSA 资源的帮助:
使用
oc help
获取所有可用 CLI 命令的列表和描述:示例:获取 CLI 的常规帮助信息
$ oc help
输出示例
OpenShift Client This client helps you develop, build, deploy, and run your applications on any OpenShift or Kubernetes compatible platform. It also includes the administrative commands for managing a cluster under the 'adm' subcommand. Usage: oc [flags] Basic Commands: login Log in to a server new-project Request a new project new-app Create a new application ...
使用
--help
标志获取有关特定CLI命令的帮助信息:示例:获取
oc create
命令的帮助信息$ oc create --help
输出示例
Create a resource by filename or stdin JSON and YAML formats are accepted. Usage: oc create -f FILENAME [flags] ...
使用
oc explain
命令查看特定资源的描述信息和项信息:示例:查看
Pod
资源的文档$ oc explain pods
输出示例
KIND: Pod VERSION: v1 DESCRIPTION: Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts. FIELDS: apiVersion <string> APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources ...
2.1.7. 注销 OpenShift CLI
您可以注销 OpenShift CLI 以结束当前会话。
使用
oc logout
命令。$ oc logout
输出示例
Logged "user1" out on "https://openshift.example.com"
这将从服务器中删除已保存的身份验证令牌,并将其从配置文件中删除。