3scale Operator on OpenShift4.2
3scale Operator 安裝
由於工作上的需要,我稍微研究了一下OpenShift4.2上面用Operator的方式安裝3scale的方法,在此紀錄一下安裝過程中可能需要注意的事項。
Pre-install
首先在OCP上創建一個新的Project, 名字可以隨便取,這邊筆者用”3scale-test”當專案名稱
1 | oc new-project 3scale-test |
根據官方文件的說明,您會需要總共四個Persistent Volumes給3scale使用:
安裝
選用非Community版本3scale
稍候一下即可安裝完成,然後安裝API Manager
安裝過程需要填入您的Host Name
建立完之後會看到API Manager這個Custom Resource已經幫您建立好PVC, 正在等待合適的PV做Binding
在這邊將PV建立完成之後,就可以看到Binding情況,如果Status一直停留在Avaliable, 就要思考看看是不是Namespace設定錯誤
然後再Deployment Configs處看看,可以看到Pod根本沒有跑起來
Pod沒有跑起來的緣故為何,有可能是Image的問題,於是乎順藤摸瓜,我們可以查找看看Image streams,看看有沒有可能是拉Image就出問題
看到Alert顯示Unauthorized, 這邊可以看到是Registry的授權問題
也可以使用指令重拉一次Image看看出了什麼錯誤
1 | oc import-image amp-backend --confirm |
用指令可以看到更多資訊:
接下來我們就要加入Secret, 但就算你根據錯誤訊息和官方文件,你加入了3scale-registry-auth
這個secret,你會發現還是下載不了XD,因為官方文件根本沒寫
imagestreamsecret是有位好心同事在StackOverFlow發現的神回覆,我們就直接根據這個指令範本創建授權資訊吧!
1 | oc create secret docker-registry imagestreamsecret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL |
另外要注意要把secret和Default & Builder這兩個Service Accounts綁在一起,才能順利拉Image
1 | oc secrets link default imagestreamsecret --for=pull |
回到Deployment Configs, 可以看到Pods成功被拉下來之後便跑了起來
但還是有些Deployment遲遲沒有跑起來
這時候就可以直接點進去Pods看看發生什麼事,可以看到Mysql,redis的pods出問題了,大意是資源受到限制
翻找一下還真的有這個Limit Range, 針對Yaml file進行修改,然後重跑Deployment Configs,重跑的方式如下:
其實也可以經由Events看看是什麼問題
最後確認所有的Pods都有正常跑起來,就可以create portal:
記得要把secure route這個選項勾起來,並且選擇
TLS Termination: Edge
Insecure Traffic: Redirect
如果選其他的選項會進不去Portal
創建完成之後,會發現除了剛剛輸入的Route Name,OCP自動多在後面打上了Project Name, 這邊要手動在yaml拿掉它
最後會長成這樣:
點進去之後就可以看到Portal畫面,到這邊安裝就完成了
登入資訊
在創建3scale-operator時,3scale-operator就會預設創建一組登入secret ——“system-seed”
往下拉可以看到一些帳號密碼等資訊
登入成功!
用指令的方式取得帳號密碼,並登入,完整作法請參考這裡
1 | [~] $oc describe secret system-seed |
打完收工~
Reference
- help desk ticket
- 3Scale API Management Document
- 3scale 組件支援表單 - Red Hat 3scale API Management Supported Configurations
- Deployment Configs介紹
- Image Stream介紹
- Openshift Image Registry Authentication
- StackOverflow for imagestreamsecret
- How to decode secret data