在 CLI 中设置第一个经典集群
经典基础结构
在本教程中,您将使用 CLI 在经典基础架构上部署 Red Hat OpenShift on IBM Cloud 集群。
受众
本教程是为希望了解如何首次使用 CLI 创建 Red Hat OpenShift on IBM Cloud 集群的集群管理员设计的。
目标
在本教程中,您将完成以下任务。
- 在华盛顿特区创建一个具有 4 个核心和 16 GB 内存的 2 工作程序节点的集群。
- 打开 Red Hat OpenShift 网络控制台。
- 部署样本应用程序。
- 在路由上公开应用程序,以便外部用户可以访问该服务。
你会得到什么
在本教程中,您将使用 CLI 创建以下资源。 如果您不想在完成教程后保留这些资源,那么可以执行一些可选步骤来删除这些资源。
- 具有 2 工作程序节点的经典集群
- 部署到集群的简单 Hello World 应用程序
- 公开应用程序的路径
集群资源概述
查看下图以获取公共集群资源的概述。
先决条件
-
请检查您的许可权。 如果您是帐户所有者,那么您已具有创建集群所需的许可权,并且可以继续执行下一步。 如果您不是帐户所有者,请要求帐户所有者 设置 API 密钥,并在 IBM Cloud IAM 中为您分配所需的许可权。
创建 Red Hat OpenShift on IBM Cloud 集群
-
登录到您的帐户和资源组。 如果您有联合帐户,请包括
--sso
选项。ibmcloud login [-g RESOURCE GROUP] [--sso]
-
运行以下命令,在华盛顿特区创建一个版本 4.17 集群,其中包含2个工作节点,每个节点有4个核心和16 GB内存。
ibmcloud oc cluster create classic --name my-tutorial-cluster --location wdc04 --version 4.17_openshift --flavor b3c.4x16 --workers 2 --public-service-endpoint
-
创建集群可能需要一些时间才能完成。 群集状态显示 “正常” 后,群集网络和 Ingress 组件需要大约 10 分钟的时间来部署和更新群集域(用于 Red Hat OpenShift 网络控制台和其他路由)。
-
列出集群详细信息。 查看集群 State,检查 Ingress Subdomain,并记下 Master URL。
ibmcloud oc cluster get --cluster <cluster_name_or_ID>
-
下载并添加集群的
kubeconfig
配置文件。ibmcloud oc cluster config --cluster <cluster_name_or_ID>
-
在浏览器中,导航至 Master URL 的地址并附加
/console
。 例如,https://c0.containers.cloud.ibm.com:23652/console
。 -
单击概要文件 IAM#user.name@email.com > 复制登录命令。 显示
oc login
令牌命令并将其复制到命令行以通过 CLI 进行认证。 -
通过检查版本,验证
oc
命令是否针对您的集群正常运行。oc version
示例输出
Client Version: v4.17.0 Kubernetes Version: v1.32.5.2
如果无法执行需要管理员权限的操作(如列出群集中的所有工作节点或 pod),请运行
ibmcloud oc cluster config --cluster <cluster_name_or_ID> --admin
命令为群集管理员下载 TLS 证书和权限文件。
浏览 Red Hat OpenShift 控制台
- 从 控制台选择您的 Red Hat OpenShift 集群,然后点击 OpenShift 网络控制台。
- 要在 CLI 中使用集群,请单击概要文件
IAM#user.name@email.com
> 复制登录命令。 显示oc login
令牌命令并将其复制到命令行中,以使用 CLI 进行认证。
将应用程序部署到群集
-
为 Hello World 应用程序创建项目。
oc new-project hello-world
-
使用
oc new-app
命令构建样本应用程序 从源代码。oc new-app --name hello-world https://github.com/IBM/container-service-getting-started-wt --context-dir="Lab 1"
输出中可能会显示警告消息,但不会影响此示例。
-
列出 hello-world 服务并记下服务名称。 除非您为服务创建路由,以便 Ingress 控制器能将外部流量请求转发到应用程序,否则您的应用程序就会监听这些内部群集 IP 地址上的流量。
oc get svc -n hello-world
示例输出
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-world ClusterIP 172.21.xxx.xxx <none> 8080/TCP 31m
-
列出 pod,并确保 hello-world pod 状态为 正在运行,
build
和deploy
pod 为 已完成oc get pods -n hello-world
示例输出
NAME READY STATUS RESTARTS AGE hello-world-1-9cv7d 1/1 Running 0 30m hello-world-1-build 0/1 Completed 0 31m hello-world-1-deploy 0/1 Completed 0 31m
-
设置路径,以便可以公共访问 hello world 服务。
oc create route edge --service=hello-world -n hello-world
-
从 Host/Port 输出获取路径主机名地址。
oc get route -n hello-world
示例输出
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD hello-world hello-world-hello.world.CLUSTER-NAME-RANDOM-ID.REGION.containers.appdomain.cloud hello-world 8080-tcp edge/Allow None
-
访问应用程序。 确保将
https://
附加到路径主机名。 可能需要一分钟时间才能显示公开的服务。curl https://hello-world-hello-world.CLUSTER-NAME-RANDOM-ID.REGION.containers.appdomain.cloud
示例输出
Hello world from hello-world-9cv7d! Your app is up and running in a cluster!
清理教程资源
- 列出
hello-world
项目中的资源。
示例输出oc get all -l app=hello-world -o name -n hello-world
pod/hello-world-1-dh2ff replicationcontroller/hello-world-1 service/hello-world deploymentconfig.apps.openshift.io/hello-world buildconfig.build.openshift.io/hello-world build.build.openshift.io/hello-world-1 imagestream.image.openshift.io/hello-world imagestream.image.openshift.io/node route.route.openshift.io/hello-world
- 删除资源。
oc delete all -l app=hello-world -n hello-world
后续步骤?
有关使用应用程序的更多信息,请参阅 Red Hat OpenShift 开发者活动 文档。
安装两个流行的 Red Hat OpenShift on IBM Cloud 集群插件:IBM Cloud Logs 和 IBM Cloud Monitoring。