【问题标题】:WSO2 API Manager Dockerfile userid number for Kubernetes/OpenshiftKubernetes/Openshift 的 WSO2 API Manager Dockerfile 用户 ID 号
【发布时间】:2022-01-31 17:17:57
【问题描述】:

我正在尝试使用为 kubernetes/openshift 提供的部署图表在 openshift 上进行部署。但是我对 WSO2 的原始图像中包含的用户 ID 有疑问。我没有 openshift 集群的集群管理员权限,因此无法修改 SCC 策略。

在 WSO2 API Manager 的 Dockerfile 中,用户 ID 是通过 ARG 包含的,因此一旦构建了此映像,就无法修改此用户 ID 号。可以在这里查看:https://github.com/wso2/docker-apim/blob/v4.0.0.1/dockerfiles/ubuntu/apim/Dockerfile

# set Docker image build arguments
# build arguments for user/group configurations
ARG USER=wso2carbon
ARG USER_ID=802
ARG USER_GROUP=wso2
ARG USER_GROUP_ID=802

在 WSO2 提供的 kubernetes 部署工件中,可以在此处查看 https://github.com/wso2/kubernetes-apim/blob/master/simple/am-single/templates/am/instance/wso2am-deployment.yaml,他们在该部分中使用此用户 ID:

securityContext:
    runAsUser: 802

但是当我在 openshift 集群上部署它时,我收到以下错误:

Forbidden: not usable by user or serviceaccount, spec.containers[0].securityContext.runAsUser: Invalid value: 802: must be in the ranges: [1015490000, 1015499999]

基本上说我不能使用低于 1015490000 的用户 ID,在本例中为 802,但我不知道如何在不从 WSO2 构建自己的 Dockerfile 的情况下覆盖此用户 ID,因为每次更新或更改原始图像我将不得不构建它似乎不是解决这个问题的最佳方法。

如果有人可以帮我解决这个问题。

【问题讨论】:

    标签: docker kubernetes wso2 kubernetes-helm wso2-am


    【解决方案1】:

    您可以执行以下操作。

    1. 从 dockerfile 中删除用户 - https://github.com/wso2/docker-apim/blob/master/dockerfiles/ubuntu/apim/Dockerfile#L76
    2. 为用户目录(${USER_HOME})设置权限

    运行 chgrp -R 0 /some/directory && chmod -R g=u /some/directory

    【讨论】:

    • 感谢您的回答,但我不想自己修改或重建来自 WSO2 的原始图像。我想使用带有来自 WSO2 的 FROM 图像或来自 Kubernetes 部署配置的任何其他内容的图像包装器来完成此操作
    • 其他选项是使用 SCC - gist.github.com/renuka-fernando/…
    • SCC的问题是你必须是clusteradmin,我没有这个管理员权限,所以我不能应用这些SCC策略
    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多