導航:首頁 > 代理服務 > 雲原生怎麼代理

雲原生怎麼代理

發布時間:2023-03-31 06:19:42

A. sidecar和servicemesh

雲原生的概念現在炒的比較火爆,雲原生包括如下幾個基本要素:

可見servicemesh是雲原生的重要要點,了解servicemesh,首先還是要了解sidecar模式。旅塌

sidecar是從微服務層級的設拆核圓計模式,對應於代理模式。Sidecar主張以額外的容器來擴展或增強主容器,而這個額外的容器被稱為Sidecar容器。
可以見這篇文章的介紹 https://zhuanlan.hu.com/p/258527216

在sidecar上,可以把日誌、微服務注冊、調用鏈、限流熔斷降級等功能都實現,基於sidecar,抽象出servicemesh,見 https://zhuanlan.hu.com/p/61901608

基於Istio實現,類比於web應用,servicemesh相對於實現了tcp的基礎設施,讓應用專注在業務開發上。

優點:

缺點:

互聯網時代技術進化真的非常快,我們需要緊跟技術,特別是其原理。servicemesh,個人感覺和分布式事務、分布式鎖一樣,是基於服務層次的設計模式和抽象,其基本原理是代理模式,servicemesh的場景可以氏嫌讓人集中於業務開發,降低對分布式技術細節的過高門檻。

B. 軟體架構入門-分層架構、事件驅動、微服務架構和雲原生架構

軟體架構(software architecture)就是軟體的基本結構。

合適的架構是軟體成功的最重要因素之一。大型軟體公司通常有專門的架構師職位(architect),只有資深程序員才可以擔任。

O'Reilly 出版過一本免費的小冊子《Software Architecture Patterns》(PDF), 介紹了五種最常見的軟體架構,是非常好的入門讀物。

軟體架構就是軟體的基本結構。架構的本質是管理復雜性。 如果你覺得架構不重要,可能是你做的事情不夠復雜,或者是你沒有管理好復雜性。架構模式雖多,經過抽象沉澱之後,也就那麼幾種:

1. 分層架構(比較傳統的單體架構)

2. 事件驅動架構 (一般適用於應用局部場景,用來實現非同步解耦)

3. 微核架構(又稱插件架構,開發難度較高,一般用來做工具軟體開發,如Eclipse,不太適合分布式業務場景)

4. 微服務架構(當前比較流行的服務化架構,解決單體架構面臨的問題,適合敏捷開發,快速迭代)

5. 雲架構(現在的說法是雲原生架構-Cloud Native,基於Docker、Kubernetes、Service Mesh 雲原生架構)

在原文的基礎上,我按照自己的想法,進行了小幅調整。

分層架構( layered architecture )是最常見的軟體架構,也是事實上的標准架構。如果你不知道要用什麼架構,那就用它。

這種架構將軟體分成若干個水平層,每一層都有清晰的角色和分工,不需要知道其他層的細節。層與層之間通過介面通信。

雖然沒有明確約定,軟體一定要分成多少層,但是四層的結構最常見。

有的軟體在邏輯層(business)和持久層(persistence)之間,加了一個服務層(service),提供不同業務邏輯需要的一些通用介面。

用戶的請求將依次通過這四層的處理,不能跳過其中任何一層。

優點

缺點

事件(event)是狀態發生變化時,軟體發出的通知。

事件驅動架構(event-driven architecture)就是通過事件進行通信的軟體架構。它分成四個部分。

事件驅動架構(event-driven architecture)核心組件:

對於簡單的項目,事件隊列、分發器和事件通道,可以合為一體,整個軟體就分成事件代理和事件處理器兩部分。

優點

缺點

事件驅動架構在通信產品中應用得也非常廣泛,典型的如狀態機處理。 事件驅動架構不適於做頂層架構,但適合做局部實現,幾乎遍布在通信軟體的各個角落。

微核架構(microkernel architecture)又稱為"插件架構"(plug-in architecture),指的是軟體的內核相對較小,主要功能和業務邏輯都通過插件實現。

內核(core)通常只包含系統運行的最小功能。插件則是互相獨立的,插件之間的通信,應該減少到最低,避免出現互相依賴的問題。

優點

缺點

微核架構的設計和開發難度較高,這就註定它在企業產品中用得不多,雖然它的優點還不少。

微服務架構(microservices architecture)是服務導向架構(service-oriented architecture,縮寫 SOA)的升級。

