034.Kubernetes集群安全-Secret

来源:https://www.cnblogs.com/itzgr/archive/2020/03/19/12526894.html
-Advertisement-
Play Games

一 secret概述1.1 secret作用Secret對象,主要作用是保管私密數據,比如密碼、OAuth Tokens、SSH Keys等信息。將這些私密信息放在Secret對象中比直接放在Pod或Docker Image中更安全,也更便於使用和分發。二 secret使用2.1 secret創建[ ...


一 secret概述

1.1 secret作用

Secret對象,主要作用是保管私密數據,比如密碼、OAuth Tokens、SSH Keys等信息。將這些私密信息放在Secret對象中比直接放在Pod或Docker Image中更安全,也更便於使用和分發。

二 secret使用

2.1 secret創建

[root@k8smaster01 study]# kubectl create namespace myns [root@k8smaster01 study]# echo -n "value-1" | base64 dmFsdWUtMQ== [root@k8smaster01 study]# echo -n "value-2" | base64 dmFsdWUtMg== [root@k8smaster01 study]# vi secrets.yaml

  1 apiVersion: v1
  2 kind: Secret
  3 metadata:
  4   name: mysecret
  5   namespace: myns
  6 type: Opaque
  7 data:
  8   password: dmFsdWUtMg0K
  9   username: dmFsdWUtMQ0K
[root@k8smaster01 study]# kubectl create -f secrets.yaml

註意:data域的各子域的值必須為BASE64編碼值,如上password域和username域都為BASE64編碼。

2.2 secret引用

創建完secret之後,可通過如下三種方式引用:
  • 在創建Pod時,通過為Pod指定Service Account來自動使用該Secret。
  • 通過掛載該Secret到Pod來使用它。
  • 在Docker鏡像下載時使用, 通過指定Pod的spc.ImagePullSecrets來引用它。
示例1:掛載方式 [root@k8smaster01 study]# vi mysecretpod.yaml
  1 apiVersion: v1
  2 kind: Pod
  3 metadata:
  4   name: mypod
  5   namespace: myns
  6 spec:
  7   containers:
  8   - name: mycontainer
  9     image: redis
 10     volumeMounts:
 11     - name: foo
 12       mountPath: "/etc/foo"
 13       readOnly: true
 14   volumes:
 15   - name: foo
 16     secret:
 17       secretName: mysecret
[root@k8smaster01 study]# kubectl create -f mysecretpod.yaml 如上例創建的Secret,被掛載到一個叫作mycontainer的Container中,在該Container中可通過相應的查詢命令查看所生成的文件和文件中的內容。 [root@k8smaster01 study]# kubectl exec -ti mypod -n myns ls /etc/foo #查看掛載後的secret password username [root@k8smaster01 study]# kubectl exec -ti mypod -n myns cat /etc/foo/username value-1 [root@k8smaster01 study]# kubectl exec -ti mypod -n myns cat /etc/foo/password value-2 示例2:鏡像中引用,通常用於拉取需要驗證賬號密碼的私有倉庫的鏡像。 [root@k8smaster01 ~]# docker login [email protected] registry.cn-hangzhou.aliyuncs.com Password:【阿裡雲倉庫密碼】 [root@k8smaster01 ~]# cat ~/.docker/config.json                     #查看是否寫入登錄信息 [root@k8smaster01 ~]# base64 -w 0 ~/.docker/config.json                     #將登錄信息文件轉化為base64編碼 [root@k8smaster01 ~]# vim mysecretaliyun.yaml                               #創建secret內容

  1 apiVersion: v1
  2 kind: Secret
  3 metadata:
  4   name: myregsecret
  5   namespace: default
  6 data:
  7     .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJyZWdpc3RyeS5jbi1oYW5nemhvdS5hbGl5dW5jcy5jb20iOiB7CgkJCSJhdXRoIjogIm
  8 VERXlNRGsxTWpVM05rQXhNall1WTI5dE9uZzNNemMwTlRJeEtnPT0iCgkJfQoJfSwKCSJIdHRwSGVhZGVycyI6IHsKCQkiVXNlci1BZ2VudCI6ICJ
  9 Eb2NrZXItQ2xpZW50LzE4LjAxxxxxxxxxxxxxxx
 10 type: kubernetes.io/dockerconfigjson
[root@k8smaster01 ~]# kubectl create -f mysecretaliyun.yaml [root@k8smaster01 ~]# vi mytestpod.yaml #創建Pod中使用imagePullSecrets引用

  1 apiVersion: v1
  2 kind: Pod
  3 metadata:
  4   name: mypodaliyun
  5 spec:
  6   containers:
  7   - name: mongo
  8     image: registry.cn-hangzhou.aliyuncs.com/xhypn/mongo:3.6
  9   imagePullSecrets:
 10     - name: myregsecret
[root@k8smaster01 ~]# kubectl create -f mytestpod.yaml [root@k8smaster01 ~]# kubectl get pods mypodaliyun 1/1 Running 0 48s [root@k8smaster01 ~]# kubectl describe pods mypodaliyun

clipboard

三 secret其他註意點

3.1 secret註意點

每個單獨的Secret大小不能超過1MB,Kubernetes不鼓勵創建大的Secret,因為如果使用大的Secret,則將大量占用API Server和kubelet的記憶體。當然,創建許多小的Secret也能耗盡API Server和kubelet的記憶體。 在使用Mount方式掛載Secret時,Container中Secret的data域的各個域的Key值作為目錄中的文件,Value值被BASE64編碼後存儲在相應的文件中。secret使用場景之一就是通過Secret保管其他系統的敏感信息(比如資料庫的用戶名和密碼),並以Mount的方式將Secret掛載到Container中,然後通過訪問目錄中文件的方式獲取該敏感信息。 當Pod被API Server創建時,API Server不會校驗該Pod引用的Secret是否存在。一旦這個Pod被調度,則kubelet將試著獲取Secret的值。如果Secret不存在或暫時無法連接到API Server,則kubelet按一定的時間間隔定期重試獲取該Secret,併發送一個Event來解釋Pod沒有啟動的原因。一旦Secret被Pod獲取,則kubelet將創建並掛載包含Secret的Volume。只有所有Volume都掛載成功,Pod中的Container才會被啟動。在kubelet啟動Pod中的Container後,Container中和Secret相關的Volume將不會被改變,即使Secret本身被修改。為了使用更新後的Secret,必須刪除舊Pod,並重新創建一個新Pod。



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ABP vNext(後文簡稱Abp)是 Volo 公司堪稱藝術品級的應用開發框架,它基於領域驅動設計(DDD)的思維,創新地採用了模塊化的設計。Abp 目前無疑是 ASP.NET Core 開發框架中最先進和最優雅的存在。筆者認為,憑藉絕妙的模塊化設計和絲滑的開發體驗,Abp 有望超越 Spring ...
  • 聚焦於 Xamarin 的 NET Conf 是一項免費的為期一天的直播活動,來自社區和.NET產品團隊的演講者正在使用Xamarin技術構建本機移動應用程式!Xamarin允許您使用C#(而不是Java和Swift)為Android和iOS構建本機移動應用程式。3月23日(星期一)下午8:00(太 ...
  • MurmurHash 是一種非加密型哈希演算法,適用於一般的哈希檢索操作,具有高性能、低碰撞率的特點。由 Google 的工程師 Austin Appleby 於2008年創建。MurmurHash 與其它流行的哈希函數相比,對於規律性較強的 Key,其隨機分佈特征表現的更好。非加密意味著著相對 MD ...
  • 問題:vm9里切換主機usb埠提示設備正在被使用,虛擬機里沒法使用主機usb設備,開始趟坑之旅。 1.說是vm里安裝usb3.0驅動。然而虛擬機幹啥啥不行,先win7更新sp1,再安裝KB2533623補丁,下載usb3.0驅動http://www.vmware.com/go/dl_intel_u ...
  • Magicodes.IE Excel圖片導入導出 為了更好的根據實際功能來迭代,從2.2的里程碑規劃開始,我們將結合社區的建議和意見來進行迭代,您可以點此鏈接來提交您的意見和建議: https://github.com/dotnetcore/Magicodes.IE/issues/46 說明 本章教 ...
  • 原文鏈接: "https://xiaoheidiannao.com/articles/Explorer Address Bar.html" 更多電腦使用技巧可以訪問: "https://xiaoheidiannao.com" 查看哦! 大家都知道 "文件管理器" 中的 "地址欄" 是用來顯示和打開 ...
  • 1. 從電腦如何工作開始 首先讓程式進入記憶體 重定位:修改程式中的地址(是相對地址) 程式載入後還需要移動 重定位的最合適時機 運行時重定位 首先在記憶體中找一段空閑的記憶體,然後把這段空閑記憶體的地址找到例如起始地址1000,然後把這個1000賦給PCB,因為創建了進程自然就有了PCB,這個起始地址就 ...
  • 常用用戶管理命令useradd命令名稱:useradd命令所在路徑:/usr/sbin/useradd執行許可權:root功能描述:添加新用戶選項與參數:useradd [-u UID] [-g 初始用戶組] [-G 次要用戶組] [-mM] [-c 說明欄] [-d 家目錄絕對路徑] [-s she... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...