主頁 >  其他 > 文鼎創智能物聯云原生容器化平臺實踐

文鼎創智能物聯云原生容器化平臺實踐

2023-05-06 08:02:59 其他

作者:sekfung,深圳市文鼎創資料科技有限公司研發工程師,負責公司物聯網終端平臺的開發,穩定性建設,容器化上云作業,擅長使用 GO、Java 開發分布式系統,持續關注分布式,云原生等前沿技術,KubeSphere Contributor,KubeSphere 社區用戶委員會深圳站委員,

公司簡介

深圳市文鼎創資料科技有限公司創立于 2006 年,是全球領先的線上身份認證解決方案提供商,專注網路身份認證,資料安全領域,堅持穩健經營,持續創新、開放合作,在金融電子化、政府、企業辦公等應用中提供解決方案,成為眾多國有商業銀行、全國性股份制銀行、城市商業銀行、農村商業銀行、各省市稅務、政府、各大 CA 機構以及跨國企業的合作伙伴,累積服務近億用戶,不斷滿足客戶差異化需求,

公司多年來持續創新,申請了大量的發明專利、實用新型專利和產品外觀專利;登記了多項計算機軟體著作權,同時是國家級高新技術企業;擁有商用密碼產品型號證書、密碼檢測證書、銀聯認證證書、ISO9001:2015 國際質量管理體系認證及 ISO14001 環境管理體系認證;產品通過了 CE/FCC 認證、RoHS 認證,

公司作為國際線上快速身份驗證聯盟(FIDO)的核心成員之一,致力于實作全球統一的在線驗證標準,我們將運用該技術為不同地區的人們提供享有平等的安全網路世界的權利,

背景介紹

“文鼎創智能物聯”是深圳市文鼎創資料科技有限公司針對物聯網應用,推出的物聯網解決方案,方案包含統一的物聯網服務平臺、”云列印機“、”收款云音箱“、”收款云掃碼盒子“等旗下產品,為用戶的資料安全保駕護航,

作為一家 TO B 解決方案的硬體提供商,“硬體為主,軟體為輔”是公司長期以來的開發模式,因此前期在對服務端的開發、部署、架構設計重視不夠,傳統的專案停留在單機(虛擬機)部署,人工打包上傳,不僅費時費力,還容易出錯,造成服務的不可用,

在擁抱 K8s 之前,我們也嘗試過 docker-compose 的方案,相對于人工打包部署,docker-compose 也確實給我們帶來了一些便利:

  1. ALL-IN-ONE,提供一鍵式的軟體部署方案,無需執行繁瑣的部署流程;
  2. 隔離了宿主機系統的差異性;
  3. 減少了運維人員進行版本迭代的操作,降低操作失誤的可能性,

在面向物聯網行業推出新產品,新解決方案之后,對服務的穩定性,以及可靠性帶來了新的挑戰,現有的開發模式逐步跟不上業務的迭代需求,為此我們迫切需要打破現有的框架,探索新的一套軟體迭代流程,

選型說明

在決定擁抱云原生之時,我們對市面上的容器管理平臺進行了調研,發現國外 Rancher 用戶較多,國內 KubeSphere 位居前列,我們對容器管理平臺的選型有幾個標準:

  1. 生態:一個開源專案的生態是否完善很重要,周邊配套的工具能帶來極佳的使用體驗和可維護性,
  2. 社區活躍度:官方倉庫 Issue 或問答社區是否回應及時,代碼提交是否活躍?
  3. 商業公司或基金會支持:是否有商業公司或開源基金會支持,如果為個人專案,后續停止維護,則可能會給用戶帶來的一定的風險,
  4. 技術堆疊:使用的技術堆疊與團隊是否吻合,是否有能力解決和維護?
  5. 用戶體驗:是否有 UI 操作界面,界面是否美觀,使用流暢?
  6. 本土化:是否做了一些本土化的優化,符合國人的使用習慣?