每一個服務就是一個獨立的部署單元(separately deployed unit)。這些單元都是分布式的,互相解耦,通過遠程通信協議(比如REST、SOAP)聯系。

微服務架構分成三種實現模式。

現在開源的微服務框架比較多,如常用的有Spring Cloud、Dubbo、ServiceComb等等。

優點

缺點

雲架構(cloud architecture,現在的說法是雲原生-Cloud Native)主要解決擴展性和並發的問題,是最容易擴展的架構。

它的高擴展性,主要原因是可以基於雲上計算資源彈性伸縮。然後,業務處理能力封裝成一個個處理單元(prcessing unit)。訪問量增加,就新建處理單元(Docker容器);訪問量減少,就關閉處理單元(Docker容器)。由於沒有中央資料庫,所以擴展性的最大瓶頸消失了。由於每個處理單元的數據都獨立分庫。

這個模式主要分成兩部分:處理單元(processing unit)和虛擬中間件(virtualized middleware)。

虛擬中間件又包含四個組件:

隨著Docker、Kubernetes等容器化技術的快速發展,上述關於雲架構描述有點陳舊了。當前最新的雲原生架構,以Docker+Kubernetes為核心,尤其是容器編排Kubernetes 已經成為事實上的行業標准。

雲原生架構圖的主要特徵:

主要目標:

1. 讓開發人員聚焦業務邏輯的實現,其他交給容器雲平台來完成;

2. 支持業務系統的快速迭代,支撐業務的快速變化和發展;

3. 構建以共享服務體系為核心的業務中台;

下面是我針對某新零售企業設計的雲原生架構圖,以雲和微服務架構為基礎構建雲原生應用,這里雲可以是公有雲、私有雲、混合雲等等。

以上是從不同的視角,對架構進行了分類。實際應用中,各種架構並不是孤立的,可以根據業務環境和業務訴求,對各種架構進行綜合和嫁接。每種架構都有其優點和缺點。優點不必多說,缺點則幾乎都是通過工具工程(比如自動化發布工具、自動化測試等等)能力的方法來規避,工具工程對軟體架構非常重要。

C. 簡述kube-proxy的作用

kube-proxy運行在所有節點上,它監聽apiserver中service和endpoint的變化情況,創建路由規則以空或升提供服務IP和負載均衡功能。簡單理解此進程是Service的透明代理兼負載均衡器,其核心功能是將到某個Service的訪問請求轉發到後端的多個Pod實例上。我推薦你去看看時速雲,他們斗老是一家全棧雲原生技術服務提供商,提團羨供雲原生應用及數據平台產品,其中涵蓋容器雲PaaS、DevOps、微服務治理、服務網格、API網關等。大家可以去體驗一下。如果我的回答能夠對您有幫助的話,求給大大的贊。

D. Apache APISIX 2.12.0 發布,雲原生的微服務 API 網關

繼 2.11.0 版本發布之後,Apache APISIX 也在即將到來的新春佳節,為大家帶來 2022 年 第一個帶有新功能的版本 。

新功能

更多的 Serverless 集成

在上個版本里,Apache APISIX 增加了對 Azure Function 的支持。而這次新版本在功能上又加入了對更多 Serverless 廠商的支持。如今用戶也可以在 Apache APISIX 中結合 AWS Lambda 和 Apache OpenWhisk,在網關上進行特定函數的暴露。

更多的鑒權插件

此次的新版本,還將帶來兩個眾人翹首以盼的新插件: forward-auth 和 opa 。

通過上述兩個插件,將為 Apache APISIX 的鑒權功能錦上添花,給用戶帶來更多豐富和上手簡單的鑒權操作。

更多的日誌功能

除了上邊提到的鑒權插件,本次新版本還將帶來三個新的日誌插件: google-cloud-logging 、 splunk-hec-logging 以及 rocketmq-logger 。

從插件名稱上也很容易理解,通過上述三個插件可以把日誌分別發送到 Google Cloud、Splunk 和 Apache RocketMQ。未來,Apache APISIX 將會對接越來越多的日誌服務商和開源 Broker,讓日誌處理變得更加輕松。

同時,此次 2.12.0 版本還在日誌層面支持記錄響應體。與 Apache APISIX 其他功能一樣,該功能也可以塌陪搜通過表達式進行動態開啟。這樣在使用中,就可以實現僅在上游返回特定的 Content-Type 和 Content-Length 時進行日誌記錄,不用再去顧慮全量採集響應體而帶來的問題了。

