文章目录
环境
- RHEL 9.3
- Red Hat OpenShift Local 2.32
登录
在 crc start
启动crc时,可以看到:
powershell
......
The server is accessible via web console at:
https://console-openshift-console.apps-crc.testing
Log in as administrator:
Username: kubeadmin
Password: MSmt7-d8LbI-igtzV-DeJY9
Log in as user:
Username: developer
Password: developer
Use the 'oc' command line interface:
$ eval $(crc oc-env)
$ oc login -u developer https://api.crc.testing:6443
......
通过 crc console --credentials
也可以查看登录信息:
powershell
$ crc console --credentials
To login as a regular user, run 'oc login -u developer -p developer https://api.crc.testing:6443'.
To login as an admin, run 'oc login -u kubeadmin -p MSmt7-d8LbI-igtzV-DeJY9 https://api.crc.testing:6443'
登录web console https://console-openshift-console.apps-crc.testing
:
用 kubeadmin
或者 developer
登录都可以。
比如用 developer
登录,如下:
Web console提供两种视角: Administrator
视角和 Developer
视角。Developer视角提供开发人员用例特有的工作流。
对于非管理员用户,默认视图是Developer视角。对于集群管理员,默认的视图是Administrator视角。如果没有 cluster-admin
权限,则无法在web console中看到Administrator视角。
本例中使用 developer
用户登录(参见上图右上角),该用户有管理员权限,所以默认是Administrator视角(参见上图左上角)。
切换到Developer视角,如下:
创建project
Project使得用户社区可以在隔离中组织和管理其内容。Project是OCP对Kubernetes namespace的扩展。Project具有额外的功能,使得用户能够自我provision(self-provisioning)。
用户需要从管理员处接收project的访问权限。集群管理员可以允许开发人员创建自己的project。多数情况下,用户会自动获得其自己的project的访问权限。
每个project都有自己的一系列对象、策略、约束和service帐户。
点击"+Add" -> "Create a new project":
- Name:填入
user-getting-started
- Display name:填入
Getting Started with OpenShift
然后点击"Create"按钮,创建project。
赋予查看权限
OCP会在每个project中自动创建一些特殊的service帐户。默认服务帐户会负责运行pod。OCP使用并将此service帐户注入到所启动的每个pod中。
本例为默认的 ServiceAccount
对象创建一个 RoleBinding
对象。Service帐户与 OCP API通信,以了解project中的 pod、service和资源。
切换到Administrator视角。
点击"User Management" -> "RoleBindings" -> "Create binding"
- Name:填入
sa-user-account
- Namespace:搜索并选择
user-getting-started
- Role name:搜索并选择
view
- Subject:选择ServiceAccount
- Subject namespace:搜索并选择
user-getting-started
- Subject name:填入
default
然后,点击"Create"按钮,创建binding。
部署第一个image
在OCP中部署应用的最简单方法是运行已有的容器image。本例部署一个应用的前端组件,名为 national-parks-app
。该web应用显示一个交互式的地图,显示全球主要国家公园的位置。
切换到Devloper视角。
点击"+Add" -> "Container images":
- Image name from external registry:填入
quay.io/openshiftroadshow/parksmap:latest
- Application:填入
national-parks-app
- Name:填入
parksmap
- Resource type:选择Deployment
- 勾选"Create a route"
- 添加以下label:
app=national-parks-app
component=parksmap
role=frontend
然后,点击"Create"按钮,创建image。
检查pod
OCP使用Kubernetes的pod概念,它是部署在同一主机上的一个或多个容器,也是可被定义、部署和管理的最小计算单元。对于容器来说,pod大致相当于机器实例(物理的或虚拟的)。
通过Overview面板,可以访问 parksmap
deployment的许多功能。在Details和Resources页签可以扩展应用pod,检查构建状态、service和route。
在上图中,点击 parksmap
deployment:
可以看到其详细信息:
包括Details、Resources、Observe三个页签。
扩展应用
在Kubernetes中, Deployment
对象定义了如何部署应用。多数情况下,用户会把pod、service、ReplicaSets、deployment资源一起使用。在大多数情况下,OCP会创建这些资源。
在部署 national-parks-app
image时,会创建一个deployment资源。本例只部署了一个pod。
把应用从一个pod实例扩展到两个pod实例:
在上图中,切换到"Details"页签,然后点击上箭头,扩容到两个pod:
同理,可用下剪头将其缩容回一个pod。
部署一个Python应用
本例为 parksmap
应用部署后端service。Python应用在MongoDB数据库执行2D地理空间( geo-spatial)查询,以定位和返回世界上所有国家公园的地图坐标。
部署的后端service是 nationalparks
。
点击"+Add" -> "Import from Git":
- Git Repo URL:填入
https://github.com/openshift-roadshow/nationalparks-py.git
- Application:搜索并选择
national-parks-app
- Name:填入
nationalparks
- Resource type:选择Deployment
- 勾选"Create a route"
- 添加如下label:
app=national-parks-app
component=nationalparks
role=backend
type=parksmap-backend
点击"Create"按钮,创建deployment。
点击"nationalparks" deployment,可见正在构建:
大约一两分钟后,构建完成。
连接数据库
接下来,部署并连接一个MongoDB数据库, national -parks-app
应用将会存储位置信息于该数据库。一旦把 national-parks-app
应用标记为地图可视化工具的后端, parksmap
deployment会使用OCP发现机制来自动显示地图。
点击"+Add" -> "Container images":
- Image Name:填入
quay.io/centos7/mongodb-36-centos7
- Runtime icon:搜索并选择
mongodb
- Application:搜索并选择
national-parks-app
- Name:填入
mongodb-nationalparks
- Resource type:选择Deployment
- 不勾选"Create a route"
- 在最下面,点击"Deployment",添加以下环境变量:
MONGODB_USER
:mongodb
MONGODB_PASSWORD
:mongodb
MONGODB_DATABASE
:mongodb
MONGODB_ADMIN_PASSWORD
:mongodb
点击"Create"按钮,创建deployment。
创建secret
Secret
对象提供了一种机制来保存敏感信息,如密码、OCP客户端配置文件、私有源仓库凭证等。Secret把敏感内容与pod解耦。可以通过volume插件把secret mount到容器中,系统也可以为pod而使用secret执行操作。本例添加secret nationalparks-mongodb-parameters
,并将它mount到 nationalparks
工作负载中。
点击"Secrets" -> "Create" -> "Key/value secret":
添加以下key/value:
MONGODB_USER
:mongodb
DATABASE_SERVICE_NAME
:mongodb-nationalparks
MONGODB_PASSWORD
:mongodb
MONGODB_DATABASE
:mongodb
MONGODB_ADMIN_PASSWORD
:mongodb
然后,点击"Create"按钮,创建secret。最后,点击"Add Secret to workload"按钮,在弹出的对话框中,选择"nationalparks",然后点击"Save"按钮:
该配置变化会触发 nationalparks
deployment 做一次滚动(rollout)更新,并注入环境变量。
加载数据并显示国家公园地图
目前已经部署了 parksmap
和 Nationalparks
应用,然后部署了 mongodb-nationalparks
数据库。但是,还没有把数据加载到数据库中。在加载数据前,将正确的label添加到 mongodb-nationalparks
和 nationalparks
deployment中。
点击"Topology" -> "nationalparks" -> "Resources" -> "Routes",找到URL:
本例中,URL是 https://nationalparks-user-getting-started.apps-crc.testing/
。
打开浏览器,访问该URL:
访问 https://nationalparks-user-getting-started.apps-crc.testing/ws/data/load
:
点击"Topology" -> "parksmap" -> "Resources" -> "Routes",找到URL:
打开浏览器,访问该URL:
清理
powershell
crc delete -f
参考
https://access.redhat.com/documentation/en-us/openshift_container_platform/4.14/html-single/getting_started/index#openshift-web-console