Epinio:Kubernetes 的应用程序开发引擎-加CLI Demo演示

news2024/11/19 4:44:06

一、解决了什么问题?

                开发人员如何专注于代码编写,怎么让他们可以完全忽略k8s基础设施并且和以前在本地Run一个应用一样的体验。

                从源码构建一个容器程序

二、解决方案

        Introduction | Epinio docs

三、Epinio 的 Kubernetes 的应用程序开发引擎 by Rancher

        话不多说,直接看Demo.

        一、部署Epinio 

                1、前提

                        1、你有一个K8S集群。

                        2、你有一个默认的存储类以及默认的入口类。

                        3、Cert Manager

                2、Helm

        2、部署步骤

                1、部署入口类

helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
helm upgrade --install nginx-ingress --namespace nginx-ingress nginx-stable/nginx-ingress \
    --set controller.setAsDefaultIngress=true \
    --create-namespace

                2、部署存储类(local-path为例)

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/deploy/local-path-storage.yaml
kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

                3、部署Cert Manager

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm upgrade --install cert-manager jetstack/cert-manager --namespace cert-manager  \
    --set installCRDs=true \
    --set extraArgs={--enable-certificate-owner-ref=true} \
    --create-namespace

                4、部署Epinio   

helm repo add epinio https://epinio.github.io/helm-charts
helm repo update
helm upgrade --install epinio epinio/epinio --namespace epinio --create-namespace \
    --set global.domain=myepiniodomain.org

         二、使用Epinio Cli工具

                1、下载、安装以及测试

curl -o epinio -L https://github.com/epinio/epinio/releases/download/v1.11.0/epinio-linux-x86_64
mv epinio-linux-x86_64 epinio
chmod +x epinio
cp epinio /usr/bin

epinio version

         2.使用Cli工具访问Epinio-api server

        

epinio login -u admin <Your domian>

后面的<Your domian> 是你部署Epino的域名哦,默认会加epinio前缀。

        3.找到官网提供的测试php应用

git clone https://github.com/epinio/epinio.git
cd epinio/assets/

        这个目录下就一个index.php的文件,demo就会使用这个文件直接从源代码Run一个容器来访问。

 

        推送你的应用到Epinio来帮你保存和构建。 

epinio push --name sample --path sample-app

        *因为我们已经login了,就可以直接push到API server.(和Git非常类似)

        *接着我们 --name 是应用到名称 app.name

        *--path 为你存放源代码的目录位置

        *默认的运行的pod会在创建的workplace.

4.执行推送和构建

        *解释一下Routes 就是你部署这个应用默认会有一个访问URl的规则,为app.name+domain

        例如 这个sample的部署的路由为 sample.

5.执行完毕后Epinio 发送了什么?

        1.他会把你的选择的path进行压缩打包,格式为zip,tar等等,然后传送给epinio api server.

        2.api server 会更新这个程序的状态并且把上传的压缩文件存储到自带安装到S3存储中。

        3.上传完毕会S3 存储会通知 epinio api server 我存完毕了,并给出blobUID。

        4.Epinio api server  拿到了这个blobUID,会创建一个job,这个job会下载存储在s3的源码,然后从base镜像开始沟通你的容器。

        (基本逻辑就是这样哈,官网的太绕了。)

  6.构建过程的日志

        *这个日志是不是特别像你通过什么ide,vscode之类的工具编译代码的日志以及启动日志

        *底层容器逻辑还是需要制作一个容器镜像,只是因为不同的语言依赖的环境不一样,而Epinio 做的好的一点就是他可以自动识别大部分主流高级开发语言,直接匹配base镜像。

7.构建完成展示

8.直接访问这个Routes地址镜像访问。

 

9.Demo演示完成,再来看看k8s的基础设施层面

        1、首先在Epinio的system 命名空间

 

这个job就是帮助你下载,打包你应用镜像的主要pod.运行完毕就推出。