具體示例可參考下方:

上述配置會僅在 Content-Length < 4096 且 Content-Type 為 "application/json" 才記錄日誌。

另一個跟日誌緊密相關的功能,就是新版本的 Apache APISIX 已支持注冊自定義變數。同時結合 APISIX 的自定義日誌格式,就可以實現完全自定義上報的日誌內容。即無需修改具體的日誌插件,就能實現日誌生成和上團歷報的解耦合。這里我們通過一個示例進行簡單演示一下。

比如我們可以在自己的插件中注冊一個 a6_route_labels 的變數:

並在自定義日誌格式中使用它:

假設我們的 Route 長這樣:

最終就會收到如下所示的日誌:

L4 代理支持 TLS over TCP 上游

在 2.12.0 版本中還引入了新的 Upstream Scheme,現在 Apache APISIX 已支持代理到 TLS over TCP 上遊了。

具體做法可參考下方,只需在 Upstream 配置中指明 Scheme 為 TLS 即可。

至此 Apache APISIX 的 TCP 代理功能得到了 TLS 全方位的支持。此外,我們還支持在靜態文件中配置 L4 代理的 Access Log:

更新

多語言插件持續完善

在之前版本中,Apache APISIX 已開放了對 WASM 生態的支持。而在 2.12.0 版本中,針對 WASM 生態又做了不少的更新細節。

目前 Apache APISIX 已經支持在 header_filter 的階段運行 WASM 代碼,彌補了現有外部插件無法修改響應的不足。

此外,我們還支持在 WASM 裡面通過 Apache APISIX 這個宿主進行 HTTP 通訊。藉助這一功能,我們用 WASM 也重新實現了 forward-auth 插件。該插件的功能幾乎和 Lua 版本一模一樣,甚至連測試用例也是在 Lua 版本上改了下名字就能通過了。

當然,我們也沒有忘記針對現有的外部插件進行更新,本次 2.12.0 版本中,Apache APISIX 已允許外部插件獲取請求體亂段。

比如最近發布的 Java Plugin Runner 第二版就包含了這一功能。新版本的 Java Plugin Runner 還支持在運行時動態獲取 APISIX 變數。

完善

更多細節

除了上述新功能和組件外,Apache APISIX 2.12.0 版本還更新了如下功能:

更多關於 Apache APISIX 2.12.0 的更新細節,可以查看本次發布對應的 Change log 。

下載

想要獲取最新的 Apache APISIX 2.12.0 版本,可通過以下路徑下載:

源代碼: https://apisix.apache.org/downloads/

二進制安裝包: https://apisix.apache.org/zh/docs/apisix/how-to-build/

E. 雲原生周報 | 2021下半年CNCF開源項目發展總結;Cilium 1.11發布

1. 2021年年底 CNCF 開源項目和發展速度概況

摘要: 本文總結了2021年下半年 CNCF 開源項目的發展速度,其中 OpenTelemetry 在 CNCF 中擁有第二大貢獻社區(僅次於 Kubernetes),它表明對現代可觀測性工具和協作的興趣仍然很重要;如果把 Argo 和 Flux 項目的速度結合起來,那麼 GitOps 生態系統的速度在 CNCF 中是最高的;Envoy 繼續擁有強大且不斷增長的社區,並已成為整個服務網格生態系統中使用最廣泛的數據平面之一。

2. BFE Server v1.4.0 和控制悔慧面組件 v.0.0.2 發布

摘要: BFE Server 更新包括修復了配合Go 1.17使用時出現的問題;在部分實現中,使用 RWMutex 代替 Mutex,獲得了部分性能上的收益;BFE 控制麵包括 APIServer、Conf Agent、Dashboard 三個程序,本次均有更新。

1. Cilium 1.11 發布,帶來內核級服務網格、拓撲感知路由

摘要: Cilium 是一個開源軟體,為基於 Kubernetes 的 Linux 容器管理平台上部署的服務,透明地提供服務間的網路和 API 連接及安全。Cilium 1.11 版本新版本增加了對 OpenTelemetry 的支持,Kubernetes APIServer 策略匹配,增強負載均衡能力,基於拓撲感知將流量路由到最近的端點,或保持在同一個地區(Region)內等。

