成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CNCF 會重蹈 OpenStack 的覆轍嗎?

企業動態 OpenStack
CNCF 執行董事 Dan Kohn 表示:CNCF 一直非常專注于確保所有成員在迅速擴張的組織中都有各自的代表性。CNCF 的最大優勢是他們足夠新興,所以他們能夠向前人學習,其的愿景是只犯新的錯誤, 而不是照搬過去的錯誤。所以推斷 CNCF 會重蹈 OpenStack 的覆轍,這樣的論斷是錯誤的。

[[202023]]

CNCF(Cloud Native Computing Foundation),即云原生計算基金會,于 2015 年 7 月成立,隸屬于 Linux 基金會,初衷圍繞“云原生”服務云計算,致力于維護和集成開源技術,支持編排容器化微服務架構應用。

由于最近大佬級別的云提供商的加入,云原生計算基金會(CNCF)很快就站在了開源容器世界的中心。在過去的幾個星期里, CNCF 吸引了微軟和亞馬遜的 Web 服務 (AWS)的加入。他們的加入對于這個本來就隸屬于 Linux 基金會的組織來說,無疑是如虎添翼。

而伴隨著 Kubernetes 的成功,和市場對于容器技術的需求逐漸擴大,CNCF 的聲勢也日漸浩大。微軟和 AWS 相繼加入 CNCF,對于 CNCF、開源和 Kubernetes 來說, 也是一個巨大的勝利。

盡管這些會給 CNCF 帶來規模和潛在的影響,但組織仍然面臨挑戰。

CNCF 執行董事 Dan Kohn 表示:

CNCF 一直非常專注于確保所有成員在迅速擴張的組織中都有各自的代表性。CNCF 的最大優勢是他們足夠新興,所以他們能夠向前人學習,其的愿景是只犯新的錯誤, 而不是照搬過去的錯誤。所以推斷 CNCF 會重蹈 OpenStack 的覆轍,這樣的論斷是錯誤的。

而對 OpenStack 來說,許多運營商早期的時候使用 OpenStack 來實現他們的 SDN 計劃,而現在供應商社區則無法提供所需的解決方案。同時,OpenStack 存在的一些問題還歸咎于它無法處理一些較大成員的不同需求。

而為了規避這樣的問題,CNCF 留出了在供應商之上添加更多產品的余地,讓社區來決定其有用性。這樣他們的生存和死亡由自身的優勢決定,但 OpenStack 社區人為地支撐著將死的平臺。

同時,Dan Kohn 也承認 Kubernetes 一直處于爆炸性增長的狀態。如果能管理這一增長,則能實現組織目前最大的成就。

Kubernetes 1.7.4 版本發布

[[202024]]

8 月 17 日, Kubernetes 1.7.4 版本發布,相比 1.7.3 版本共有 17 處明顯變化,例如:

  • 修復創建或更新 ELB 會修改全局定義的 Security Group Bug
  • 修復 kubefed 在不同版本 RBAC 創建問題
  • 修復 API Server Watch Cache 中一個 Bug
  • Azure:允許 VNet 在一個單獨的資源組中
  • Cluster Autoscaler -修復了與 taints 相關的問題,并更新了 kube – proxy cpu請求
  • 以 Stackdriver 模式收集來自 Heapster 的 Metrics
  • GCE:Bump GLBC 版本更新到 0.9.6
  • 更新 Heapster 版本 1.4.1

Docker Tips:將容器的文件重定向到您的 Docker 主機

[[202025]]

每隔一段時間,我都需要將容器的文件轉存到我的 Docker 主機上。在這里向大家提供一種簡單的方法。

有時為了調試,您可能想將容器內部的配置文件的內容復制到 Docker 主機,以便您在自己喜歡的代碼編輯器中打開它,或將其發送給別人。這對于已經運行的 Docker 容器來說非常方便,并且您不希望用 volume 重新啟動它,因為你想要立刻就獲取這個文件。

