众所周知,把大象关进冰箱里统共需要三步。那么把API Connect这个“庞然大物”关进All-in-One Kubernetes Playground里,到底需要几步呢?本文是开源项目lab-k8s-playground的高级应用案例。如果您喜欢这个项目,欢迎点击下面的按钮,关注,加星,以及贡献代码^_^

Watch Star Fork

API Connect

IBM API Connect(APIC)是IBM开发的一款API生命周期管理软件,它的核心部分是基于Node.js开源框架LoopBack构建而成的。如果你对LoopBack感兴趣,欢迎访问我的深入浅出LoopBack系列教程。

标准的APIC安装,对于包括CPU,内存,存储在内的系统资源要求都比较高,通常需要多个虚拟机或物理机才能完成部署;其安装过程也比较复杂,通常需要几个小时甚至几天的时间才能完成安装,详情可见它的安装文档

本文将告诉你,利用All-in-One Kubernetes Playground,只要五个步骤,就可以在单机环境下,把APIC部署到一个由多节点构成的标准Kubernetes集群里。整个过程是完全自动化进行的,并且可以无限次重复!

动图演示

先上一段动图演示(点击图片可放大观看哦):

然后再来看一下具体的步骤。

第一步:初始化环境

首先,我们把All-in-One Kubernetes Playground的Git库克隆到本地,进入项目的根目录,执行init命令对Playground环境进行初始化:

$ git clone https://github.com/morningspace/lab-k8s-playground.git
$ cd lab-k8s-playground
$ ./install/launch.sh init

然后,打开~/.bashrc文件,根据需要对某些环境变量进行调整,比如:指定本机的IP地址,Kubernetes的版本,集群的节点个数等:

# The IP of your host that runs APIC
export HOST_IP=<your_host_ip>
# The Kubernetes version, default is v1.14
export K8S_VERSION=
# The number of worker nodes, must be 3
export NUM_NODES=3

为了在当前登录终端里让上面的改动生效,我们需要执行下面的命令重新加载.bashrc

$ . ~/.bashrc

安装了APIC的Playground可以在包括Ubuntu,CentOS,RHEL在内的多个操作系统上运行。

第二步:准备安装包

下载APIC的安装包,并保存到$LAB_HOME/install/.launch-cache/apic目录下,包括安装APIC所需的全部Docker镜像,以及apicup可执行文件,例如:

$ ls -1 $LAB_HOME/install/.launch-cache/apic/
analytics-images-kubernetes_lts_v2018.4.1.4.tgz
apicup-linux_lts_v2018.4.1.4
idg_dk2018414.lts.nonprod.tar.gz
management-images-kubernetes_lts_v2018.4.1.4.tgz
portal-images-kubernetes_lts_v2018.4.1.4.tgz

这里,$LAB_HOME代表Playground项目的根目录。

APIC的安装包可以从IBM的官方下载站点获取到,具体方法此处略。

第三步:修改部署配置

我们可以根据需要,在下面的文件里,对APIC各个服务所使用的主机名,以及其他相关设置进行定制:

$ vi $LAB_HOME/install/targets/apic/settings.sh

当在Playground里成功完成第一次APIC安装以后,我们可以把settings.sh里的apic_skip_load_images设置为1,这样可以跳过APIC的安装过程中“把Docker镜像加载到本地Private Registry”的步骤。因为,这一步骤在完成第一次APIC的安装以后就不需要再执行了,这可以为APIC的安装部署节省很多时间。

如果你对如何自定义APIC的配置感兴趣,可参考附录:自定义APIC配置

第四步:启动APIC

执行如下命令启动Kubernetes:

$ launch default

等Kubernetes启动完以后,我们可以执行kubectl version来验证启动是否成功。

如果你是中国地区的用户,请在执行launch之前设置环境变量export IS_IN_CHINA=1,这样可以解决Kubernetes启动过程中无法从Google网站下载Docker镜像的问题。

然后,启动APIC:

$ launch apic

完成启动过程需要花费一定的时间,具体取决于你的系统配置。以我的虚机为例,在apic_skip_load_images设置为1的情况下,大概不到15分钟就完成了。

等APIC启动起来以后,可以执行kubectl get pods -n apiconnect,检查APIC的所有pod是否都已经成功的启动起来了。

如果我们想销毁当前的APIC环境,再重新启动一个新的集群,只需要执行下面这一行命令就可以了:

$ launch apic::clean kubernetes::clean registry::up kubernetes apic

第五步:暴露APIC端口

可以利用下面的命令把APIC的服务端口暴露到集群外:

$ launch apic::portforward

然后,我们再把主机IP和主机名的映射定义添加到本地的/etc/hosts文件里,这样就可以在本地的浏览器里访问APIC的UI了:

$ cat /etc/hosts
...
<your_host_ip>   cm.morningspace.com gwd.morningspace.com gw.morningspace.com padmin.morningspace.com portal.morningspace.com ac.morningspace.com apim.morningspace.com api.morningspace.com

附录:自定义APIC配置

所有APIC的配置文件都保存在$LAB_HOME/install/targets/apic目录下。其中,settings.sh文件用于配置APIC各个服务所用的主机名,以及所需内存和存储的大小。

当完成自定义以后,我们可以执行下面的命令,让APIC对我们所做的修改进行验证:

$ launch apic::validate

在输出结果里,大家可能会注意到,有些地方会有验证错误,比如:

data-storage-size-gb  10    ✘  data-storage-size-gb must be 200 or greater 

这表示,APIC的analytics子系统所使用的data-storage-size-gb必须要大于等于200GB。如果你觉得自己所指定的值,在当前环境下足以运行APIC的话,那就可以忽略这些错误。

更多参考资料

读到这里,相信你对开源项目lab-k8s-playground及其All-in-One Playground的应用应该有了更全面的了解了。那么,还有哪些参考资料你可以访问呢?那就请快速读一下下面这段Shell脚本编写的“代码”吧😊 相信一定难不倒你!

选择你感兴趣的分支,点击相应分支下列出的文档资源。最后,如果您喜欢这个项目,欢迎点击本文开头处(或下列代码注释里)的按钮,关注,加星,以及贡献代码^_^

function where_to_start {
  case $I_want in
  "to learn what it provides in general")
    cat "All-in-One K8S Playground Overview"
    ;;
  "to get started quickly")
    cat "All-in-One K8S Playground Usage Guide"
    cat "All-in-One K8S Playground 中文使用指南"
    ;;
  "to understand what's behind")
    cat "Launch multi-node k8s cluster locally in one min..."
    cat "Kubernetes实战视频: 如何1分钟内在本地启动一个多节点集群"
    cat "OpenShift v3的填坑之旅"
    cat "OpenShift v4的填坑之旅"
    ;;
  "to extend it by myself")
    cat "Launch Utility Usage Guide"
    cat "A Sample Target for Demo Purpose"
    ;;
  "to learn more cool features")
    cat "Quick Guide to Launch APIC Playground"
    cat "把API Connect关进All-in-One K8S Playground里"
    cat "All-in-One K8S Playground新增OpenShift支持"
    cat "All-in-One K8S Playground支持OpenShift v4"
    ;;
  "to contribute back")
    # Feel free to click these buttons: Watch Star Fork
    git clone https://github.com/morningspace/lab-k8s-playground.git
    ;;
  esac
}

留下评论

您的电子邮箱地址并不会被展示。请填写标记为必须的字段。 *

正在加载...