亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

secrets in kubernetes

NSFish / 3390人閱讀

摘要:目前只支持使用來(lái)自于的。現(xiàn)在我們能創(chuàng)建使用這個(gè)的當(dāng)這個(gè)中的運(yùn)行后,將會(huì)有如下兩個(gè)文件及對(duì)應(yīng)的內(nèi)容現(xiàn)在可以用這個(gè)數(shù)據(jù)來(lái)建立連接。

在kubernetes中,secret對(duì)象類型主要目的是 保存一些私密數(shù)據(jù),比如密碼,OAuth tokens,ssh keys等信息。將這些信息放在secret對(duì)象中 比 直接放在pod或docker image中更安全,也更方便使用。

secrets描述

創(chuàng)建secrets對(duì)象的方式有兩種,一種是用戶手動(dòng)創(chuàng)建,另一種是集群自動(dòng)創(chuàng)建。

一個(gè)已經(jīng)創(chuàng)建好的secrets對(duì)象有兩種方式被pod對(duì)象使用,其一,在container中的volume對(duì)象里以file的形式被使用,其二,在pull images時(shí)被kubelet使用。

為了使用secret對(duì)象,pod必須‘引用’這個(gè)secret,同樣可以手動(dòng)或者自動(dòng)來(lái)執(zhí)行‘引用’操作。

自動(dòng)建立ServiceAccount && 使用secret API

kubernetes會(huì)自動(dòng)創(chuàng)建包含證書(shū)信息的secret,并且使用它來(lái)訪問(wèn)api,kubernetes也將自動(dòng)修改pod來(lái)使用這個(gè)secret。

自動(dòng)創(chuàng)建的secret 以及 所使用的api證書(shū) 可以根據(jù)需要disable 或者 覆蓋。如果僅僅需要 安全訪問(wèn)apiserver,那么上述的流程是推薦的方式。

手動(dòng)創(chuàng)建secret

以下是一個(gè)簡(jiǎn)單secret對(duì)象的例子:

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: dmFsdWUtMg0K
  username: dmFsdWUtMQ0K

數(shù)據(jù)中的字段為map類型。其中keys必須符合dns_subdomain規(guī)則,values可以為任意類型,使用base64編碼。上述例子中,username和password的數(shù)據(jù)值在base64編碼前的值為value-1 和 value-2。

一旦secret被創(chuàng)建,可以:

通過(guò)ServiceAccount使用它自動(dòng)創(chuàng)建pod;

修改pod來(lái)使用secret;

手動(dòng)為pod綁定secret

以下是一個(gè)例子,綁定secret到一個(gè)pod的volume:

{
 "apiVersion": "v1",
 "kind": "Pod",
  "metadata": {
    "name": "mypod",
    "namespace": "myns"
  },
  "spec": {
    "containers": [{
      "name": "mypod",
      "image": "redis",
      "volumeMounts": [{
        "name": "foo",
        "mountPath": "/etc/foo",
        "readOnly": true
      }]
    }],
    "volumes": [{
      "name": "foo",
      "secret": {
        "secretName": "mysecret"
      }
    }]
  }
}

注意,必須有spec.volumes才能使用secret。
如果一個(gè)pod中有多個(gè)container,每個(gè)container需要他們多帶帶對(duì)應(yīng)的volumeMounts ,但是一個(gè)secret只能對(duì)應(yīng)一個(gè)spec.volumes。

只要需要,可以將許多文件打包進(jìn)一個(gè)secret,或者使用多個(gè)secret。

手動(dòng)指定imagePullSecret

詳細(xì)信息見(jiàn):images documentation

Details 限制

在使用之前,secret volume 資源被驗(yàn)證,以確保指定的對(duì)象引用真是指向一個(gè)secret對(duì)象。因此,在pod使用它之前必須保證需要的secret被成功創(chuàng)建。

secret api對(duì)象從屬于namespace,一個(gè)secret對(duì)象只能被同namespace的pod所使用。

單個(gè)secret限制在1Mb之內(nèi),防止過(guò)大的secret耗盡apiserver & kubelet的內(nèi)存。然而,創(chuàng)建許多類似的secret同樣也會(huì)無(wú)用的消耗掉apiserver&kubelet的內(nèi)存。

kubelet目前只支持pod使用來(lái)自于apiserver的secret。pods包括了被 kubectl創(chuàng)建的pod 或者 被replication controller間接創(chuàng)建的。

Consuming Secret Values

在一個(gè)綁定了secret的container中,會(huì)以secret keys為名的文件,其內(nèi)容為secret value的base64 decode后的內(nèi)容。下面是上述例子的輸出:

$ ls /etc/foo/
username
password
$ cat /etc/foo/username
value-1
$ cat /etc/foo/password
value-2

container中的程序可以讀取其中的文件來(lái)獲取其內(nèi)容。

Secret 與 Pod Lifetime 關(guān)系