完成以下兩點你就可以達成目的:

  1. # 重寫那個鏡像的 Dockerfile 的 CMD, 來cat到你想要的文件 
  2. docker run --rm alpine cat /etc/hosts 

以上步驟將打印出容器的 /etc/hosts 文件的內容

  1. # 修改命令將該輸出重定向到 Docker 主機上的新文件。 
  2. docker run --rm alpine cat /etc/hosts > /tmp/alpinehosts 

你可以運行命令ls -la /tmp | grep alpinehosts來進行驗證。

當然,如果您在 Docker 主機上運行 Windows 而不是 MacOS 或 Linux,則你的命令需要進行一些小的調整。例如,在 Windows 上不起作用。如果您使用 PowerShell 等,您將需要 Google 一下如何將輸出重定向到文件。

另外,在這兩種情況下,您都需要將Cat指令安裝在 Docker 鏡像中,但所有主要的 Linux 版本都已經默認安裝了(包括 Alpine)。

從環境變量到 Docker secrets

1. 12 Factor app

12 Factor app 中的第三項告訴我們要將配置存儲在環境中。

它還提供了以下內容的示例:

  • 資源處理數據庫,Memcached 和其他后臺服務
  • 對外部服務的認證,如 Amazon S3 或 Twitter
  • 部署的規范主機名

我們想知道如今是否仍然推薦這種方法,并且使用它的風險程度。在這篇文章中,我們將一個簡單的應用程序為例,看看如何修改它以更安全的方式來處理這些敏感的信息。

2. 在 Docker 世界運行的應用

在過去的幾年中,我們看到了許多應用在開發和部署方面都產生了變化。這主要是因為Docker 平臺的流行。應用程序現在主要采用微服務體系結構:它們由多個隔離式服務組成。使用 Docker Compose 文件格式定義微服務應用程序現在非常普遍。此格式定義了服務及其使用的組件(網絡,卷,...)。以下是用于定義由以下組成的 Web 應用程序的 Docker Compose 文件(其默認名稱為 docker-compose.yml)的簡單示例:

  1. version: "3.3" 
  2. services: 
  3.   db: 
  4.     image: mongo:3.4 
  5.     network: 
  6.       - backend 
  7.     volumes: 
  8.       — mongo-data:/data/db 
  9.     deploy: 
  10.       restart_policy: 
  11.         condition: on-failure 
  12.   api: 
  13.     image: lucj/api:1.0 
  14.     networks: 
  15.       - backend     
  16.     deploy: 
  17.       restart_policy: 
  18.         condition: on-failure 
  19.   web: 
  20.     image: lucj/web:1.0 
  21.     networks: 
  22.       - frontend 
  23.       - backend     
  24.     deploy: 
  25.       restart_policy: 
  26.         condition: on-failure     
  27. volumes: 
  28.   mongo-data: 
  29. networks: 
  30.   frontend:   
  31.   backend: 

3. 使用環境變量處理 AWS 憑據

