kubernetes
Last updated
Was this helpful?
Last updated
Was this helpful?
docker image hub & chart repo
harbor project list
scada: production images/charts
notification: production images/charts
scada-dev: development images/charts
notification-dev: development images/charts
harbor rules
測試用的image/chart一律上傳到*-dev的project下, 請勿將測試用的東西傳到正式project
下載kubectl.exe, 從這裡載, 放置於任意位置, ex. C:\Users\boshen.chen\Documents\k8s
在環境變數Path加入kubectl所在目錄
接下來要設定cluster config, 這會是k8s team給我們的, 讓kubect/helml可以跟遠端環境互動, 該config會長的像這樣
可以在current-context先設定好要用哪個namespace, 否則會使用default這個namespace, 每次指令都要指定namespace很麻煩
最後則是在環境變數KUBECONFIG設定該config的位置, 要注意的是, 除了路徑, 要指定到檔名
kubectl config view
可以檢查是否有設定正確
都設定好後就可以使用kubectl來跟cluster互動了
安裝Chocolatey, 這是一款Windows的套件管理工具,安裝方式請參考這裡
我是用cmd去裝,要使用管理者權限去開cmd
安裝好Chocolatey之後, 執行這行指令, 即可安裝helm (也需要管理者權限)
安裝好後, 可以用helm ls簡單測試一下, 也可以用helm status {chart name}
來測試
helm init
進行helm client/server初始化
新增harbor chart repo
透過chart部署scada portal/worker到k8s cluster上 (以下指令是Win cmd用的)
也可指定你希望的values.yaml去置換掉預設的values.yaml
勿將手動build的image放倒scada repo, 而是要放到scada-dev repo
172.22.2.57為我們的build machine, 大家可以上去產生自己測試用的docker image
clone專案後, 在專案根目錄執行以下命令即可產生docker image, 並上傳至harbor
scada portal test image
scada worker test image
以scada chart@1.1.33為例, portal image版本預設為1.3.33
開發期間如果要改成其他image來測試, 只要換掉預設的image的repo和version即可
broker/class/plan是平台的人需要幫我們建好, 我們能操作的是建立service instance和servcie binding
假設我們要建立建立mongo的service instance和binding, 可以準備yaml檔, 配合kubectl去執行
create-mongo-instance.yaml
kubectl create -f create-mongo-instance.yaml
create-mongo-binding.yaml
kubectl create -f create-mongo-binding.yaml
也可以透過kubectl直接看secert內容, secret都是以base64編碼
最後要介紹一下, k8s是如何將這些secret以環境變數的方式注入給app
chart deployment裡有一段是橋接secret和app環境變數
在scada portal裡就會以 uri: process.env.MONGO_URI
這種方式去接secret的uri
停掉某個pod
kubectl scale --replicas=0 deployment/scada-worker
部署成功後, 可以透過 helm status scada
來查看結果
kubectl get clusterservicebroker
kubectl get clusterserviceclass
kubectl get clusterserviceplan
建立好mongo binding之後, secret也會一併建立好
kubectl get secret
kubectl get secret mongo-credential -o yaml