1. Facebook 流量路由最佳實踐:從公網入口到內網業務的全路徑 XDP/BPF 基礎設施

摘要: 用戶請求從公網到達 Facebook 的邊界 L4LB 節點之後,往下會涉及到兩個階段(每個階段都包括了 L4/L7)的流量轉發:從 LB 節點負載均衡到特定主機;主機內將流量負載均衡到不同 Socket,以上兩個階段都涉及到流量的一致性路由問題。本文介紹這一過程中面臨的挑戰,以及我們如何基於最新的 BPF/XDP 特性來應對這些挑戰.

2. Kubernetes 集群二進制無損升級實踐

摘要: 本文從0到1的介紹 vivo 互聯網團隊支撐在線業務的集群如何在不影響原有業務正常運行的情況下從 v1.10 版本升級到 v1.17 版本。之所以升級到 v1.17 而不是更高的 v1.18 以上版本, 是因為在 v1.18 版本引入的代碼變動會導致 extensions/v1beta1 等高級資源類型無法繼續運行(這部分代碼在 v1.18 版本刪除)。

1. 根因解析 Kubernetes Pod 狀態異常九大場景盤點

摘要: Kubernetes Pod 作為 Kubernetes 核心資源對象,不僅 Service、Controller、Workload 都是圍繞它展開工作。作為最小調度單元的它,還擔任著傳統 IT 環境主機的職責,包含了調度,網路,存儲,安全等能力。 正是因為 Pod 具有復雜的生碧物答命周期和依賴,絕大多數 Kubernetes 問題最終都會在 Pod 上表現出來。本文介紹了工作實踐中會遇到的 9 種典型場景,以及如何使用 Kubernetes 監控來處理這些場景,快速定位發現問題。

2. 使用 eBPF 代替 iptables 優化服務網格數據面性能

摘要: 服務網格的 Sidecar 架構不可避免的會增加請求時延和資源佔用,本文介紹通過使用 eBPF 代替 iptables 實現流量劫持,同時使用 sockmap 加速 Sidecar 代理和應用程序間的網路通信,在一定程度上降低了請求時延和資源開銷

3. 讓容器跑得更快:CPU Burst 技術實螞激踐

摘要: 以前人們在 CPU Bandwidth Controller 中修復了一些 BUG 導致的 CPU 限流問題,當前非預期限流是由於 100ms 級別 CPU 突發使用引起,並且提出 CPU Burst 技術允許一定的 CPU 突發使用,避免平均 CPU 利用率低於限制時的 CPU 限流。在雲計算場景中,CPU Burst 技術的價值有:不提高 CPU 配置的前提下改善 CPU 資源服務質量;允許資源所有者不犧牲資源服務質量降低 CPU 資源配置,提升 CPU 資源利用率;降低資源成本(TCO,Total Cost of Ownership)。

4. 如何基於BFE做灰度發布

摘要: 「灰度發布」是互聯網業務研發所需的重要能力。BFE對於灰度發布的兩種方式(基於流量特徵的灰度發布、基於流量比例的灰度發布)都提供了支持。結合已經開源的BFE控制面組件,可以使用BFE Dashboard或BFE API完成灰度發布的相關配置。


F. 深入理解Kubernetes的認證與授權機制

眾所周知,任意一個系統的安全機制的核心都是基於 認證與授權 (Authentication and Authorization),即首先通過某種方式確認「你」的身份,再根據一定的授權策略確定「你」在我的系統裡面能做什麼操作。對於K8S來說,就是體現為客戶端對於 kube-apiserver 的api介面操作的鑒權(客戶端可以是集群內的工作負載pod,任意伺服器上的kubectl程序,或是計算節點上的kubelet組件等等)。Kubernets項目作為一個成熟的開源雲計算基礎設施項目,讓我們來看看他們是如何解決認證與授權這兩個核心問題的:

k8s的用戶認證機制的官方文檔地址: https://kubernetes.io/docs/reference/access-authn-authz/authentication/ 。

Kubernetes中的用戶類型分為 service accounts 和 normal users 兩類。service accounts是k8s內部自建的一套用戶認證體系,主要用於pod里直接調用kube-apiserver過程中的認證。而普通用戶類型依賴於外部認證服務,k8本身不關心。