當(dāng)通過(guò)api創(chuàng)建一個(gè)pod后,不會(huì)去檢查所引用的secret是否存在。一旦這個(gè)pod被使用,kubelet將會(huì)嘗試去獲取引用的secret的值。如果這個(gè)secret不存在,或者kubelet暫時(shí)鏈接不上apiserver,kubelet將會(huì)定期重試,并發(fā)送一個(gè)event來(lái)解釋pod沒(méi)有啟動(dòng)的原因。如果獲取到了對(duì)應(yīng)的secret,kubelet將會(huì)創(chuàng)建對(duì)應(yīng)的volume并綁定到container。

一旦kubelet創(chuàng)建了一個(gè)pod,則container使用的相關(guān)secret volume不會(huì)在改變,即使對(duì)應(yīng)的secret對(duì)象被修改。如果為了改變使用的secret,則必須刪除舊的pod,并重新創(chuàng)建一個(gè)新的pod。

User Case Use-Case: Pod with ssh keys

pod通過(guò)secret來(lái)使用ssh-key,首先得先創(chuàng)建對(duì)應(yīng)的secret:

{
  "kind": "Secret",
  "apiVersion": "v1",
  "metadata": {
    "name": "ssh-key-secret"
  },
  "data": {
    "id-rsa": "dmFsdWUtMg0KDQo=",
    "id-rsa.pub": "dmFsdWUtMQ0K"
  }
}

Note:其中secret的data數(shù)據(jù)經(jīng)過(guò)base64編碼,不包含換行符。

現(xiàn)在我們能創(chuàng)建使用這個(gè)secret的pod:

{
  "kind": "Pod",
  "apiVersion": "v1",
  "metadata": {
    "name": "secret-test-pod",
    "labels": {
      "name": "secret-test"
    }
  },
  "spec": {
    "volumes": [
      {
        "name": "secret-volume",
        "secret": {
          "secretName": "ssh-key-secret"
        }
      }
    ],
    "containers": [
      {
        "name": "ssh-test-container",
        "image": "mySshImage",
        "volumeMounts": [
          {
            "name": "secret-volume",
            "readOnly": true,
            "mountPath": "/etc/secret-volume"
          }
        ]
      }
    ]
  }
}

當(dāng)這個(gè)pod中的container運(yùn)行后,將會(huì)有如下兩個(gè)文件及對(duì)應(yīng)的內(nèi)容:

/etc/secret-volume/id-rsa.pub
/etc/secret-volume/id-rsa

現(xiàn)在container可以用這個(gè)secret數(shù)據(jù)來(lái)建立ssh連接。

Use-Case: Pods with prod / test credentials

下面的例子將會(huì)展示 一個(gè)pod使用包含prod環(huán)境證書(shū)的secret對(duì)象,另一個(gè)pod使用包含test環(huán)境證書(shū)的secret對(duì)象:

secret對(duì)象:

{
  "apiVersion": "v1",
  "kind": "List",
  "items":
  [{
    "kind": "Secret",
    "apiVersion": "v1",
    "metadata": {
      "name": "prod-db-secret"
    },
    "data": {
      "password": "dmFsdWUtMg0KDQo=",
      "username": "dmFsdWUtMQ0K"
    }
  },
  {
    "kind": "Secret",
    "apiVersion": "v1",
    "metadata": {
      "name": "test-db-secret"
    },
    "data": {
      "password": "dmFsdWUtMg0KDQo=",
      "username": "dmFsdWUtMQ0K"
    }
  }]
}

建立pods:

{
  "apiVersion": "v1",
  "kind": "List",
  "items":
  [{
    "kind": "Pod",
    "apiVersion": "v1",
    "metadata": {
      "name": "prod-db-client-pod",
      "labels": {
        "name": "prod-db-client"
      }
    },
    "spec": {
      "volumes": [
        {
          "name": "secret-volume",
          "secret": {
            "secretName": "prod-db-secret"
          }
        }
      ],
      "containers": [
        {
          "name": "db-client-container",
          "image": "myClientImage",
          "volumeMounts": [
            {
              "name": "secret-volume",
              "readOnly": true,
              "mountPath": "/etc/secret-volume"
            }
          ]
        }
      ]
    }
  },
  {
    "kind": "Pod",
    "apiVersion": "v1",
    "metadata": {
      "name": "test-db-client-pod",
      "labels": {
        "name": "test-db-client"
      }
    },
    "spec": {
      "volumes": [
        {
          "name": "secret-volume",
          "secret": {
            "secretName": "test-db-secret"
          }
        }
      ],
      "containers": [
        {
          "name": "db-client-container",
          "image": "myClientImage",
          "volumeMounts": [
            {
              "name": "secret-volume",
              "readOnly": true,
              "mountPath": "/etc/secret-volume"
            }
          ]
        }
      ]
    }
  }]
}

