当前位置: 首页 > news >正文

OCP使用web console创建和构建应用

文章目录

  • 环境
  • 登录
  • 创建project
  • 赋予查看权限
  • 部署第一个image
    • 检查pod
    • 扩展应用
  • 部署一个Python应用
  • 连接数据库
    • 创建secret
    • 加载数据并显示国家公园地图
  • 清理
  • 参考

环境

  • RHEL 9.3
  • Red Hat OpenShift Local 2.32

登录

crc start 启动crc时,可以看到:

......
The server is accessible via web console at:https://console-openshift-console.apps-crc.testingLog in as administrator:Username: kubeadminPassword: MSmt7-d8LbI-igtzV-DeJY9Log in as user:Username: developerPassword: developerUse the 'oc' command line interface:$ eval $(crc oc-env)$ oc login -u developer https://api.crc.testing:6443
......

通过 crc console --credentials 也可以查看登录信息:

$ 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_USERmongodb
    • MONGODB_PASSWORDmongodb
    • MONGODB_DATABASEmongodb
    • MONGODB_ADMIN_PASSWORDmongodb

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击“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_USERmongodb
  • DATABASE_SERVICE_NAMEmongodb-nationalparks
  • MONGODB_PASSWORDmongodb
  • MONGODB_DATABASEmongodb
  • MONGODB_ADMIN_PASSWORDmongodb

在这里插入图片描述
在这里插入图片描述

然后,点击“Create”按钮,创建secret。最后,点击“Add Secret to workload”按钮,在弹出的对话框中,选择“nationalparks”,然后点击“Save”按钮:

在这里插入图片描述

该配置变化会触发 nationalparks deployment 做一次滚动(rollout)更新,并注入环境变量。

加载数据并显示国家公园地图

目前已经部署了 parksmapNationalparks 应用,然后部署了 mongodb-nationalparks 数据库。但是,还没有把数据加载到数据库中。在加载数据前,将正确的label添加到 mongodb-nationalparksnationalparks 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:

在这里插入图片描述

清理

crc delete -f

参考

  • https://access.redhat.com/documentation/en-us/openshift_container_platform/4.14/html-single/getting_started/index#openshift-web-console

相关文章:

  • 设计模式理解:单例模式+工厂模式+建设者模式+原型模式
  • macbook电脑如何永久删除app软件?
  • 使用C#快速创建一个非常实用的桌面应用程序
  • 设计模式-建造者模式Builder
  • 【开源】SpringBoot框架开发桃花峪滑雪场租赁系统
  • Linux cksum命令教程:如何使用cksum命令检查文件完整性(附实例详解和注意事项)
  • 选择大语言模型:2024 年开源 LLM 入门指南
  • 【电路笔记】-并联电感
  • STM32自学☞PWM驱动舵机(按键控制)
  • ubuntu快速安装miniconda
  • Python学习之路-爬虫提高:常见的反爬手段和解决思路
  • 课程大纲:图像处理中的矩阵计算
  • TCP 粘包/拆包
  • AutoSAR(基础入门篇)8.6-实验:配置I/O
  • Java网络编程 单向通信
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Angular 2 DI - IoC DI - 1
  • ES6 ...操作符
  • HashMap剖析之内部结构
  • HomeBrew常规使用教程
  • Java新版本的开发已正式进入轨道,版本号18.3
  • jquery ajax学习笔记
  • Js基础知识(四) - js运行原理与机制
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Mithril.js 入门介绍
  • oschina
  • python_bomb----数据类型总结
  • vue脚手架vue-cli
  • 阿里云前端周刊 - 第 26 期
  • 基于组件的设计工作流与界面抽象
  • 今年的LC3大会没了?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端性能优化——回流与重绘
  • 前端自动化解决方案
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • #if和#ifdef区别
  • (1) caustics\
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (20050108)又读《平凡的世界》
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (pojstep1.1.2)2654(直叙式模拟)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转) Android中ViewStub组件使用
  • (转)重识new
  • 、写入Shellcode到注册表上线
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET中使用Protobuffer 实现序列化和反序列化
  • .sys文件乱码_python vscode输出乱码