當創建service account對象弊禪時,會對應的創建一個secret對象,內含了這個用戶的認證token,當pod啟動時,只要yaml里申明了綁定特定的service account賬號,那麼系統會自動把secret的token注入到pod中的指定目錄,接下來當pod調用apiserver介面時,系統都會自動的附加上這個token,這樣apiserver就可以識別出這個pod的身份,結合role和rolebinding的配置信息,就可以正確的授權了。service account是基於k8內部的認證體系,使用起來比較方便,直接在集群內創建sa資源即可。此種類型的用戶不是本篇文章討論的重點,想了解具體的操作可以參考我之前的這篇文章: 構建雲原生微服務網關系列-篇二:Zuul ,裡面有詳細的service account的使用說明。

本文討論的重點,針對普通用戶類型,很多人的理解會比較模糊,對此官網有一段說明:

也就是說,k8項目認為普通用戶認證應該由外部服務供應商解決,k8本身不關心認證過程,只要告訴他最終的認證結果,即這個用戶是「誰」。認證方式可以用公私鑰對,或者openstack 的 keystone認證服務、google的Google Accounts服務,甚至是一個有著用戶名和密碼列表的文件,對於k8s來說,都是一樣的。不管用何種方式去認證,最終結果都是告訴k8s,這個用戶是「誰」,也就是它的用戶id。這里需要注意的時,對於普通用戶類型,k8是不會存儲用戶信息的,而對於service account類型的用戶,k8會保存在etcd裡面。普通用戶也無法通過api調用直接創建。

Kubernetes 支持使用客戶端證書、bearer token、認證代理或者http basic auth等方式進行認證,而無論使用哪種方式,認證插件都需要將以下的用戶信息和http請求進行關聯:

api-server目前支持的認證方式有:

使用由 k8s 根 CA 簽發的證書,提取cn欄位作為用戶id,O欄位作為用戶組。我們可以使用openssl工具來進行證書的簽發(kubernetes 1.4之後支持拍困了證書中攜帶用戶組信息):

上述操作會生成一個證書請求,username為 jbeda ,並同時屬於兩個用戶組 app1 和 app2 。

靜態token列表文件,需要預先在 API Server 伺服器上放置該文件,並且在api server的啟動參數中加上 --token-auth-file=SOMEFILE ,token文件為csv格式,應至少包含token, user name, user uid這三個欄位(逗號分隔)以及一個可選的group names欄位,例如:

注意如果用戶組有多個的話,整個用戶組需要用雙引號括起來。

1.18版本進入穩定版的新特性,支持可以在集群啟動時動態的創建和管理token,配置比較多,這里不多贅述,有興趣直接參租賀塵考官方文檔

跟靜態 Token 文件類似,只是使用了用戶名密碼的形式進行認證,使用的是http basic auth類型的認證方式,啟動參數為 --basic-auth-file=SOMEFILE ,文件格式為:

很好理解,不多說了

之前介紹過了,k8s內部用戶體系 Service Account 使用的 Token,認證方式也是bearer token。這里需要注意的是官方文檔有一個描述:

因為api-server本身並不關注流量是從哪裡過來的,所以基於service account創建的token,只要你拿到了這個token,是可以從 集群外部 發起請求的,api-server會將此請求認證為對應的service account用戶。拿到token的方式官網也做了說明:

注意和serviceaccount綁定的secret類型為 kubernetes.io/service-account-token ,其中token欄位即為我們需要的令牌(jwt格式),拿著這個令牌就可以直接發起請求了。 注意在secret中保存的token是經過base64編碼的,實際使用時還需要先進行base64解碼操作,可以使用jwt.io網站來查看這個令牌,以下是k8s簽發的一個jwt令牌payload部分欄位的示例:

新出來的一種認證方式,基於Oauth2,比較復雜,有興趣可以參考官方文檔,這里不介紹了。對於Oauth2認證以及JWT技術比較感興趣的,可以參考我之前的博文 深入理解Spring Cloud Security OAuth2及JWT 。(閱讀量4萬多了,也算爆款了:)

搞定了認證,接下來就是授權了。得益於k8s優良的設計,認證和授權是解耦的,所以只要k8系統識別出了用戶身份(username或者uid),接下來要做的事情就是一樣的了。關於授權部分的官方文檔地址: https://kubernetes.io/docs/reference/access-authn-authz/rbac/

