<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Kyverno - Kubernetes 原生策略管理引擎

          共 2949字,需瀏覽 6分鐘

           ·

          2020-10-15 20:56

          Kyverno[1] 是一個(gè)為 Kubernetes 打造的策略管理引擎:

          • 策略作為 Kubernetes 資源
          • validate、mutate 或者生成任何資源
          • 使用標(biāo)簽選擇器和通配符匹配資源
          • 在不同的命名空間中生成和同步默認(rèn)值
          • 攔截或報(bào)告違規(guī)行為
          • 使用 kubectl 進(jìn)行測(cè)試

          注意:你的 Kubernetes 集群版本必須高于 v1.14,它增加了 webhook 超時(shí)。

          直接使用下面的命令即可安裝 Kyverno:

          kubectl?create?-f?[https://raw.githubusercontent.com/kyverno/kyverno/master/definitions/release/install.yaml](https://raw.githubusercontent.com/kyverno/kyverno/master/definitions/release/install.yaml?"https://raw.githubusercontent.com/kyverno/kyverno/master/definitions/release/install.yaml")

          當(dāng)然我們也可以使用 Helm Chart 來快速安裝 kyverno。

          然后添加下面的策略,它包含一個(gè)驗(yàn)證規(guī)則,要求所有的 pod 都有一個(gè) app.kubernetes.io/name 標(biāo)簽,Kyverno 支持不同的規(guī)則類型來 validate、mutate 和生成配置,策略屬性 validationFailureAction 被設(shè)置為強(qiáng)制執(zhí)行,以阻止不合規(guī)的 API 請(qǐng)求(使用默認(rèn)值 audit 會(huì)報(bào)告違規(guī)行為,但不會(huì)阻止請(qǐng)求)。

          apiVersion:?kyverno.io/v1
          kind:?ClusterPolicy
          metadata:
          ??name:?require-labels
          spec:
          ??validationFailureAction:?enforce
          ??rules:
          ??-?name:?check-for-labels
          ????match:
          ??????resources:
          ????????kinds:
          ????????-?Pod
          ????validate:
          ??????message:?"label?`app.kubernetes.io/name`?is?required"
          ??????pattern:
          ????????metadata:
          ??????????labels:
          ????????????app.kubernetes.io/name:?"?*"

          創(chuàng)建了上面的策略資源后,我們可以嘗試創(chuàng)建一個(gè)不帶有上面指定標(biāo)簽的應(yīng)用:

          kubectl?create?deployment?nginx?--image=nginx

          我們會(huì)看到如下所示的一些錯(cuò)誤提示信息:

          Error?from?server:?admission?webhook?"nirmata.kyverno.resource.validating-webhook"?denied?the?request:

          resource?Deployment/default/nginx?was?blocked?due?to?the?following?policies

          require-labels:
          ??autogen-check-for-labels:?'Validation?error:?label?`app.kubernetes.io/name`?is?required;
          ????Validation?rule?autogen-check-for-labels?failed?at?path?/spec/template/metadata/labels/app.kubernetes.io/name/'

          如果我們創(chuàng)建一個(gè)帶有所需要標(biāo)簽的 Pod,則可以正常創(chuàng)建,比如下面的資源清單:

          kind:?"Pod"
          apiVersion:?"v1"
          metadata:
          ??name:?nginx
          ??labels:
          ????app.kubernetes.io/name:?nginx
          spec:
          ??containers:
          ??-?name:?"nginx"
          ????image:?"nginx:latest"

          因?yàn)檫@個(gè) Pod 符合我們定義的策略規(guī)則,所以不會(huì)被攔截。

          可以通過刪除所有的集群策略來進(jìn)行清理:

          kubectl?delete?cpol?--all

          接下來我們可以通過查看策略示例[2]來學(xué)習(xí)如何編寫策略規(guī)則[3],此外我們還可以使用 Kyverno CLI[4] 工具來測(cè)試定義的策略。

          當(dāng)然在 Kubernetes 社區(qū)中還有很多類似的策略管理引擎可以作為 Kyverno 的替代品:

          • Open Policy Agent:開放策略代理(OPA)[5]是一個(gè)通用的策略引擎,可以作為 Kubernetes 準(zhǔn)入控制器使用,它支持大量的使用案例,策略使用一種自定義查詢語言 Rego[6] 來編寫。
          • K-rail:k-rail[7] 為安全和多租戶提供了一些現(xiàn)成的策略,這些策略是用 Golang 編寫的,Kyverno 的一些示例策略就是受到了 k-rail 策略的啟發(fā)。
          • Polaris:Polaris[8] 驗(yàn)證配置的最佳實(shí)踐,它包括健康、網(wǎng)絡(luò)、安全等多個(gè)檢查,檢查可以分配一個(gè) severity(嚴(yán)重性),Dashboard 會(huì)報(bào)告一個(gè)總體分?jǐn)?shù)。

          關(guān)注微信公眾帳號(hào),后臺(tái)回復(fù) kyverno 獲取 kyverno 介紹 PPT。

          參考資料

          [1]

          Kyverno: https://kyverno.io/

          [2]

          策略示例: https://github.com/kyverno/kyverno/blob/master/samples/README.md

          [3]

          編寫策略規(guī)則: https://github.com/kyverno/kyverno/blob/master/documentation/writing-policies.md

          [4]

          Kyverno CLI: https://github.com/kyverno/kyverno/blob/master/documentation/kyverno-cli.md

          [5]

          開放策略代理(OPA): https://www.openpolicyagent.org/

          [6]

          Rego: https://www.openpolicyagent.org/docs/latest/how-do-i-write-policies#what-is-rego

          [7]

          k-rail: https://github.com/cruise-automation/k-rail/

          [8]

          Polaris: https://github.com/reactiveops/polaris





          K8S進(jìn)階訓(xùn)練營(yíng),點(diǎn)擊下方圖片了解詳情


          瀏覽 69
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国成人一级电影 | 久久看片 | 2021高清无码 | 伦理精品一区二区三精品 | 在线观看视频A片 |