暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云装机了解一下——如何在Oracle IaaS上快速供应开源环境

559

Oracle有业界最全面的云产品线,覆盖IaaS、PaaS和SaaS,各层都有丰富的选择。面向开发者,特别是Java开发者,在云端也提供了一套友好的PaaS开发者工具DevCS。基于Oracle最新的IaaS(Oracle Cloud Infrastructure)运行的 DevCS平台,最近经历了多次更新,添加了大量功能,集成了面向多语言的开发工具,提供直接发布到Docker Register和Kubernates环境等灵活的部署方式。

然而,由于开发团队工作方式、使用习惯问题,即使再完善的云产品线也不能保证100%满足团队开发/部署需要。或多或少地会引入开源的产品或者组件......

怎样安全、迅速、便捷地在云环境下创建可用的开源环境?云时代有云时代的解决方案。以下, 就与大家分享一下笔者在Oracle  IaaS上搭建典型开发环境的经历。

1在云主机上手动搭建开发环境

在*NIX云主机(VMon OCI/OCI-C)或者本地机器(OS XElCapitan 10.11或者Linux Kernel Version≥3.10)上操作基本是一样的。

我们以搭建一个Docker镜像注册仓库Portus为例: 

#首先要创建一组密钥

$ ssh-keygen -b 2048 -t rsa -f ~/oci_key将会生成oci_key.pub(公钥)和oci_key(私钥)建议修改私钥访问权限

$ chmod 400 ~/oci_key 

选取系统镜像版本,以下实验OS环境采用Oracle Linux 7.4,当然也可以按个人喜好选Ubuntu LTS版本,能运行Docker就可以,具体操作系统环境支持参照https://success.docker.com/article/compatibility-matrix

#在Ctrl Panel上创建云主机

#SSH远程访问,开始构建环境

$ ssh opc@<public ip address> -i ~/oci_key

$ sudo touch etc/yum.repos.d/docker.repo

$ ^touch^vi^

 

#编辑文件, 添加稳定版的安装源信息

增加Docker CE版下载/安装信息(DockerEE版收费了)

 [docker-ce-stable]

name=Docker CE Stable -$basearch

baseurl=https://download.docker.com/linux/centos/7/$basearch/stable

enabled=1

gpgcheck=0 #no rpm chk

gpgkey=https://download.docker.com/linux/centos/gpg 

[docker-ce-stable-debuginfo]

name=Docker CE Stable -Debuginfo $basearch

baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/stable

enabled=0

gpgcheck=1

gpgkey=https://download.docker.com/linux/centos/gpg 

[docker-ce-stable-source]

name=Docker CE Stable -Sources

baseurl=https://download.docker.com/linux/centos/7/source/stable

enabled=0

gpgcheck=1

gpgkey=https://download.docker.com/linux/centos/gpg

#开始下载安装Docker

$ sudo yum -y update

$ sudo yum install docker-ce

 #启动Docker

$ sudo systemctl start docker

#查看进程信息

$ ps -ef | grep docker

#直接注册到系统服务中

$ sudo systemctl enable docker.service

# Hello World测试一下

当然也可以通过alpine或者busybox验证

$ sudo docker run hello-world

#看看默认的路径有没有镜像文件

$ sudo ls var/lib/docker

#安装git版本控制及依赖

$ sudo yum -y install python-pip

$ sudo pip install --upgrade pip

$ sudo yum install -y git

#安装Registry + Portus(Docker-Compose模式)的依赖

$ sudo curl -Lhttps://github.com/docker/compose/releases/download/1.21.2/docker-compose-(uname-s)-$(uname -m) -o usr/local/bin/docker-compose

$ sudo chmod +x usr/local/bin/docker-compose

#查看版本信息,测试一下安装是否成功

$ docker-compose –version

#修改防火墙设置,开放默认服务端口

$ sudo firewall-cmd --zone=public--add-port=3000/tcp --permanent

$ sudo firewall-cmd --zone=public--add-port=5000/tcp --permanent