在調研選型時,我們發現 KubeSphere 能充分滿足的我們的要求,KubeSphere 團隊開源的 KubeKey 工具,能幫助我們快速搭建一個 KubeSphere 集群,省去了繁瑣且復雜的部署流程,OpenELB 專案則為我們提供了本地集群負載均衡的解決方案,

在使用程序中發現的問題,在中文問答社區基本都能找到對應的解決方案,KubeSphere 的控制臺簡化了 Kubernetes 服務的部署,使得團隊一些沒有 K8s 使用經驗的成員也能快速上手,用過的同事都說好,

目前架構

目前采用微服務設計,開發語言以 Golang、Java 為主,服務之間通信使用 gRPC,

生產環境使用兩個騰訊云 CLB 分別接入來自業務和物聯網終端的流量,整個業務服務部署在騰訊云 TKE 集群,并使用 KubeSphere 來管理應用的日常發布,而集群的基礎設施,本著“能買就買,實在不能買就自建”的原則(并不是不差錢,而是小公司運維壓力大),之所以沒有使用 TKE 的控制臺來管理應用的發布,主要是 TKE 的控制臺體驗并不是很友好,另外一個很重要的原因,應用商店對第三方 Helm 倉庫支持很差,無法充分利用 Helm 的生態,

實踐程序

硬體資源

測驗環境:10 臺 ESXI 虛擬機,自建 Kubernetes 集群,

生產環境:7 臺 騰訊云 CVM 節點,Kubernetes 使用騰訊云托管 TKE 集群,

存盤方案

測驗環境:使用 3 臺 ESXI 虛擬機作為分布式存盤 Ceph 的 OSD 節點,

生產環境:出于成本和穩定性的考慮,使用騰訊云 CBS 作為 K8s 存盤方案,

最小化安裝

由于生產環境和測驗環境已經有一些外部服務,比如 Prometheus 和 Logging,為了最大化利用現有資源,在部署 KubepShere 采取了最小化安裝,

值得一提的是,Monitor 并不是可插拔組件,即使最小化安裝,KubeSphere 依然會默認安裝,在生產環境中,安裝 TKE 監控的 prometheus-operator 會與其沖突,需要關閉 KubeSphere 的 Prometheus 或者手動卸載,

DevOps

在早期開發階段,版本迭代是一件非常痛苦的事情,開發人員在本地編譯打包后人工上傳到服務器進行部署,在經歷了多次各種環境差異,人工操作失誤教訓后,團隊下定決心改變現有的流程,決定搭建適合團隊自身的 DevOps 體系,

  1. 持續集成(CI):開發在每次提交代碼之前都進行 CI,以確保代碼的質量和一致性,這包括運行單元測驗,代碼靜態分析,編譯和構建程序等,當 CI 失敗時,開發立即修復代碼并重新提交,
  2. 持續交付(CD):一旦代碼通過了 CI 流程,就將其交付給測驗團隊進行測驗,測驗團隊進行測驗以確保產品的質量,在測驗環境,使用了 Coding 的自定義節點作為 CI 的自動化構建,CI 通過后通過腳本自動更新 KubeSphere 的鏡像版本,在生產環境,由于涉及發布評審流程,配置變更,各個業務團隊的協調,目前暫時還是交由運維人員手動變更應用版本進行發布,
  3. 監控和警報:一旦代碼被部署到生產環境,對其進行監控,監控可以幫助團隊快速發現和解決問題,確保產品的可用性和性能,