10.接着我们看实际运行我们应用的命名空间 worksplace.

        *名称多了一个r ,是因为这是我写博客又做了一遍,他显示为rebuild的意思。

        *看后面的后缀也就知道这是一个deployment.

        * 

        *同时上面哪个比较难理解的Route,下面这图就非常容易理解了。

 

        *没错,就是使用Route的默认规则帮你搞了一个ingress.

总结:

        1、Epinio是一个非常非常好的项目。请大家支持。

        2、它不仅支持CLI也支持UI。(明天更新UI)

        3、支持大多数主流开发语言:(go,java,php等等) 

        4、直接让你的iaas平台变成paas.

 

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

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

相关文章

FFmpeg学习记录(二)—— ffmpeg多媒体文件处理

1.日志系统 常用的日志级别&#xff1a; AV_LOG_ERRORAV_LOG_WARNINGAV_LOG_INFOAV_LOG_DEBUG #include <stdio.h> #include <libavutil/log.h>int main(int argc, char *argv[]) {av_log_set_level(AV_LOG_DEBUG);av_log(NULL, AV_LOG_DEBUG, "hello worl…

怎样建设网站

建设一个网站需要经过一系列的步骤和技术&#xff0c;以下是一个简单的指导&#xff1a; 1. 确定网站目的&#xff1a;首先要确定网站的目的和目标。是为了促销产品&#xff1f;提供信息&#xff1f;还是为了社交交流&#xff1f;确定网站目的可以帮助你更好地规划网站的结构和…

【强训笔记】day8

NO.3 思路&#xff1a;相乘除以最大公约数等于最小公倍数。最小公倍数等于gcd&#xff08;a&#xff0c;a%b&#xff09;递归直到b等于0。 代码实现&#xff1a; #include <iostream> using namespace std;int gcd(int a,int b) {if(b0) return a;return gcd(b,a%b); }…

MySQL CRUD操作

前言&#x1f440;~ 上一章我们介绍了数据库的一些基础操作&#xff0c;关于如何去创建一个数据库&#xff0c;还有使用数据库&#xff0c;删 除数据库以及对表进行的一些基础操作&#xff0c;今天我们学习CRUD操作 俗称&#xff08;增删改查&#xff09; 如果各位对文章的内…

无U盘基于本地硬盘无损制作虚拟U盘(Windows、Linux系统安装启动盘)

知识点 实验环境 名称版本使用平台Win11本地硬盘格式GPT待安装镜像deepin-desktop-community-20.9-amd64.iso 文中工具下载链接&#xff1a; https://download.csdn.net/download/xzzteach/89263714 deepin-desktop-community-20.9-amd64.iso 文件结构如下&#xff1a; 在Li…

如何保证每次画出的都同一张人脸?AI绘画Stable Diffusion的Reference only教程

Ai绘画有一个很现实的问题&#xff0c;要保证每次画出的都是同一个人物的话&#xff0c;很费劲。 Midjourney就不必说了&#xff0c;人物的高度一致性一直得不到很好的解决。而在Stable Diffusion&#xff08;SD&#xff09;中&#xff0c;常用办法是通过同一个Seed值&#xf…

10G MAC层设计系列-(4)MAC TX模块

一、前言 MAC TX模块就是要将IP层传输过来的数据封装前导码、MAC地址、帧类型以及进行CRC校验&#xff0c;并与CRC值一块组成以太网帧。 二、模块设计 首先对输入的数据进行缓存&#xff0c;原因是在之后要进行封装MAC帧头&#xff0c;所以需要控制数据流的流动 FIFO_DATA_6…

Ubuntu编译安装MariaDB并进行初始化配置

Ubuntu编译安装MariaDB并进行初始化配置 1. 编译安装MariaDB2. 配置MariaDB3. Docker安装MariaDB 1. 编译安装MariaDB MariaDB官方安装文档&#xff1a;https://mariadb.com/kb/en/Build_Environment_Setup_for_Linux/    下载MariaDB源码&#xff1a;https://mariadb.org/ma…

Enum,你学会了吗?

