如何在 kube-apiserver 中设置审计策略?



我一直在阅读有关如何在 kubernetes 中设置审计的信息,这基本上是说为了启用审计,我必须在启动时使用 kube-apiserver 指定一个 yaml 策略文件,通过使用标志--audit-policy-file

现在,关于如何实现这一目标,有两件事我不明白:

  1. 添加/更新运行 kube-apiserver 的命令的启动参数的正确方法是什么?我无法更新容器,因此是否需要以某种方式克隆容器?或者我应该按照这里的建议使用kops edit cluster:https://github.com/kubernetes/kops/blob/master/docs/cluster_spec.md#kubeapiserver。令人惊讶的是,kubernetes 没有为此创建部署,我应该自己创建吗?
  2. 特别是要设置审核,我必须传递一个yaml文件作为启动参数。如何上传/提供此yaml文件以进行--audit-policy-file=/some/path/my-audit-file.yaml。我是否使用它和/或卷创建配置映射?之后我该如何引用这个文件,以便在 kube-apiserver 启动命令运行时它在文件系统中可用?

谢谢!

添加/更新运行 kube-apiserver 的命令的启动参数的正确方法是什么?

在我看到的 99% 的 kubernetes 集群部署方式中,节点上的kubelet二进制文件读取主机文件系统上/etc/kubernetes/manifests的 kubernetes 描述符,并运行其中描述的 Pod。因此,第一个问题的答案是编辑 - 或导致您正在使用的配置管理工具更新 - 文件/etc/kubernetes/manifests/kube-apiserver.yaml(或者希望是一个非常相似的名称文件)。如果您有多个主节点,则需要对所有主节点重复该过程。在大多数情况下kubelet二进制文件将看到对清单文件的更改,并将自动重新启动 apiserver 的 Pod,但在最坏的情况下,可能需要重新启动kubelet

请务必观察新启动的 apiserver 的 docker 容器的输出以检查错误,并且仅在确认其正常工作后才将该更改汇总到其他 apiserver 清单文件。

之后我该如何引用这个文件,以便在 kube-apiserver 启动命令运行时它在文件系统中可用?

大致相同的答案:通过 ssh 或任何机上配置管理工具。唯一的星号是,由于apisever的清单文件是正常的Pod声明,因此需要注意volume:volumeMount:,就像处理任何其他集群内Pod一样。如果您的audit-policy.yaml位于/etc/kubernetes中或下方,这可能没问题,因为该目录已经卷挂载到 Pod 中(再次:大多数时候)。它写出很可能需要更改的审计日志文件,因为与配置的其余部分不同,日志文件路径无法readOnly: true,因此至少需要没有readOnly: true的第二个volumeMount,并且可能需要第二个volume: hostPath:才能使日志目录在 Pod 中可见。

我实际上还没有尝试对 apiserver 本身使用ConfigMap,因为这是非常元的。但是,在多主设置中,我也不知道这是不可能的。只是要小心,因为在这样的自我引用设置中,很容易关闭所有配置错误的主节点,因为它们无法与自己通信以读取更新的配置。

Kubelet 持续监控/etc/kubernetes/manifests中静态 pod 定义的更改。没有与 kube-apiserver 配置关联的部署,也不直接修改 pod 定义。

  1. 包括审核策略文件--audit-policy-file=/some/path/my-audit-file.yaml参数,最好是审核日志--audit-log-path=/var/log/apiserver-audit.log/etc/kubernetes/manifests/kube-apiserver.yaml
  2. 包括用于audit-log-pathaudit-policy-file的卷装载。 例如:
volumeMounts:
- mountPath: /some/path/my-audit-file.yaml
name: audit 
readOnly: true
- mountPath: /var/log/apiserver-audit.log 
name: audit-log 
readOnly: false 
...
volumes:
- hostPath:
path: /some/path/my-audit-file.yaml
type: File 
name: audit 
- hostPath:
path: /var/log/apiserver-audit.log 
type: FileOrCreate 
name: audit-log
...

不挂载卷可能会导致错误 - 当您尝试运行任何 kubectl 命令时 -The connection to the server xxxx:yyyy was refused - did you specify the right host or port?

相关内容

  • 没有找到相关文章

最新更新