建立的兩個(gè)pod都擁有兩個(gè)文件:

    /etc/secret-volume/username
    /etc/secret-volume/password

可以使用service accounts來(lái)簡(jiǎn)化上述的流程,一個(gè)是prod-user對(duì)應(yīng)prod-db-secret,另一個(gè)是test-user對(duì)應(yīng)test-db-secret,如:

{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
  "name": "prod-db-client-pod",
  "labels": {
    "name": "prod-db-client"
  }
},
"spec": {
  "serviceAccount": "prod-db-client",
  "containers": [
    {
      "name": "db-client-container",
      "image": "myClientImage",
    }
  ]
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/32435.html

相關(guān)文章

  • Kubernetes持續(xù)集成:Jenkins關(guān)于java.nio.file.NoSuchFileEx

    摘要:嘗試運(yùn)行腳本發(fā)生了的錯(cuò)誤。錯(cuò)誤信息接下來(lái)就是,天的調(diào)查,關(guān)于這個(gè)錯(cuò)誤的能查到的資料幾乎沒(méi)有,也嘗試了很多方法,無(wú)果非常煎熬。問(wèn)題解決了參考文檔初試使用完成持續(xù)構(gòu)建與發(fā)布集群安全配置 背景 為了使用Kubernetes管理并自動(dòng)化部署應(yīng)用程序,領(lǐng)導(dǎo)糾結(jié)了幾個(gè)同事搭了一個(gè)Kubernetes集群環(huán)境。不過(guò),為了減少?gòu)?fù)雜度,采用了非官方推薦的方式: API Server使用http方式 不...

    tomener 評(píng)論0 收藏0
  • kubernetes安裝dashboard

    摘要:前言在安裝搭建的時(shí)候,往往會(huì)遇到各種各樣的問(wèn)題,而安裝的展示組件則是困難中的困難,本人在實(shí)際搭建中則被整整卡住了天,和百度輪番搜索,各種技術(shù)博客和技術(shù)視頻反復(fù)研究才勉強(qiáng)搭建成功開(kāi)始安裝在安裝好集群之后,確保集群各個(gè)節(jié)點(diǎn)都處于狀態(tài)的時(shí)候,就 前言 在安裝搭建k8s的時(shí)候,往往會(huì)遇到各種各樣的問(wèn)題,而安裝k8s的web展示組件kubernetes-dashboard則是困難中的困難,本人在...

    Guakin_Huang 評(píng)論0 收藏0
  • kubernetes安裝dashboard

    摘要:前言在安裝搭建的時(shí)候,往往會(huì)遇到各種各樣的問(wèn)題,而安裝的展示組件則是困難中的困難,本人在實(shí)際搭建中則被整整卡住了天,和百度輪番搜索,各種技術(shù)博客和技術(shù)視頻反復(fù)研究才勉強(qiáng)搭建成功開(kāi)始安裝在安裝好集群之后,確保集群各個(gè)節(jié)點(diǎn)都處于狀態(tài)的時(shí)候,就 前言 在安裝搭建k8s的時(shí)候,往往會(huì)遇到各種各樣的問(wèn)題,而安裝k8s的web展示組件kubernetes-dashboard則是困難中的困難,本人在...

    darryrzhong 評(píng)論0 收藏0
  • Kubernetes之dashboard 2.x 部署

    摘要:開(kāi)始部署項(xiàng)目地址創(chuàng)建證書(shū)創(chuàng)建命名空間創(chuàng)建文件證書(shū)請(qǐng)求自簽證書(shū),指定證書(shū)的有效期天數(shù)。賦權(quán),并復(fù)制,并登錄換成你環(huán)境的即可 開(kāi)始部署Gitlab 項(xiàng)目地址:https://github.com/kubernetes/dashboard1) 創(chuàng)建證書(shū):mkdir dashboard-certscd dashboard-cert...

    番茄西紅柿 評(píng)論0 收藏2637
  • 【容器云 UK8S】最佳實(shí)踐:權(quán)限管理之了解RBAC和權(quán)限管理實(shí)踐

    摘要:本文介紹了模型中四個(gè)最主要的對(duì)象,即,大致了解了的工作原理和使用方法,如果要更加深入地了解和掌握,可以查看官方文檔。只是這個(gè)不能復(fù)用到其他,一般只有在做精細(xì)化權(quán)限管理的時(shí)候,我們才會(huì)創(chuàng)建對(duì)象,比如一個(gè)只能查看名稱為的。了解RBAC簡(jiǎn)介RBAC是一種基于角色來(lái)管理對(duì)計(jì)算機(jī)或網(wǎng)絡(luò)資源訪問(wèn)策略的方法。我們知道,對(duì)K8S內(nèi)所有API對(duì)象的操作都是通過(guò)訪問(wèn)kube-apiserver來(lái)完成的,因此ku...

    Tecode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<