大家后&#xff0c;我是小七。 今天给大家分享下java.lang包下面Enum类的面试点&#xff0c;本文阅读需3分钟。 Java轮子 分享程序员日常、职场、互联网项目、开发经验&#xff0c;专注技术提升 12篇原创内容 公众号 在 Java 编程中&#xff0c;枚举类型&#xff08;Enum&…

go是如何运行的?

前言 go程序的入口是main函数吗&#xff1f;诚然很多程序的入口都是main,比如java,C,C等&#xff0c;但是go由于他的运行时环境是代码&#xff0c;而不是像Java那样有自己的虚拟机&#xff0c;所以程序在运行main函数之前&#xff0c;需要做很多的准备工作&#xff0c; 该文章…

这书不错,古琴乐理实用教程(尹溧新编),有课学得通透。

通篇阅读后&#xff0c;发现这本书以古琴初习者、未系统接触过现代乐理的读者为对象&#xff0c;将复杂的古琴音乐理论简单化、通俗化。书中采用参照比较的方法、通俗易懂的语言、言简意赅的文字&#xff0c;并结合具体音乐作品将古琴研习中最主要的、最核心的理论知识进行简明…

【算法系列】哈希表

目录 哈希表总结 leetcode题目 一、两数之和 二、判定是否互为字符重排 三、存在重复元素 四、存在重复元素 II 五、字母异位词分组 六、在长度2N的数组中找出重复N次的元素 七、两个数组的交集 八、两个数组的交集 II 九、两句话中的不常见单词 哈希表总结 1.存储数…

登封授牌,花落郑州

近日&#xff0c;“大禹故里故都”授牌仪式在河南省登封市隆重举行&#xff0c;河南省社科院有关单位将匾牌授予登封市。报道称&#xff1a;至此&#xff0c;千百年来备受争议的大禹故里、故都问题&#xff0c;终于尘埃落定&#xff0c;华夏立国始祖大禹终于魂归故里。 略有微词…

《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT

一、BOOT是什么&#xff1f; 大多数初学者第一次接触BOOT总是对这个词感到不解&#xff0c;从哪冒出一个奇奇怪怪的东西还要接跳线帽&#xff0c;为什么要配置它才能进行串口程序的下载&#xff1f;为什么不正确配置会导致单片机无法正常启动…… boot&#xff0c;及物动词&…

IP 地理定位神话与事实

ip地理定位是一项技术&#xff0c;用于通过访问设备的ip地址来获取地理位置信息&#xff0c;例如国家、城市、经纬度等。该技术广泛应用于网站内容自定义、广告定位、网络安全和用户分析等领域。它通过与包含ip地址和地理位置映射的大型数据库进行查询来工作&#xff0c;但在准…

LeetCode406:根据身高重建队列

题目描述 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返回输入数…

「JavaEE」线程安全2:内存可见性问题 wait、notify

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; 内存可见性问题& wait、notify &#x1f349;Java 标准库的线程安全类&#x1f349;内存可见性问题&#x1f34c;volatile 关键字 …

python大数据项目中的 DIM层数据处理

一、处理维度表数据 hive的配置 -- 开启动态分区方案 -- 开启非严格模式 set hive.exec.dynamic.partition.modenonstrict; -- 开启动态分区支持(默认true) set hive.exec.dynamic.partitiontrue; -- 设置各个节点生成动态分区的最大数量: 默认为100个 (一般在生产环境中, 都…

步进电机与伺服电机的区别

什么是电机&#xff1f; 电机是一种将电能转换为机械能的装置&#xff0c;通常由定子、转子和电磁场组成。当电流通过电机的绕组时&#xff0c;产生的磁场会与电机中的磁场相互作用&#xff0c;从而使电机产生旋转运动。电机广泛应用于各种机械设备和工业生产中&#xff0c;是现…

5.4代码

1.本质上升序列 我想到的是用回溯去找子集一个一个判断&#xff0c;当然这样的话会来的很慢&#xff0c;然后就在网上找到了大佬的方法&#xff0c;这东西居然是用动态规划来的&#xff0c;说是最长递增子序列的类似问题 &#xff0c;感觉我好像写过类似的&#xff0c;但是去找…