我一直在阅读如何在kubernetes here中设置审计,这基本上说为了启用审计,我必须在启动时通过使用标志为kube-apiserver指定yaml策略文件--audit-policy-file
。
现在,有两件事我不明白如何实现这个目标:
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启动命令运行时它在文件系统中可用?谢谢!
答案 0 :(得分:1)
添加/更新运行kube-apiserver的命令的启动参数的正确方法是什么?
在我看到kubernetes集群部署的99%的方式中,节点上的kubelet
二进制文件读取主机文件系统上/etc/kubernetes/manifests
中的kubernetes描述符,并运行其中描述的Pod。因此,第一个问题的答案是编辑 - 或导致您使用的配置管理工具更新 - 文件/etc/kubernetes/manifests/kube-apiserver.yaml
(或者希望是一个非常类似命名的文件)。如果您有多个主节点,则需要为所有主节点重复该过程。在大多数情况下,kubelet
二进制文件将看到对清单文件的更改,并将自动重新启动apiserver的Pod,但在最坏的情况下,可能需要重新启动kubelet
。< / p>
请务必观察新启动的apiserver的docker容器的输出以检查错误,并在确认其正常工作后,将该更改滚动到其他apiserver清单文件。
如何在之后引用此文件,因此当kube-apiserver启动命令运行时,它在文件系统中可用?
大致相同的答案:通过ssh或任何机上配置管理工具。这个唯一的星号是,由于apisever的清单文件是一个普通的Pod
声明,人们希望注意volume:
和volumeMount:
s就像你想要的那样其他群集内Pod
。如果您的audit-policy.yaml
位于/etc/kubernetes
之内或之下,那么这可能会很好,因为该目录已经被卷装入Pod(再次:大部分时间)。它写出了很可能需要更改的审核日志文件,因为与配置的其余部分不同,日志文件路径不能是readOnly: true
,因此至少需要第二个volumeMount
而不需要{{1}可能需要第二个readOnly: true
才能使日志目录显示在Pod中。
我实际上还没有尝试使用volume: hostPath:
作为apiserver本身,因为这是非常元的。但是,在多主设置中,我不知道它是不可能。请小心谨慎,因为在这种自我引用的设置中,很容易使所有主机都配置错误,因为他们无法与自己通信以阅读更新的配置。