我在kubernetes集群中设置了一个freeradius容器。默认情况下,freeradius不以纯文本记录身份验证尝试或密码,但是,如果服务是以"-X“arg (调试模式)启动的,它将重写默认配置并将所有内容记录到STDOUT。我尝试在部署文件中不指定arg,但是容器在启动时崩溃。
是否有一种方法可以在容器中运行freeradius,使其不首先创建这些日志,或者配置部署,以便无法访问这些日志?
发布于 2019-03-11 14:50:39
好吧,原来实现我的目标有一种完全不同的方式,与我预期的完全不同。通过为/var/run/freeradius和/var/log/freeradius创建EmptyDir卷挂载,使这些目录可以写(不确定为什么/var/run/freeradius在调试模式下不需要写),我就能够让freeradius容器在没有调试模式的情况下启动,然后命令有以下行:
command: ["/bin/bash","-c","freeradius && tail -F /var/log/freeradius/radius.log"]
基本上,这样做的目的是启动freeradius,然后实时地将日志读取到STDOUT,并在将新行写入日志文件时进行更新。
发布于 2019-03-08 15:54:22
如果您将日志作为荚的子资源,您可以使用RBAC角色来管理它。
若要将此表示为RBAC角色,请使用斜杠分隔资源和子资源。为了让研究对象同时阅读豆荚和荚日志,您可以这样写:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default
name: pod-logs-reader
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]因此,要限制对pod日志的访问,只需将"pods/log“包含到资源列表中即可。
另外,请记住,在kubernetes RBAC中,规则是完全可加的,所以您需要列出所有可访问的资源,否则您也无法访问它们。
创建角色时,需要将其链接到RoleBinding中的用户或服务帐户
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pod-logs-reader-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-logs-reader
subjects:
- kind: User
name: "john_calder@dude.com"
apiGroup: rbac.authorization.k8s.iohttps://serverfault.com/questions/957351
复制相似问题