目前的 DevOps 實踐,主要解決了團隊以下的痛點:

  1. 統一編譯環境:規定專案內應撰寫 Dockerfile,使用 Docker 容器內的編譯環境進行編譯,同時使用 Gitlab Runner 通過代碼提交事件觸發代替開發機本地編譯,從而隔離各個開發機環境的差異,
  2. 發布版本可追溯:早期專案版本管理十分隨意,全憑開發人員心情命名,導致出現問題時無法快速定位,為此,我們約定在 CI 構建時,鏡像版本需要滿足特定的命名格式,如:${VERSION}-${ENV}-\${CI_NUMBER},這種命名格式可以幫助我們快速定位到某個環境出現問題某次 CI 構建的版本,
  3. 平滑迭代:早期專案使用單機單體部署,在進行迭代時,常常有短時間的服務不可用,導致流量損失,在進行容器化改造后,利用 Kubernetes 的探針,可以進行服務的平滑更新,并且在服務狀態不健康時,能自動重啟,無需人工介入,大大提升了服務的可用性,
  4. 運維效率:充分發揮 Kubernetes 的運維體系和云原生的可觀測性實踐,降低了多業務多環境運維的壓力,在服務故障發生時,能夠及時感知,

使用效果

流水線配置

流水線使用了 Coding 的方案,有以下幾方面的考慮:

  1. 能夠深度融合企業微信,在 CI 程序,有任何問題能夠及時通過 IM 工具通知到開發;
  2. 配套工具完善,官方的 Jenkins 有點跟不上云原生的發展,需要安裝一系列的插件才能滿足需求,配置程序也很繁瑣,

應用部署

“文鼎創智能物聯”專案已全部使用 Helm 應用發布,在使用程序,發現 KubeSphere 一個比較不友好的體驗,如果升級應用因 yaml 檔案配置錯誤導致應用升級失敗,會無法再次升級,在生產環境中,應用無法升級是一個很糟糕的問題,發現該 Bug 后,已提交了修復代碼給社區并合并 fix: can not re-upgrade helm application in a failed state,

集群資源監控

KubeSphere 內置的監控系統,滿足運維人員日常對集群健康狀態的巡檢,同時 KubeSphere 提供了多個層面的監控,針對 namespace 和服務本身,團隊使用頻次較高的是服務監控,以便開發人員對自身發布的服務的資源使用情況有所了解,

未來規劃

  1. “文鼎創智能物聯”作為公司探索的新專案已全面完成容器化作業,運行在 KubeSphere 集群,未來打算將歷史遺留的 TO B 專案進行容器化改造和遷移到 KubeSphere 集群,提升專案的可維護性和可用性,
  2. 探索 Service Mesh 方案,進一步提升服務的平穩發布和可觀測性,

本文由博客一文多發平臺 OpenWrite 發布!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551748.html

標籤:其他

上一篇:應屆生畢業就失業?這該怎么辦

下一篇:返回列表

