衆所周知,把大象關進冰箱裏統共需要三步。那麼把API Connect這個“龐然大物”關進All-in-One Kubernetes Playground裏,到底需要幾步呢?本文是開源項目lab-k8s-playground的高級應用案例。如果您喜歡這個項目,歡迎前往GitHub網站,關注,加星,以及貢獻代碼
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的填坑之旅"
;;
"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支持"
;;
"to contribute back")
# Feel free to click these buttons: Watch Star Fork
git clone https://github.com/morningspace/lab-k8s-playground.git
;;
esac
}