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使用:

upload successful

安裝

選用非Community版本3scale
upload successful

稍候一下即可安裝完成,然後安裝API Manager
upload successful
安裝過程需要填入您的Host Name

建立完之後會看到API Manager這個Custom Resource已經幫您建立好PVC, 正在等待合適的PV做Binding
upload successful

在這邊將PV建立完成之後,就可以看到Binding情況,如果Status一直停留在Avaliable, 就要思考看看是不是Namespace設定錯誤

upload successful

然後再Deployment Configs處看看,可以看到Pod根本沒有跑起來
upload successful

Pod沒有跑起來的緣故為何,有可能是Image的問題,於是乎順藤摸瓜,我們可以查找看看Image streams,看看有沒有可能是拉Image就出問題
upload successful

看到Alert顯示Unauthorized, 這邊可以看到是Registry的授權問題
upload successful
也可以使用指令重拉一次Image看看出了什麼錯誤

1
oc import-image amp-backend --confirm

用指令可以看到更多資訊:
upload successful

接下來我們就要加入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
2
oc secrets link default imagestreamsecret --for=pull
oc secrets link builder imagestreamsecret

回到Deployment Configs, 可以看到Pods成功被拉下來之後便跑了起來
upload successful

但還是有些Deployment遲遲沒有跑起來
upload successful

這時候就可以直接點進去Pods看看發生什麼事,可以看到Mysql,redis的pods出問題了,大意是資源受到限制
upload successful
upload successful
翻找一下還真的有這個Limit Range, 針對Yaml file進行修改,然後重跑Deployment Configs,重跑的方式如下:
upload successful

upload successful

其實也可以經由Events看看是什麼問題
upload successful

最後確認所有的Pods都有正常跑起來,就可以create portal:

upload successful

記得要把secure route這個選項勾起來,並且選擇
TLS Termination: Edge
Insecure Traffic: Redirect
如果選其他的選項會進不去Portal
upload successful

創建完成之後,會發現除了剛剛輸入的Route Name,OCP自動多在後面打上了Project Name, 這邊要手動在yaml拿掉它

upload successful

最後會長成這樣:
upload successful

點進去之後就可以看到Portal畫面,到這邊安裝就完成了

upload successful

登入資訊

在創建3scale-operator時,3scale-operator就會預設創建一組登入secret ——“system-seed”

upload successful

往下拉可以看到一些帳號密碼等資訊
upload successful

登入成功!
upload successful

用指令的方式取得帳號密碼,並登入,完整作法請參考這裡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[~] $oc describe secret system-seed
Name: system-seed
Namespace: operator-test
Labels: app=3scale-api-management
threescale_component=system
Annotations: <none>

Type: Opaque

Data
====
ADMIN_PASSWORD: 8 bytes
MASTER_DOMAIN: 6 bytes
MASTER_PASSWORD: 8 bytes
MASTER_USER: 6 bytes
ADMIN_ACCESS_TOKEN: 16 bytes
ADMIN_EMAIL: 0 bytes
TENANT_NAME: 6 bytes
ADMIN_USER: 5 bytes
MASTER_ACCESS_TOKEN: 8 bytes
[~] $ oc get secret system-seed -o yaml |grep ADMIN_USER
ADMIN_USER: ${admin-user's base64 encrypted name}
[~] $ oc get secret system-seed -o yaml |grep ADMIN_PASSWORD
ADMIN_PASSWORD: ${admin-user's base64 encrypted password}
[~] $ echo ${admin-user's base64 encrypted name} |base64 -d
${admin-user's name}
[~] $ echo ${admin-user's base64 encrypted password} |base64 -d
${admin-user's password}
[~] $

打完收工~


Reference

  1. help desk ticket
  2. 3Scale API Management Document
  3. 3scale 組件支援表單 - Red Hat 3scale API Management Supported Configurations
  4. Deployment Configs介紹
  5. Image Stream介紹
  6. Openshift Image Registry Authentication
  7. StackOverflow for imagestreamsecret
  8. How to decode secret data