刷卡機刷預授權(quán)怎么刷
網(wǎng)上關(guān)于刷卡機刷預授權(quán)怎么刷的刷卡知識比較多,也有關(guān)于刷卡機刷預授權(quán)怎么刷的問題,今天第一pos網(wǎng)(www.svinexta.cn)為大家整理刷卡常見知識,未來的我們終成一代卡神。
本文目錄一覽:
刷卡機刷預授權(quán)怎么刷
呂力,騰訊云容器團隊高級工程師。負責騰訊云內(nèi)部上云容器服務平臺的自研業(yè)務適配,資源管理與成本優(yōu)化的工作。
來源:微信公眾號:騰訊云原生
出處:https://mp.weixin.qq.com/s?__biz=Mzg5NjA1MjkxNw==&mid=2247491073&idx=1&sn=70db53c7c0420ea26de08da6b87a0ada
前言TKEx-CSIG 是基于騰訊公有云 TKE 和 EKS 容器服務開發(fā)的內(nèi)部上云容器服務平臺,為解決公司內(nèi)部容器上云提供云原生平臺,以兼容云原生、適配自研業(yè)務、開源協(xié)同為最大特點。
業(yè)務容器上云過程中,會遇到一些問題,有的需要業(yè)務進行容器化改造,有的需要平臺賦能。平臺賦能的部分,有一類問題是 CVM 場景下已經(jīng)有解決方案的,而因運維方式不同在 Kubernetes 平臺上不兼容的,比如 Pod 預授權(quán)的問題。我們希望用云原生的方式解決這一類問題并提供平臺化的能力,讓每一位用戶都能夠在平臺上便捷的部署和管理自己的業(yè)務。
背景新部署業(yè)務或者擴容,如何對新設備進行預授權(quán)? 相信大家對這個問題并不陌生,基于安全考慮,公司內(nèi)部往往重要組件、存儲都會對訪問請求進行來源控制,常見的如 CDB 的 IP 訪問授權(quán),OIDB、VASKEY 命令字的模塊授權(quán)等。它們或者有自己的授權(quán) WEB 可以讓用戶提單申請,或者提供授權(quán) API 可以讓運維平臺調(diào)用。而路由系統(tǒng)往往在發(fā)現(xiàn)注冊時需要準確獲取 IP 設備的地域信息以提供就近訪問的能力,這就需要預注冊 CMDB。
在以前使用 CVM/TVM 部署業(yè)務時,這個問題可以較容易的處理,因為我們是預先拿到了一臺虛擬機,已經(jīng)分配好了 IP 注冊好了 CMDB,業(yè)務要做的就是用這個 IP 去提單授權(quán),部署業(yè)務程序,在一切完備后加上路由上線,這個過程是可以用運維平臺的流水線能力做成自動化。
區(qū)別于 VM 的拿到可用設備后的步驟型過程化部署,Kubernetes管理的是 Pod 從生產(chǎn)、IP 分配、業(yè)務容器啟動、路由維護的整個生命周期,由多個系統(tǒng) Controller 的 Control Loop 做自動化的管理,基于鏡像的部署提供了業(yè)務實例的伸縮一致性保障,Pod 的銷毀重建變成常態(tài),IP 也并非能固定下來。
業(yè)務往往面對多種預授權(quán)的需要,授權(quán)均值時間從秒級到幾分鐘不等,授權(quán) API 大多并沒有設計為承載高 QPS,有一定的復雜性。我們需要能找到一種方法,在 Pod IP 分配后,業(yè)務容器起來前處理授權(quán),阻塞住并保障成功后再進行后續(xù)過程,并且控制重建過程對授權(quán) API 的壓力。
經(jīng)過設計與迭代優(yōu)化, TKEx-CSIG 平臺提供給了業(yè)務易用的產(chǎn)品能力化的授權(quán)能力,方便應對這類 Pod 預授權(quán)的問題 。
架構(gòu)和能力解析架構(gòu)上圖所示是授權(quán)系統(tǒng)的架構(gòu),核心思路是使用 init Container 先于業(yè)務容器執(zhí)行的特性,實現(xiàn)在業(yè)務 Pod 啟動前進行復雜的邏輯預處理。官方對 init Container 的定義如下:
This page provides an overview of init containers: specialized containers that run before app containers in a Pod. Init containers can contain utilities or setup scripts not present in an app image
如果是小規(guī)?;騿蝹€業(yè)務的解決方案,我們是可以做的很簡單,在業(yè)務 Worklooad yaml 中注入 init Container,調(diào)用需要的授權(quán) API 實現(xiàn)即可,而要做成平臺產(chǎn)品化的能力,還需要考慮以下幾點:
易用與可維護: 需要充分考慮業(yè)務使用上的效率和可管理性,將權(quán)限作為一項資源由平臺記錄管理,減小變更對業(yè)務的侵入性影響。限頻與自愈: 權(quán)限 API 往往并沒有對高 QPS 的設計,需要限制調(diào)用保護下游。權(quán)限收斂: 安全性,Pod 的銷毀重建可能導致 IP 變化,考慮主動回收已經(jīng)過期的權(quán)限授權(quán)過程產(chǎn)品能力化業(yè)務僅需在平臺 Web 控制臺上登記需要的權(quán)限資源,配置權(quán)限組,關(guān)聯(lián)權(quán)限組到 Workload,平臺自動進行 init Container 的配置注入,通過 ENV 傳遞授權(quán)配置索引和相關(guān)信息,在 Pod 創(chuàng)建時進行授權(quán)過程。授權(quán)過程涉及的幾個組件功能設計如下:
init-action-client init Container,僅作一個觸發(fā)裝置,僅做一件事,就是發(fā)起 HTTP 調(diào)用請求,保持不可變,這樣當功能迭代時不必修改業(yè)務的 yaml,主邏輯后移處理init-action-server deployment 部署可橫向擴展,執(zhí)行預處理邏輯,預注冊 CMDB 等操作,并發(fā)起流水線調(diào)用,啟動權(quán)限的申請過程并輪詢查詢,將過程信息關(guān)聯(lián) Pod 暴露出來方便業(yè)務自查和管理員定位問題。后文提到的退避重試和斷路器邏輯也在這里實現(xiàn)。PermissionCenter 平臺管控組件,位于集群外,負責權(quán)限資源的存儲和實際申請。包含一個權(quán)限資源中心,存儲業(yè)務登記的權(quán)限詳情參數(shù)方便復用,提供權(quán)限 Set 組管理,簡化授權(quán)過程中的參數(shù)傳遞;使用生產(chǎn)者/消費者模式,基于 Pipline 實現(xiàn)授權(quán) API 的調(diào)用和結(jié)果查詢。斷路器和退避重試機制可能導致授權(quán)過程的異常狀況不少,例如權(quán)限參數(shù)錯誤的配置,授權(quán) API 服務質(zhì)量下降或不可用,甚至是網(wǎng)絡原因?qū)е碌慕涌阱e誤、超時等。授權(quán) API 往往也并沒有設計支持高 QPS,我們采用超時重試,加斷路器和指數(shù)退避重試去做一個容錯性。
超時重試: 體現(xiàn)在接口調(diào)用和異步任務的超時設置與重試機制,應對瞬時故障,init-action-client 容器非正常退出也會進行重建,每次創(chuàng)建就是新一輪的重試。斷路器: 使用一個 Configmap 專門記錄集群里 Pod 權(quán)限申請的失敗次數(shù),3次即斷路不給申請。并提供一個重置能力,暴露給前端,讓用戶和管理員可以便捷進行重試。指數(shù)退避: 斷路器模式可以阻斷用戶配置錯誤這類永遠也不可能授權(quán)成功的案例,但是無法應對長時間的瞬時故障。比如裁撤期,授權(quán) API 后端可能會有一段時間的拒絕服務,10分鐘到幾小時,此時會有大量 Pod 授權(quán)命中斷路器規(guī)則無法繼續(xù)授權(quán),人為處理時效性差也繁瑣。我們?yōu)槊總€ Pod 添加了一個帶抖動的指數(shù)退避器并記錄最近的失敗時間戳,能夠在一段時間后允許嘗試一次,如果成功就重置對指定 Pod 的退避,如若不成功更新時間戳重新計時,參數(shù)如下:bk := &PodBreaker{ NamespacePod: namespacePod, LastRequestFailTime: time.Now(), Backoff: wait.Backoff{ Duration: 2 * time.Minute, Factor: 2.0, Jitter: 1.0, Steps: 5, Cap: 1 * time.Hour, },}Finalizer 收斂權(quán)限
權(quán)限的收斂問題往往被忽略,但是也是安全需要考慮的,Pod 的銷毀重建可能是常態(tài),IP 指不準也動態(tài)變化,長時間可能產(chǎn)生大量垃圾權(quán)限,或者已經(jīng)授權(quán)過的 IP 分配到別的業(yè)務 Pod,產(chǎn)生安全風險。我們做了一個 Finalizer 控制器來在 Pod 銷毀前進行權(quán)限回收,回收動作是冪等性的,而且是盡力而為的,因為回收的能力也依賴于權(quán)限方是否具備回收能力,我們對新對接的權(quán)限都會考慮這一點,比如騰訊云 MySQL 的 IP 自動授權(quán)。
為了減少打 Finalizer 的動作,盡可能不影響非授權(quán)關(guān)心的 Pod,我們只在 Pod 進行了變更事件時識別有授權(quán) init Container 的 Pod,Patch 上 Finalizer 標記,在這些 Pod 縮容銷毀時進行權(quán)限的回收并刪除 Finalizer,隨后 GC 會刪除這個 Pod。
kind: Podmetadata: annotations:~ creationTimestamp: "2020-11-13T09:16:52Z" finalizers: - stke.io/podpermission-protection總結(jié)
本文解決的是業(yè)務使用容器平臺時,在業(yè)務進程啟動前的預處理如自動化授權(quán)的一類問題。使用 init Container 實現(xiàn)業(yè)務容器啟動前的預處理,并將授權(quán)特性產(chǎn)品能力化讓業(yè)務能較為方便的管理和申請權(quán)限資源,斷路器和退避重試機制提供容錯性,使用 Finalizer 提供一個回收的能力防止權(quán)限擴散。
參考資料[1]
Init Containers: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
[2]
[譯] 重試、超時和退避: https://www.tuicool.com/articles/7vIF7jR
[3]
Using Finalizers: https://book.kubebuilder.io/reference/using-finalizers.html
作者:呂力
來源:微信公眾號:騰訊云原生
出處:https://mp.weixin.qq.com/s?__biz=Mzg5NjA1MjkxNw==&mid=2247491073&idx=1&sn=70db53c7c0420ea26de08da6b87a0ada
以上就是關(guān)于刷卡機刷預授權(quán)怎么刷的知識,后面我們會繼續(xù)為大家整理關(guān)于刷卡機刷預授權(quán)怎么刷的知識,希望能夠幫助到大家!

轉(zhuǎn)載請帶上網(wǎng)址:http://www.svinexta.cn/shuakatwo/231408.html
- 上一篇:刷卡機到賬的銀行卡出現(xiàn)異常
- 下一篇:到銀行怎么辦理刷卡機