事實上k8s本身也支持多種授權類型,比如rbac,abac,node,dynamic admission 等等。這里只介紹下最常用的rbac(基於角色的訪問控制),實際使用中,api-server開啟 --authorization-mode=RBAC 參數,即啟動了rbac功能。

如果你對於rbac本身已經比較了解,那麼其實k8s裡面的rbac功能就非常容易理解了。涉及rbac的有兩個api對象,role定義了一個角色,申明了此角色可以操作的功能列表,rolebinding其實就是把用戶和角色做了一個綁定。

role的api對象示例:

這個yaml定義了一個Role對象,名稱為 pod-reader , 作用域為 default 這個namespace,可以對 pods 這個對象進行 get 、 watch 、 list 操作。
kubernetes完整的操作類型列表如下,都很好理解,不一一說明了:

值得注意的是,有些資源還有子類型,比如pod的logs,如果需要查看,也是需要授權的(添加 pods/log 資源類型)

RoleBinding資源的作用也非常容易理解, 就是綁定Role和用戶。下面是一個RoleBinding的示例:

這個例子里把一個類型為User,name叫做jane的用戶,和pod-reader的Role做了綁定。注意subjects裡面的 kind 欄位,即用戶類型,前面介紹過了,分別是 User 、 Group 和 ServiceAccount 。綁定完成之後,當使用 jane 這個用戶身份對k8s的api進行調用,就可以進行指定的 watch 、 get 、 list 操作了。

這兩資源其實和Role、RoleBinding的配置方式是完全一樣的,區別在於ClusterRole和ClusterRoleBinding的作用域是集群范圍的,並且可以操作 node 這樣的集群范圍資源,而Role、RoleBinding在metadata中需要指定namespace欄位,其他方面沒有區別。

弄清原理之後,現在讓我們來實際操作一下,目標是使用kubectl客戶端工具對於給定的k8集群進行受限操作。基於上述的認證策略的介紹,我們使用 客戶端證書 方式來進行用戶認證,即使用K8集群的根證書來簽發一個用戶證書,使用該證書來進行用戶認證及授權操作。

關於RSA證書的製作,可以參考官網文檔: https://kubernetes.io/docs/concepts/cluster-administration/certificates/ ,這里我們使用常用的openssl工具來製作證書:

1、創建一個2048位長度的RSA格式私鑰

2、創建證書簽名請求(csr),CN-對應Username O-對應用戶組,上面的文章中已經介紹過

3、使用集群根證書簽發這個證書請求(days是證書到期時間,可根據實際需要配置)

首先先找到一台准備作為客戶端訪問k8集群的linux伺服器(或者windows、mac都可以),確保客戶端與集群的api-server埠網路聯通(一般為6443埠,注意必須是https連接),出於安全考慮,最好開一個操作k8的專用的操作系統賬號。把集群master節點中的kubectl二進制文件拷貝至此伺服器/usr/bin目錄內,同時拷貝release.csr、release.key、ca.pem這三個文件至伺服器上的指定目錄。

在新建用戶的home目錄下創建.kube目錄,在此目錄下新建config文件(或者直接執行kubectl config set-cluster test操作,kubectl會自動創建該文件),編輯該文件填寫如下內容:

完成之後可以執行 kubectl config view 來驗證一下配置是否正確。

使用管理員登陸k8集群,進行許可權配置,這里以添加集群范圍的運維用戶許可權為例:

可以看到,我們定義了一個角色 release ,用於應用的部署及日常運維操作。為了滿足日常運維,給其分配了一組受限的資源許可權。

具體來說,該角色對"deployments","services","configmap","pvc"資源有全部的操作許可權,對於"nodes","events","pods","pods/log","endpoints"只有查看許可權,對於其他資源沒有任何許可權。

這里我們定義了一個ClusterRoleBinding,把User和ClusterRole進行了綁定,到這里全部操作就完成了。

登陸客戶端,一切順利的話,執行 kubectl get pods 就可以返回遠程集群的default命名空間下的pods列表了,其他配置的許可權應該也可以正常操作。而如果這個用戶想訪問受限資源,比如想查看secrets信息,則會出現如下的報錯信息(403 Forbidden):

驗證成功!

基於上述的描述,可以知道,其實在集群裡面創建一個service account,把它的token拷貝出來,配置在客戶端的kubectl配置文件中,可以達到同樣的效果,這里就不再演示了。

