前言
在以往的工作中,笔者一直都是使用阿里云EDAS基于ECS集群来进行项目应用的部署。而新项目需要切换为K8s集群部署,在此过程中也踩了一些坑,因此创作本文来作为一个使用记录。
什么是EDAS
企业级分布式应用服务EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的云原生PaaS平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持Spring Cloud和Apache Dubbo(以下简称Dubbo)等微服务运行环境,帮助应用轻松上云。
以上为阿里云官方提供的EDAS功能图
底层服务器环境
在我们开发完一个应用之后,通过EDAS来进行应用的托管。本文对于EDAS的功能不做拓展,而是主要说说基于底层服务器环境的部署。通过官方给出的功能图可以看到,EDAS底层服务器环境可以基于ECS集群、K8s集群或是混合云集群
在企业级应用中,通常使用ECS集群或K8s集群
ECS集群部署
ECS集群的特点是比较轻量级,它为用户提供了默认的应用运行环境(Java环境、tomcat环境),当我们需要通过EDAS来托管我们的一个后台java微服务时,我们只需要在创建应用时选择集群类型为ECS集群,选择应用运行环境为Java,并指定Jdk版本,最后把我们的jar包上传即可简单完成应用的部署。
K8s集群部署
K8s集群的使用相对来说比较麻烦,但是自由度比较高,具体使用步骤如下:
1、由于在EDAS中不支持创建K8s集群,所以我们需要先自己创建集群,在集群中添加我们的云服务器ECS资源,再将集群导入到EDAS中。
2、创建容器镜像仓库
3、制作应用镜像(docker)
4、在EDAS中创建应用,选择集群类型为容器服务K8s集群,选择我们创建的集群,并选择我们容器镜像仓库中的一个应用镜像,最后完成应用的部署。
手动打镜像推送阿里云镜像仓库
下面来具体操作如何将我们的jar包打成镜像并推送至阿里云镜像仓库:
环境准备:阿里云Linux服务器、docker环境
一、文件准备
在linux服务器上新建目录:/home/admin/images/test
目录下有两个文件:test.jar、Dockerfile
test.jar为我们需要打镜像部署的jar包
Dockerfile为用来构建docker镜像的文本文件
Dockerfile文件内容如下:
# 由于笔者服务器为内网服务器,所以使用了自己已经打好的jdk8镜像作为基础镜像,外网环境下使用openjdk:8-jdk即可
FROM jdk8:381
# 配置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# test.jar为需要打镜像的jar包,和Dockerfile同一目录下
COPY test.jar /test.jar
EXPOSE 9090
ENTRYPOINT ["java","-jar","/test.jar"]
二、制作镜像
cd至Dockerfile文件目录下,执行以下命令
//docker build -t [镜像名称]:[镜像版本号] .
docker build -t test:1.0 .
三、查看镜像
docker images
这里需要记住我们刚打好镜像的imageId
四、推送镜像至阿里云镜像仓库
4.1 登录镜像仓库
docker login --username=[镜像仓库username] [镜像仓库地址] -p [镜像仓库密码]
4.2 打镜像标签
docker tag [imageId] [镜像仓库地址]:[镜像版本号]
4.3 推送镜像至阿里云仓库
docker push [镜像仓库地址]:镜像版本号
4.4 登录阿里云镜像仓库页面,查看推送的镜像
4.5 部署
在创建应用时选择K8s集群部署
点击下一步,选择我们的镜像仓库以及镜像版本
最后点击确认创建即可
写到最后
其实对于整个过程来说,不仅仅是本文提到的这些,例如:
一、服务器为内网服务器,且服务器中缺乏一些基础镜像,如centos、Jdk镜像。这就需要在外网先搭建一套docker环境,然后将这些需要用到的基础镜像打包,然后拷贝至内网服务器进行使用
二、后台需要配置域名解析,由于容器的运行由EDAS托管,也就无法使用docker
run 的--add-host命令进行配置
...
更详细的说明有时间再捋一捋吧,今天先鸽了~