$sudo systemctl restart firewall.service

#云环境控制面板里打开服务端口公网访问

OCI上的访问控制列表

对公网开启80端口

#下载安装启用Portus

$ cd ~ && git clonehttps://github.com/SUSE/Portus.git

$ cd Portus; sudo `which docker-compose` up

Portus首次访问界面,创建管理员

总算搭完了…...我们成功地在云主机上,创建了符合开发配置团队工作习惯的镜像注册仓库,弥补了OCI-C环境下没有自带Registry产品OCI-R的不足。

 

在IaaS上搭环境还是要听多步骤的,那同学们肯定要问:有没有方便的选项呢?PC机时代,曾经出现过的兼容机装机店,通常会为顾客预装好操作系统,甚至附带各种常用软件…...

 

我们不禁想问:如果要在IaaS上应用一个开源方案,完成整套Tech. Stack的搭建————有没有这样的“云装机店”呢?

嗯,我觉得开发团队应该都很熟悉Jenkins吧,

让我们隆重推荐Oracle Cloud Marketplace

https://cloudmarketplace.oracle.com/marketplace/en_US/productHomePage

 

 下面我们依照云市场提供方案,来安装开源DevOps环境。

2在OCI上快速部署Jenkins环境

下面我们演示一下如何在OCI上供应(provision)一个Jenkins服务。

在Marketplace上确认同意三方协议

为什么要把构建服务放到云上?首先,云端批量部署DevOps,使得开发、测试环境更接近最终的部署环境。其次,灵活地利用云服务优势按需要增加构建节点,不用在平时维持满配的服务器资源,云平台UI简洁明了的网络配置界面也自己部署的很多只带CLI的集群环境直观方便。

 

仅就构建服务而言,随着Jenkins构建项目的增多,单个项目构建时间从一分钟到十几分钟不等,当同时多个项目代码有提交更新触发构建的时候会有大量任务排队等待。

另外,如果我们想在CI流程中运用静态代码分析(结合SonarQube),理想的实现也要求构建服务器能够灵活创建:maven配置文件添加sonar的地址配置,执行maven构建后sonar会自行去进行静态代码扫描及单元测试分析,只有测试通过的才触发Jenkins任务,寻找可用构建服务器资源进行编译封装。

 

熟悉CI/CD的同学们知道,如果在一个“干净”的Linux OS上安装Jenkins环境,需要手动搞定较多的依赖:Java运行时、Maven、H2/MySQL数据库等等。

在OCI上,我们选择导入(Import)自定义镜像(Custom Image)功能,通过上传或指定资源链接,开始开源服务创建。

自定义镜像导入完成后,图标由橙黄色变成绿色。

点击“创建实例”(Create Instance)按钮,启动服务供应,一般只要2分钟左右就可以完成启动了。

3OCI-C上利用Launch Pad安装

OCI-C环境下的应用/服务市场

在OCI-C上部署方式很接近,下面简单说明一下如何使用Launch Pad实现

安装完成,登录部署的IaaS服务器,启动服务。

选择要部署的开源产品/技术栈,点击“启动”(Launch)。

注意到在OCI-C上部署方式是不同的:在创建时,除了选择开源方案的镜像外,还需要提供给第三方厂商您开通的OCI-C环境的访问账号(credential),设定要创建云主机的shape。

浏览器访问服务URL,按安装日志输入用户名:user/pswd(启动时生成的随机密码,见上图),可以开始配置使用Jenkins了。

4展望及其他


未来的分享中,我们会结合Oracle的 DevCS开发者云服务和开源DevOps方案,讲解一个典型的开发场景。



作者简介

陆艺达,甲骨文PaaS云平台售前顾问,专注 Application Development PaaS 产品及服务,同时关注Docker容器产品及企业移动化产品。10+年IT行业从业经验,加入Oracle之前,在Alcatel和Ericsson从事研发和CI工作,参与过多个通信平台项目。


了解更多,敬请关注甲骨文开发者社区......




文章转载自甲骨文开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论