我一直在阅读有关如何在kubernetes here中设置审核的信息,该审核基本上说:为了启用审核,我必须在启动时通过使用--audit-policy-file
标志为kube-apiserver指定一个yaml策略文件。
现在,关于如何实现这一点,我不了解两件事:
kops edit cluster
:https://github.com/kubernetes/kops/blob/master/docs/cluster_spec.md#kubeapiserver。令人惊讶的是,kubernetes并未为此创建部署,我应该自己创建它吗? --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/