gpt4 book ai didi

kubernetes - 使用 runAsUser 时让 git 在 kubernetes 容器中工作

转载 作者:行者123 更新时间:2023-12-02 12:09:36 27 4
gpt4 key购买 nike

我想运行 git作为 initContainer 的一部分在 Kubernetes pod 中。我还希望容器以任意非 root 用户身份运行。有没有办法做到这一点?
问题是,如果我在 pod 描述中包含这样的内容:

securityContext:
runAsUser: 1234
然后 git会像这样失败:
No user exists for uid 1234
fatal: Could not read from remote repository.
错误来自 ssh .显而易见的解决方法是通过 https:// 进行克隆。 url 而不是使用 ssh ,但我依靠部署 key 对远程存储库进行只读访问。
我无法将用户烘焙到图像中,因为直到运行时我才知道用户 ID 是什么。
我无法将用户添加到 /etc/passwd在运行时,因为容器以非 root 用户身份运行。
其他人是如何处理这种情况的?
如果有人问:
$ kubectl version
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.9+k3s1", GitCommit:"630bebf94b9dce6b8cd3d402644ed023b3af8f90", GitTreeState:"clean", BuildDate:"2020-09-17T19:05:07Z", GoVersion:"go1.13.15", Compiler:"gc", Platform:"linux/amd64"}

最佳答案

您可以在容器级别而不是 pod 级别使用 securityContext。

apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
initContainers:
- name: sec-ctx-in-init
image: busybox
securityContext:
runAsUser: 2000
command: ['sh', '-c', 'id']
containers:
- name: sec-ctx-in-container
image: gcr.io/google-samples/node-hello:1.0
securityContext:
runAsUser: 3000
allowPrivilegeEscalation: false
创建 pod(我使用 katacoda)后,您可以运行:
master $ kubectl logs security-context-demo -c sec-ctx-in-init
uid=2000 gid=0(root)
master $ kubectl exec -it security-context-demo -c sec-ctx-in-container -- id
uid=3000 gid=0(root) groups=0(root)
通知 : 如果你实际上是在容器和 initcontainer 之间共享文件,你需要指定相同的 fsGroup在 pod 级别 securitycontext。

关于kubernetes - 使用 runAsUser 时让 git 在 kubernetes 容器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64297378/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com