因為service account的token機密信息實際上都是存放於secret對象中,而secret經常被人吐槽的是存放的數據是明文(只是做了base64編碼),所以這里多說一句secret的安全性問題。其實k8s是支持secret加密存放的,支持的加密類型還挺多,具體可以看我這篇文章: 使用加密插件加密secrets中的數據 。但其實我並不建議使用這種方式,原因是使用加密插件只能加密存放在etcd裡面的數據,而使用api server調取出的數據仍然是解密過後的,這意味著你執行 kubectl get secrets 或者是進入容器的環境變數查看,仍然可以看到明文數據。k8s項目更推薦的許可權管理方式是:

做好上面兩點,對於一般公司的安全管控來講已經足夠,畢竟集群管理員的許可權只是掌握在很小一部分人的手中。而對於安全審計要求更高的企業(比如金融機構),審計可能會有要求敏感數據必須加密存放,此時可使用api-server的加密插件。

G. 電腦培訓分享微服務系統架構的發展趨勢

隨著伺服器開發技術的不斷發展,微服務架構技術在各個方面都有了很大的技術突破。今天,電腦培訓http://www.kmbdqn.com/就一起來了解一下,在互聯網大環境下的微服務系統架構的發展趨勢。



1.服務網格白熱化


服務網格是一個專注於服務間通信的基礎設施層,也是目舉正前受關注的與雲原生有關的話題。隨著容器的普及,服務拓撲變得越來越動態化,這對網路功能提出了更多的要求。服務網格通過服務發現、路由、負載均衡、健康檢測和可觀察性來管理流量,簡化容器與生俱來的復雜性。


隨著HAProxy、traefik和NGINX逐步把自己定位成數據平面,服務網格也變得越來越流行。盡管服務網正滑悔格還沒有得到大規模部署,但確實有些企業已經在生產環境中運行服務網格。另外,服務網格不僅可以用在微服務或Kubernetes環境中,也可以被用在VM和無伺服器架構的環境中。例如,美國國家生物技術信息中心雖然沒有使用容器,但他們使用了Linkerd。


2.事件驅動架構的崛起


隨著業務場景的不斷變化,我們已經看到了基於推送或事件的架構正在成為一種趨勢。服務向訂閱事件的觀察者容器發送事件,容器非同步做出響應,事件發送者可能對此一無所知。與請求響應式架構不同的是,在基於事件的系統架構中,發起事件的容器並不依賴下游的容器,它們的處理過程和載入的事務與下游讓悶容器的可用性或完成情況無關。這種架構的另一個好處是,開發者可以更加獨立地設計各自的服務。


3.安全模型的變化


因為對內核訪問方面的限制,部署在容器中的應用程序相對安全。在VM環境中,虛擬設備驅動器是暴露可見性的地方。而在容器環境里,操作系統提供了系統調用,信號源也變得更加豐富。之前,管理員需要在VM中安裝代理,但那樣太復雜了,需要管理太多的東西。容器提供了更清晰的可見性,相比VM,與容器的集成會更加容易。


4.從REST到GraphQL


GraphQL是Facebook於2012年創建並於2015年開源的一套查詢語言API規范。GraphQL的類型系統允許開發者自己定義數據schema,可以增加新欄位,也可以刪除舊欄位,這些都不會影響已有的查詢,也不需要修改客戶端。GraphQL非常強大,因為它沒有與特定的資料庫或存儲引擎綁定在一起。


H. 騰訊課堂圖靈的"雲原生與大廠項目架構課"怎麼樣值得購買嗎

這個技術對我而言是一個未知的技術,之前連docker都很少用到,docker都只是自己學習玩一下。學習這個課程開始,不能說自己能達到運維一樣的牛,但是技術團隊內部的問題最起碼還是可以解決和完成的。雖然還有很多細節或者說課程上不能完全滲透的點,只能自己項目實戰上或者團隊中應用的時候才能學習或者提升了,老坦畢竟每個人或者項目遇到的情況不一樣,老師也只是負責帶你進門,總結精華。對於這個項目所涉及的技術還沒辦法應用到團隊中,不過沒關系,知識屬於自己的。不吹不捧,事實說如果你公司正在用K8S,或者你想學習K8S。請不要猶豫,圖靈VIP為你提供的不單純是K8S。如果團隊有用到K8S,自己又有興趣或者說自己知道,但是又不是那麼熟悉。可以學習下,讓自己不是停留在「K-8-S」,而是知道整個技術架構或體系中的每個點負責干什麼,怎麼協作,怎麼簡化了運維的過程侍州桐。雖然技術簡化了運維的過程,但是只有了解怎麼實現的或者說細節,才不至於出現問題的時候手足無措不知道怎麼處理。對於剛工作跡孝的人來說解決問題是很有樂趣的,工作很多年之後自己解決問題,讓自己的技能成為別人的寶藏也是件很有成就的事情∞

