<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Auth :: Ay Docs</title>
    <link>https://ops.docs.72602.space/installation/auth/index.html</link>
    <description>Deploy GateKeeper Server</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 12 Mar 2024 15:00:59 +0800</lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/installation/auth/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Deploy GateKeeper Server</title>
      <link>https://ops.docs.72602.space/installation/auth/gatekeeper/index.html</link>
      <pubDate>Tue, 12 Mar 2024 15:00:59 +0800</pubDate>
      <guid>https://ops.docs.72602.space/installation/auth/gatekeeper/index.html</guid>
      <description>Official Website: https://open-policy-agent.github.io/gatekeeper/website/&#xA;Preliminary Kubernetes 版本必须大于 v1.16 Components Gatekeeper 是基于 Open Policy Agent（OPA） 构建的 Kubernetes 准入控制器，它允许用户定义和实施自定义策略，以控制 Kubernetes 集群中资源的创建、更新和删除操作&#xA;核心组件 约束模板（Constraint Templates）：定义策略的规则逻辑，使用 Rego 语言编写。它是策略的抽象模板，可以被多个约束实例(Constraint Instance)复用。 约束实例（Constraints Instance）：基于约束模板创建的具体策略实例，指定了具体的参数和匹配规则，用于定义哪些资源需要应用该策略。 准入控制器（Admission Controller）(无需修改)：拦截 Kubernetes API Server 的请求，根据定义的约束对请求进行评估，如果请求违反了任何约束，则拒绝该请求。 核心Pod角色 gatekeeper-audit 定期合规检查：该组件会按照预设的时间间隔，对集群中已存在的所有资源进行全面扫描，以检查它们是否符合所定义的约束规则。(周期性，批量检查) 生成审计报告：在完成资源扫描后，gatekeeper-audit 会生成详细的审计报告，其中会明确指出哪些资源违反了哪些约束规则，方便管理员及时了解集群的合规状态。 gatekeeper-controller-manager 实时准入控制：作为准入控制器，gatekeeper-controller-manager 在资源创建、更新或删除操作发起时，会实时拦截这些请求。它会依据预定义的约束模板和约束规则，对请求中的资源进行即时评估。（实时性，事件驱动） 处理决策请求：根据评估结果，如果请求中的资源符合所有约束规则，gatekeeper-controller-manager 会允许该请求继续执行;若违反了任何规则，它会拒绝该请求，避免违规资源进入集群。 Features 约束管理&#xA;自定义约束模板：用户可以使用 Rego 语言编写自定义的约束模板，实现各种复杂的策略逻辑。&#xA;例如，可以定义策略要求所有的命名空间 NameSpace 必须设置特定的标签，或者限制某些命名空间只能使用特定的镜像。 查看已存在的约束模板和实例 ```shell kubectl get constrainttemplates kubectl get constraints ``` ```shell kubectl apply -f - &lt;&lt;EOF apiVersion: templates.gatekeeper.sh/v1 kind: ConstraintTemplate metadata: name: k8srequiredlabels spec: crd: spec: names: kind: K8sRequiredLabels validation: openAPIV3Schema: type: object properties: labels: type: array items: type: string targets: - target: admission.k8s.gatekeeper.sh rego: | package k8srequiredlabels violation[{&#34;msg&#34;: msg, &#34;details&#34;: {&#34;missing_labels&#34;: missing}}] { provided := {label | input.review.object.metadata.labels[label]} required := {label | label := input.parameters.labels[_]} missing := required - provided count(missing) &gt; 0 msg := sprintf(&#34;you must provide labels: %v&#34;, [missing]) } EOF ```</description>
    </item>
  </channel>
</rss>