當我們深入了解 api 服務,假設這需要 AWS S3 的一些憑據。api 服務是在 Node.js 中編寫的。使用 aws-sdk npm 模塊連接到 Amazon API 的代碼類似于以下內容。

  1. // Middleware handling user's profile images 
  2. const AWS = require('aws-sdk'), 
  3.       config = require(‘../config’), 
  4.       aws_config = config.amazon; 
  5. // Configure AWS SDK 
  6. AWS.config.update(aws_config.credentials); 
  7. // Define S3 bucket 
  8. var s3Bucket = new AWS.S3( { params: {Bucket: aws_config.bucket} } ) 
  9. ... 
  10. // Upload image object 
  11. s3Bucket.putObject(obj, function(err){ 
  12.     if (err) { 
  13.         log.error(err); 
  14.         return next(err); 
  15.     } else { 
  16.           return next(); 
  17.     } 

以上代碼中所需的配置模塊在一些其他配置內容中定義了 AWS 憑據。我們在這里看到,每個元素從一個環境變量獲取它的值。

  1. // config.js 
  2. module.exports = { 
  3. ... 
  4.   "amazon":{ 
  5.     "credentials": { 
  6.       "accessKeyID": process.env.AWS_ACCESS_KEY_ID, 
  7.       "secretAccessKey": process.env.AWS_SECRET_ACCESS_KEY, 
  8.     }, 
  9.     "bucketName": process.env.AWS_BUCKET_NAME 
  10.   } 
  11. }; 

然后,當通過 Docker Compose 運行應用程序時,我們通過環境鍵指定這些環境變量。

  1. api: 
  2.  image: lucj/api:1.0 
  3. networks: 
  4.       - backend     
  5.     deploy: 
  6.       restart_policy: 
  7.         condition: on-failure 
  8.  environment: 
  9.    — AWS_BUCKET_NAME=BucketName 
  10.    — AWS_ACCESS_KEY_ID=AccessKeyID 
  11.    — AWS_SECRET_ACCESS_KEY=SecretAccessKey 

這的確是處理這個問題的一個方式,但是,將這些敏感信息以純文本格式化是非常危險的。

4. 處理具有 Docker secrets 的 AWS 憑據

有幾種方式可以以安全的方式處理這些信息。使用 Docker secrets 就是其中之一。

我們不再在環境變量中以純文本定義憑據信息,而是從中創建 docker secrets。

  1. $ echo "BucketName"| docker secret create AWS_BUCKET_NAME - 
  2. vjp5zh8hwb9dqkvohtyvtifl1 
  3. $ echo "AccessKeyID" | docker secret create AWS_ACCESS_KEY_ID - 
  4. 5txxg3fslf9g5z1o4i19vvmcr 
  5. $echo "SecretAccessKey"|docker secret create AWS_SECRET_ACCESS_KEY - 
  6. v8g65iwcx1eb6uuwsjzknyi7g 

secrets 創建成功。使用docker secret ls。

  1. $ docker secret ls 
  2. ID NAME CREATED UPDATED 
  3. 5x..vm AWS_ACCESS_KEY_ID About a minute ago About a minute ago 
  4. v8..7g AWS_SECRET_ACCESS_KEY About a minute ago About a minute ago 
  5. vj..l1 AWS_BUCKET_NAME About a minute ago About a minute ago 

但他們的內容無法被檢索。例如,如果我們檢查與關鍵字 AWSACCESSKEY_ID 相關聯的 secret,我們只會獲取元數據,而不是其實際內容。

  1. $ docker secret inspect 5txxg3fslf9g5z1o4i19vvmcr 
  2.   { 
  3.     "ID": "5txxg3fslf9g5z1o4i19vvmcr", 
  4.     "Version": { 
  5.       "Index": 12 
  6.     }, 
  7.     "CreatedAt": "2017–08–13T12:58:50.54021338Z", 
  8.     "UpdatedAt": "2017–08–13T12:58:50.54021338Z", 
  9.     "Spec": { 
  10.       "Name": "AWS_ACCESS_KEY_ID", 
  11.       "Labels": {} 
  12.     } 
  13.   } 

創建了 secret 以后,我們就可以在 Docker Compose 文件中引用它們。

  1. secrets: 
  2.   AWS_BUCKET_NAME: 
  3.     external: true 
  4.   AWS_ACCESS_KEY_ID: 
  5.     external: true 
  6.   AWS_SECRET_ACCESS_KEY: 
  7.     external: true  

在 Docker Compose 文件中,我們還需要修改 api 服務的描述,以便使用這些 secrets。

  1. api: 
  2.  image: lucj/api:2.0 
  3.  secrets: 
  4.    — AWS_BUCKET_NAME 
  5.    — AWS_ACCESS_KEY_ID 
  6.    — AWS_SECRET_ACCESS_KEY 
  7.  networks: 
  8.    — backend 
  9.  deploy: 
  10.    restart_policy: 
  11.      condition: on-failure 

當一個服務需要訪問一個 secret 時,默認情況下,它被安裝在該服務的每個容器中的臨時文件系統中。

由于我們的應用程序僅在此階段檢查環境變量,因此需要進行更新。

這可以用一個簡單的模塊來實現,只需要從`/run/secrets`中讀取一個 secret。這在以下代碼中說明。

  1. // secrets.js 
  2. const fs = require("fs"), 
  3.       util = require("util"); 
  4. module.exports = { 
  5.   // Get a secret from its name 
  6.   get(secret){ 
  7.     try{ 
  8.       // Swarm secret are accessible within tmpfs /run/secrets dir 
  9.       return fs.readFileSync(util.format(“/run/secrets/%s”, secret), "utf8").trim(); 
  10.      } 
  11.      catch(e){ 
  12.        return false; 
  13.      } 
  14.   } 
  15. }; 

然后,我們可以修改配置文件,以便它使用 secrets.js 模塊的 get 函數:

  1. ... 
  2. "amazon":{ 
  3.   "credentials": { 
  4.     "accessKeyId": secrets.get(“AWS_ACCESS_KEY_ID”) || process.env.AWS_ACCESS_KEY_ID, 
  5.     "secretAccessKey": secrets.get(“AWS_SECRET_ACCESS_KEY”) || process.env.AWS_SECRET_ACCESS_KEY, 
  6.   }, 
  7.  "bucket": secrets.get("AWS_BUCKET_NAME") || process.env.AWS_BUCKET_NAME 
  8.  } 

對于每個 key,我們首先檢查它是否作為 secret 存在。如果沒有的話,我們仍然使用環境變量。

【本文是51CTO專欄機構“道客船長”的原創文章,轉載請通過微信公眾號(daocloudpublic)聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2012-06-15 13:11:33

Windows 8Vista

2016-12-02 19:56:11

2019-02-21 16:00:06

三星蘋果手機

2019-05-22 10:32:50

NB-IoT5G通信網絡

2019-04-22 09:36:14

互聯網996血汗工廠

2012-04-06 07:13:56

2015-08-17 11:02:48

物聯網

2009-08-20 18:13:03

F#和C#

2016-08-18 15:40:41

2009-03-08 09:20:19

Windows 7企業用戶

2009-05-11 08:54:23

微軟Windows 7操作系統

2014-09-24 09:42:07

Windows 9

2016-08-29 20:23:45

微軟手機操作系統windows pho

2011-08-25 13:52:25

2009-11-09 09:12:45

Windows 7銷售模式

2020-12-28 12:51:02

C頻段頻譜美國移動通信

2015-07-16 09:29:47

云計算鐵軌狂熱OpenStack

2013-08-19 15:35:24

智能機PC三星

2017-05-19 22:23:21

2009-05-14 09:19:50

微軟Windows 7操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人高清 | 国产午夜精品一区二区 | 精品国产一区二区国模嫣然 | 精品国产三级 | 精品1区2区 | 91av在线视频观看 | 在线一区二区三区 | 欧洲亚洲精品久久久久 | 人人爽人人草 | 亚洲视频一区二区三区四区 | 天堂中文资源在线 | 亚洲狠狠丁香婷婷综合久久久 | 国产精品视频在线观看 | 亚洲欧美国产毛片在线 | 激情在线视频网站 | 日本高清精品 | 国产人久久人人人人爽 | 国产成人一区二区三区久久久 | 欧美性猛片aaaaaaa做受 | av黄色在线观看 | 午夜tv免费观看 | 亚洲天堂网站 | 久久久久久影院 | 亚洲欧美一区在线 | 国产1区在线 | 国产午夜视频 | 天天拍天天色 | 国产乱码精品一区二区三区五月婷 | 一区中文字幕 | 日韩高清不卡 | 亚洲电影第三页 | 天天综合网永久 | 午夜影院操 | 亚洲午夜精品 | 全免费a级毛片免费看视频免费下 | 丝袜美腿一区二区三区 | 美女视频网站久久 | 日本一区二区三区四区 | 成人精品视频在线 | 欧美色欧美亚洲另类七区 | 国产美女网站 |