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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/675911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯备赛Day9——链表进阶

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1 输出:[]示例 3: 输入:head = [1,2], n = 1 输出:[1]提示: 链表中结点的数目为 sz1 <= sz <= 300 &l…

Linux操作系统基础(二):Linux操作系统概述

文章目录 Linux操作系统概述 一、Linux起源 二、Linux 的含义 三、Linux发行版 Linux操作系统概述 一、Linux起源 Linux创始人——林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间实现的 Linux的特点&#xff1a;开源、免费、拥有最为庞大的源码贡献者 …

【数据结构】前缀树的模拟实现

目录 1、什么是前缀树&#xff1f; 2、模拟实现 2.1、前缀树节点结构 2.2、字符串的添加 2.3、字符串的查寻 2.3.1、查询树中有多少个以字符串"pre"作为前缀的字符串 2.3.2、查询某个字符串被添加过多少次 2.4、字符串的删除 3、完整代码 1、什么是前缀树&…

K8S系列文章之 [使用 Alpine 搭建 k3s]

官方文档&#xff1a;K3s - 轻量级 Kubernetes | K3s 官方描述&#xff0c;可运行在 systemd 或者 openrc 环境上&#xff0c;那就往精简方向走&#xff0c;使用 alpine 做系统。与 RHEL、Debian 的区别&#xff0c;主要在防火墙侧&#xff1b;其他基础配置需求类似&#xff0…

[每周一更]-(第86期):PostgreSQL入门学习和对比MySQL

入门学习PostgreSQL可以遵循以下步骤&#xff1a; 安装 PostgreSQL&#xff1a; 首先&#xff0c;你需要在你的计算机上安装 PostgreSQL。你可以从 PostgreSQL 官方网站 下载适合你操作系统的安装包&#xff0c;并按照官方文档的指导进行安装。 学习 SQL&#xff1a; PostgreS…

【大厂AI课学习笔记】【1.5 AI技术领域】(7)图像分割

今天学习到了图像分割。 这是我学习笔记的脑图。 图像分割&#xff0c;Image Segmentation&#xff0c;就是将数字图像分割为若干个图像子区域&#xff08;像素的集合&#xff0c;也被称为超像素&#xff09;&#xff0c;改变图像的表达方式&#xff0c;以更容易理解和分析。 …

〔Part1〕YOLOv5:原理+源码分析(配置文件、网络模块、损失函数、跨网格匹配策略)

1. 前置知识 1.1 YOLO 算法的基本思想 首先通过特征提取网络对输入图像提取特征&#xff0c;得到一定大小的特征图&#xff0c;比如 13x13&#xff08;相当于416x416 图片大小&#xff09;&#xff0c;然后将输入图像分成 13x13 个 grid cells&#xff1a; YOLOv3/v4&#xf…

leetcode:17.电话号码的字母组合

题意和解题思路&#xff1a; 数字和字母的一一对应采用二维数组或者map映射。 这里我采用数组进行存储进而实现一一对应。由于我们无法知道for循环嵌套几层&#xff0c;因为这个是由于输入来确定的&#xff0c;所以我们可以用回溯算法中的递归来进行实现。 树形结构&#xff…

git版本回退。git reset参数详解,特殊提交情形下的git push操作(CR等常见场景),git reflog和git log的详解。

切换分支可以使用 git checkout <> 或者git switch ... 创建分支可以使用 git checkout -b <. ...> 或 git branch <...> git checkout <...> git reset --hrad HEAD^ -- 今日份chatgpt git reset --hard HEAD^ 的含义如下&#xff1a; git reset …

利用知识图谱构建医疗问答

1、准备数据集 数据集下载地址&#xff1a;https://github.com/wangle1218/QASystemOnMedicalKG/blob/master/data/medical.json 2、导入相关包 from py2neo import Graph,Node,Relationship # 在cmd中&#xff0c;输入neo4j.bat console并回车 import pandas as pd3、连接N…

【web前端开发】HTML及CSS简单页面布局练习

案例一 网页课程 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wi…

Android 识别车牌信息

打开我们心爱的Android Studio 导入需要的资源 gradle //开源车牌识别安卓SDK库implementation("com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3")button.setOnClickListener(v -> {Log.d("Test", "");try (InputStream file getAs…

「递归算法」:子集(两种解法)

一、题目 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[],[1],[2]…

-打印流-

打印流分为字节打印流&#xff1a;PrintStream 字符打印流&#xff1a;PrintWriter特点1&#xff1a;都是只能输出 不能读取 字节打印流&#xff1a; 构造方法&#xff1a;主要用上面的两个构造 成员方法&#xff1a; //创建字节打印流对象&#xff1a;ctrlp注意参数 Prin…

【DDD】学习笔记-理解领域模型

Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视&#xff0c;是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性&#xff0c;例如他在书中总结了模型在领域驱动设计中的作用包括&#xff1a; 模型和设计的核心互相影响模型是团队所有成…

【Spring源码解读!底层原理高级进阶】【上】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…

L1-096 谁管谁叫爹

一、题目 二、解题思路 依据题意判断即可。 三、代码 #include<iostream> using namespace std; #include<cmath> int main() {int n;cin>>n;while(n--){int n1,n2,s10,s20;cin>>n1>>n2;for(int i1;n1/i>0;i*10){s1(n1/i%10);}for(int i1;n…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(二)

三、简配版集群&#xff0c;适用于demo环境 1.集群架构设计 主机名角色配置(核数&#xff0c;内存&#xff0c;磁盘)MasterRKE,controlplane,etcd,worker,rancher-master2C 8G 40GSlaver1controlplane,worker,rancher-master2C 8G 40GSlaver2controlplane,worker,rancher-mas…

【第三十五节】idea项目的创建以及setting和Project Structure的设置

项目创建 Project Structure的设置 点击file ~ Project Structure 进入 进入view/Appearance 选中Toolbar 就会出现状态栏

# Memory Analyzer (MAT) 在实际开发中的使用

Memory Analyzer (MAT) 在实际开发中的使用 文章目录 Memory Analyzer (MAT) 在实际开发中的使用概述注意点基本使用检查概述获取直方图View the Dominator Tree到GC根的路径 使用示例制作堆dumpHeapDumpOnOutOfMemoryErrorJmap 生成堆Dump Mat打开堆快照HistogramThread Overv…