標籤雲
其他(158512) Python(38118) JavaScript(25401) Java(18023) C(15222) 區塊鏈(8261) C#(7972) AI(7469) 爪哇(7425) MySQL(7162) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5335) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1965) Web開發(1951) HtmlCss(1932) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 文鼎創智能物聯云原生容器化平臺實踐

    作者:sekfung,深圳市文鼎創資料科技有限公司研發工程師,負責公司物聯網終端平臺的開發,穩定性建設,容器化上云作業,擅長使用 GO、Java 開發分布式系統,持續關注分布式,云原生等前沿技術,KubeSphere Contributor,KubeSphere 社區用戶委員會深圳站委員。 公司簡介 ......

    uj5u.com 2023-05-06 08:02:59 more
  • 應屆生畢業就失業?這該怎么辦

    每次到畢業季,總會有一個永恒的話題圍繞在畢業生之中:畢業就失業?
    大學生剛剛步入社會,很大部分是不能清晰得知道自己要做什么的,這個階段特別希望找到社會認同感,迫切希望能立足社會。很多人往往滿懷激情,空有抱負,卻在無盡的面試程序中,希望落空,發現現實其實是不同于理想的。
    不愿屈就,不愿勉強,想要找到心... ......

    uj5u.com 2023-05-06 08:02:33 more
  • 繪畫手殘黨的福音:涂鴉線稿秒變絕美影像

    摘要:涂鴉線稿秒變絕美影像,ControlNet-Scribble2Img適配華為云ModelArts,提供更加便利和創新的影像生成體驗,將你的想象變為真實的影像。 本文分享自華為云社區《AIGC拯救手殘黨:涂鴉線稿秒變絕美影像》,作者:Emma_Liu 。 ControlNet 什么是Contro ......

    uj5u.com 2023-05-06 08:02:04 more
  • 小程式都能在PC端打開嗎?

    經常有萌新小伙伴來問我:小程式能在windows系統、mac、統信UOS等桌面作業系統中打開嗎?估計現在還是有很多小伙伴對此有疑問,今天就統一來給大家解答一下。 結論先行:可以! ?接下來再給大家介紹幾種實作小程式在PC端運行的方法,以及一些工具推薦。 小程式在桌面端運行通常需要借助一些技術手段,以 ......

    uj5u.com 2023-05-06 08:01:51 more
  • 到底什么是小程式插件?

    最近和小伙伴交流,時常發生插件、組件、控制元件等概念混淆的情況,因此導致經常會錯意。感徑訓是很有必要帶大家整理清楚的,今天就來跟大家來聊一聊插件、組件、控制元件的區別。 什么是插件 先按照官方的一些解釋來看看插件的概念描述? 微信小程式官方描述: 插件,是可被添加到小程式內直接使用的功能組件。開發者可以像開 ......

    uj5u.com 2023-05-06 08:01:43 more
  • 青年開發者說:了不起的“樁源”守護者,開啟智能充電新模式

    摘要:聽來自深圳大學的高校開發者們,分享基于華為云技術創新、識訓成功的故事。代碼改變世界,2023年華為開發者大賽不容錯過! 本文分享自華為云社區《青年開發者說:了不起的“樁源”守護者,開啟智能充電新模式》,作者:華為云社區精選 。 “樁源守護者”,一個聽起來有點熱血、又充滿了英雄主義色彩的詞,這是 ......

    uj5u.com 2023-05-06 08:01:17 more
  • RocketMQ消費者是如何負載均衡的

    摘要:RocketMQ 支持兩種訊息模式:集群消費( Clustering )和廣播消費( Broadcasting )。 本文分享自華為云社區《一文講透RocketMQ消費者是如何負載均衡的》,作者:勇哥java實戰分享。 RocketMQ 支持兩種訊息模式:集群消費( Clustering )和 ......

    uj5u.com 2023-05-06 08:00:59 more
  • 青年開發者說:了不起的“樁源”守護者,開啟智能充電新模式

    摘要:聽來自深圳大學的高校開發者們,分享基于華為云技術創新、識訓成功的故事。代碼改變世界,2023年華為開發者大賽不容錯過! 本文分享自華為云社區《青年開發者說:了不起的“樁源”守護者,開啟智能充電新模式》,作者:華為云社區精選 。 “樁源守護者”,一個聽起來有點熱血、又充滿了英雄主義色彩的詞,這是 ......

    uj5u.com 2023-05-06 08:00:25 more
  • 文鼎創智能物聯云原生容器化平臺實踐

    作者:sekfung,深圳市文鼎創資料科技有限公司研發工程師,負責公司物聯網終端平臺的開發,穩定性建設,容器化上云作業,擅長使用 GO、Java 開發分布式系統,持續關注分布式,云原生等前沿技術,KubeSphere Contributor,KubeSphere 社區用戶委員會深圳站委員。 公司簡介 ......

    uj5u.com 2023-05-06 07:59:55 more
  • UnityC#腳本的熱更新原理

    Unity的腳本如何跨平臺 想要了解Unity的熱更原理,必須要先了解Unity腳本的編譯和跨平臺機制。通常游戲的跨平臺主要指安卓和IOS端。Unity的官方腳本語言是C#,但也有不少專案會采用C# + Lua語言的方式進行開發。它們主要有三種跨平臺的形式:JIT、AOT、腳本語言。 Unity的C ......

    uj5u.com 2023-05-06 07:59:33 more