使用CODERUN部署阿里云KUBERNETES
今天给大家介绍下我们的程序是如何部署到阿里云Kubernetes(托管版)
我们使用三种开发语言,分别是:node, python, golang.三种语言的部署有一些差别,但主要步骤都是一样的.我们今天先介绍下node(前端)的部署方式.
核心的部署步骤如下:
- Git Clone
- 编译与Build镜像
- 部署到Kubernetes,通过Helm或者Deployment
配置Kubernetes
阿里云的Kuberntes支持三种模式:
- 自部署,阿里云仅提供一键部署但不提供管理和后续维护.要求用户水平较高
- 托管模式,阿里云提供一键部署,并负责管理
Master
节点.这种模式用户仅需要管理Node
节点,基本不需要担心节点挂了,并且可以自行确定Node
节点要求的性能.后续升级也可以交给阿里云负责 - serverless,终极模式,啥都不需要管理,只需要把镜像提交上去,并确定资源需求即可.不需要维护任何服务器.
上面的三种模式我们选择了第2种,因为托管模式可以提供用户足够的自由度又不需要要求太高的管理水平.当然对于三种模式CodeRun都是支持的.我们来看下具体如何配置集群.
获取KubeConfig
不管哪种集群创建后都可以在控制台获取到KubeConfig
配置,在阿里云控制台点击某个集群后可以看到下图KubeConfig
:
我们需要三个信息:
- 集群地址,阿里云为每个Kubernetes集群都分配了一个外部地址(如果是自部署模式好像需要自己配置)
- 证书,集群的访问证书
-
Key
,证书对应的Key
,相当与密钥
有了这三个信息我们就可以配置集群
配置CodeRun的Kubernetes集群
在CodeRun
控制台的整合
->Kubernetes
,点击右边的添加
按钮选择证书
模式,如图:
- 其中上图中的
名称
是你可以自行定义的名称,这个名称可以方便后续在Pipeline
中使用,所以最好取一个好记的名称(这里使用myk8s
).
Pipeline可以参考
添加仓库
在CodeRun
控制台的Repo|仓库
,点击添加仓库
.在右侧选择代码仓库,(如果不是当前用户的Git
仓库,参见添加Git配置),如下图:
选择Build
类型
三种类型分别是:
-
coderun.yml
,使用代码仓库中的coderun.yml
文件进行构建 -
Dockerfile
,使用代码仓库中的Dockerfile
作为镜像的构建 - 模板,和上述的
Dockerfile
类似,只是使用CodeRun
内置的各语言Dockerfile
模板
我们这里选择使用模板
创建,选择node
语言.Dockerfile
内容预览如下:
FROM node:8.0-alpine AS builder WORKDIR /app COPY package.json /app # Creating tar of productions dependencies RUN npm install --production && cp -rp ./node_modules /tmp/node_modules # Installing all dependencies RUN npm install # Copying application code COPY . /app # Running tests RUN npm test FROM node AS runner EXPOSE 3000 WORKDIR /app # Adding production dependencies to image COPY --from=builder /tmp/node_modules /app/node_modules # Copying application code COPY . /app CMD npm start
上述模板是采用Dockerfile
的多阶段模式进行处理的,分成两大部分:
- 第一部分是安装依赖,然后进行
npm test
- 第二部分是复制第一部分的
node_models
,并启动npm start
因为我们的代码中没有测试所以可以注释掉npm test
这段,另外我们代码使用vue-cli3
所以npm start
修改成npm run serve
,最后如下:
FROM node:8.0-alpine AS builder WORKDIR /app COPY package.json /app # Creating tar of productions dependencies RUN npm install && cp -rp ./node_modules /tmp/node_modules FROM node AS runner EXPOSE 3000 WORKDIR /app # Adding production dependencies to image COPY --from=builder /tmp/node_modules /app/node_modules # Copying application code COPY . /app CMD npm run serve
点击创建
后,我们可以看到添加好的仓库:
切换到Yaml
点击coderuntop/startup
后我们可以看到Pipeline
页面,如图:
因为我比较习惯使用Yaml
配置,所以点击上图右边的Yaml
选项,并且确定进行覆盖
后可以看到Yaml
配置:
配置如下:
steps: docker: image: crun/docker registry_name: coderun repo_name: hellwen/startup dockerfile_content: | FROM node:8.0-alpine AS builder WORKDIR /app COPY package.json /app # Creating tar of productions dependencies RUN npm install && cp -rp ./node_modules /tmp/node_modules FROM node AS runner EXPOSE 8080 WORKDIR /app # Adding production dependencies to image COPY --from=builder /tmp/node_modules /app/node_modules # Copying application code COPY . /app CMD npm run serve context: . tags: latest
其中,repo_name
配置的名称需要进行修改,如上已经修改成:coderuntop/startup
修改成用户名/项目名
格式,其中用户名就是你当前用户的名称,可以通过控制台
的右上角看到.
配置好我们就可以进行下测试了,选择仓库的分支,因为这个项目我把前端代码写在node
分支中,所以这里直接点击node
分支的Build
按钮
点击后在Build
页面可以看到正在跑的Build
任务:
Build
右边的绿色打勾图标说明这次Build
成功,我们的Dockerfile
是正常的.
点击进入某个Build
任务后可以看到对应的Build
日志:
增加部署步骤
增加的部署配置如下:
deploy: image: crun/kube cluster_name: myk8s namespace: default template_content: | apiVersion: apps/v1 kind: Deployment metadata: name: startup-node spec: replicas: 1 selector: matchLabels: app: startup-node template: metadata: labels: app: startup-node spec: containers: - name: startup-node image: {{CR_IMAGE}}
- 其中
crun/kube
是官方提供的kubernetes
插件 -
cluster_name
这里指定的是上面配置的kubernetes
集群,我们命名为:myk8s
-
namespace
指定kubernetes
集群的命名空间 -
template_content
指定kubernetes
能有效识别的yaml
配置(可以包含:service
和deployment
等) -
image
中我们使用了一个变量{{CR_IMAGE}}
这个变量会自动从crun/docker
获取到build
后的完整镜像地址
增加部署步骤后我们再Build
一次,我们可以看到我们的部署增加了一个Log
:
部署后的kubernetes
效果:
$ kubectl get deployment startup-node NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE startup-node 1 1 1 1 3h
$ kubectl get deployment startup-node -o=custom-columns=NAME:.metadata.name,IMAGE:.spec.template.spec.containers[0].image,STATUS:.status.availableReplicas NAME IMAGE STATUS startup-node r.crun.top/hellwen/startup:latest 1
要使用kubectl
命令连接阿里云需要把前面的KubeConfig
配置到当前Shell
的.kube/config
文件中,至于如何配置可以参考kubernetes.io
上面的结果我们可以看到kubernetes
上的运行镜像被替换成r.crun.top/hellwen/startup:latest
这样我们就省去了填写镜像地址的麻烦.
到这里我们的部署就完成了.比起自己搭建Jenkins
是不是方便些
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何远程连接Windows和linux服务器
linux的方法在下面 Windows服务器远程连接 登录控制台查看服务器系统是什么系统例如阿里云的ECS服务器 Windows系统可以使用微软自带的远程工具进行连接,可以连接的系统有Windows server 和Windows 7-10 等等系列;Windows系统,例如Windows10系统,键盘按住win键+R键 打开运行然后输入mstsc 点击确认 打开远程工具这个操作基本在Windows系列系统上通用 打开远程桌面连接工具后输入服务器的公网ip地址点击连接 然后输入账号和密码登录服务器; 如果出现此情况,说明服务器需要更新下服务器的系统或者在服务器远程服务设置下即可; 参考文档:https://help.aliyun.com/knowledge_detail/71931.html比如这边使用阿里云控制台提供的远程连接登录下服务器 控制台发送登录命令 然后鼠标右键此电脑点击属性一步一步操作即可;然后就可以使用mstsc登录服务器了; linux服务器远程连接 阿里云控制台查看ECS实例的系统,CentOS7.4 使用xshell工具进行远程连接下载xshell工具,地址:ht...
- 下一篇
如何在基于Bytom开发过程中集成IPFS
本文介绍了基于Bytom开发过程中集成IPFS。 step1: 搭建bytom节点 比原相关资料:https://github.com/Bytom-Community/Bytom_Docs 搭建bytom节点有很多方式,然后开启RPC调用模式。这里推荐用docker搭建比原节点: docker搭建比原节点,同时开启RPC访问模式(即终端交互模式)。 我这里都是在本地操作,所以对应的端口是:9888。启动好以后我们在postman里请求测试一下,如下图: 说明我们已经搭建好了比原节点,并且可以进行远程调用。 step2: 搭建IPFS节点 IPFS中文社区官网:http://ipfser.org IPFS项目地址:https://github.com/ipfs 各种语言实现源码: GO:https://github.com/ipfs/go-ipfs JavaScript:https://github.com/ipfs/js-ipfs Python:https://github.com/ipfs/js-ipfs C:https://github.com/Agorise/c-ipfs 搭建I...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用