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

现在,关于如何实现这一点,我不了解两件事:

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

  • 谢谢!

    最佳答案



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

    确保观看新启动的apiserver的docker容器的输出以检查错误,并在确认其正常工作后才将更改滚动到其他apiserver list 文件中。



    大致相同的答案:通过ssh或任何机器上的配置管理工具。唯一的星号是由于apisever的 list 文件是一个普通的Pod声明,因此希望像其他任何集群内volume:一样注意volumeMount:Pod。如果您的audit-policy.yaml位于/etc/kubernetes之中或之下,则可能会很好,因为该目录已被卷挂载到Pod中(再次:多数情况下)。它正在写出最有可能需要更改的审核日志文件,因为与配置的其余部分不同,日志文件路径不能为readOnly: true,因此至少需要第二个volumeMount而没有readOnly: true,并且可能需要第二个volume: hostPath:才能进行在Pod中可见的日志目录。

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

    关于kubernetes - 如何在kube-apiserver中设置审核策略?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49699182/

    10-11 07:15