一、解决了什么问题?

                开发人员如何专注于代码编写,怎么让他们可以完全忽略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.

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