I. 雲原生安全的知識哪裡有介紹的

這個的話建議你埋槐可以收看產業安全公開課-雲原生安全,屆時業內大咖會圍繞遲皮加密軟硬體、密鑰/憑據管理、雲安全訪問代理三大關鍵能力,幫助企業構建碼液差雲上數據全生命周期安全保護架構。

J. 有哪些影響雲系統安全性的因素

雲原生安全仍然需要多層次的防禦

在傳統的安全術語中,企業將考慮多個安全層。企業可能考慮代碼安全,包管理,操作系統補丁,伺服器端咐陵點安全等方面的內容。但現在這些不再需要了。但重要的是要明白衡寬,使用雲原生工作負載不會從這個角度給出任何快捷方式,從這個角度來看,企業仍然需要用所有必需的安全層包裝軟體。

雲原生安全是端到端的安全

devops的應用將傳統專業團隊分為兩類:一類是部署微服務的開發人員,另一類是致力於雲計算的基礎架構團隊。通常情況下,即使這兩個團隊也衡攔戚變成了一個單一的「雲」團隊,也需要承擔多重責任。

如果企業考慮到這種環境的安全性,將其分成兩組也是更有意義的:

(1)雲原生基礎架構:包括企業雲消費的服務(例如L3-4防火牆,伺服器安全,網路加密和存儲加密)的安全性。

(2)雲原生應用程序:包括需要應用程序感知的任何安全元素(例如,L7防火牆,安全滲透測試,圖像安全性,以及應用程序的微分割)。

這將改變人們在市場上看到的安全產品的類型。雲計算供應商將在其雲端產品中增加更多傳統的基礎架構功能,以增強其平台吸引力,並提供涵蓋所有基礎架構安全需求的全方位產品。另一方面,安全提供商將主要側重於應用程序級安全性,並且還將需要提供端到端的安全解決方案,這也將需要包括前面提到的多個因素。

雲原生安全由雲團隊經營傳統上,安全層需要不同人員或團隊的專業知識(例如端點,伺服器,網路,身份,PKI,存儲和軟體開發)。企業可以讓人們手動添加這些安全層作為基礎設施的分配和應用程序的部署,然後調用團隊中的專家來配置必要的雲概念。但是分配這些資源需要是即時的,並且需要改進其安全產品。

雲原生安全性已經引發了重大變化。它決定圍繞安全層的策略需要由安全性和基礎架構師定。但是,執行這些策略的安全機制必須自動附加到雲端和配置進程。通過允許devops或雲團隊盡可能無縫地進行操作,從而全面展開整個過程。

企辦平台提供的雲服務,覆蓋率更高、速度更快、監控更實時、安全體系更穩固,一定會是您的最優選擇。

閱讀全文

與雲原生怎麼代理相關的資料

熱點內容
可以在哪些地方標注店鋪信息 瀏覽:440
浙江省和江蘇省哪個程序員工資高 瀏覽:430
每日優鮮如何成為電商小程序 瀏覽:258
成都潮音村綜合市場屬於哪個區 瀏覽:183
花牛批發市場多少錢一斤 瀏覽:398
清關進口代理一般多少錢 瀏覽:957
神佑釋放貨幣怎麼交易 瀏覽:5
江南市場菠蘿多少錢一斤 瀏覽:452
電工技術如何提高電路功率因數 瀏覽:783
led數據線哪裡有賣 瀏覽:158
附加產品產品是什麼 瀏覽:789
四季優美代理商怎麼樣 瀏覽:905
委託代理專利怎麼做 瀏覽:734
桌面程序是哪個 瀏覽:793
市場上什麼電視不刺激眼睛 瀏覽:345
ps如何看圖層信息 瀏覽:101
如何做注冊代理記賬 瀏覽:175
微信從小程序買了東西怎麼查 瀏覽:719
江蘇海綿批發市場有哪些 瀏覽:869
基金轉入產品如何收益 瀏覽:170