小编lex*_*ler的帖子

如何使用 kubectl 在部署中修补容器环境变量?

当我想提取某个容器环境变量的当前值时,我可以使用 jsonpath 语法如下:

kubectl get pods -l component='somelabel' -n somenamespace -o \
jsonpath='{.items[*].spec.containers[*].env[?(@.name=="SOME_ENV_VARIABLE")].value}')
Run Code Online (Sandbox Code Playgroud)

这将返回名称为 env varialbe 的值SOME_ENV_VARIABLE。带有 json 容器环境变量的 Pod 部分将如下所示:

            "spec": {
                "containers": [
                    {
                        "env": [
                            {
                                "name": "SOME_ENV_VARIABLE",
                                "value": "some_value"
                            },
                            {
                                "name": "ANOTHER_ENV_VARIABLE",
                                "value": "another_value"
                            }
                        ],
Run Code Online (Sandbox Code Playgroud)

当我想在部署中修补某些值时,我使用的命令的语法如下:

kubectl -n kube-system patch svc kubernetes-dashboard --type='json' -p="[{'op': 'replace', 'path': '/spec/ports/0/nodePort', 'value': $PORT}]"
Run Code Online (Sandbox Code Playgroud)

但是,'op': 'replace'在需要使用表达式的情况下,如何修补变量env[?(@.name=="SOME_ENV_VARIABLE")]?我应该使用哪种语法?

json jsonpath kubernetes kubectl

5
推荐指数
1
解决办法
2875
查看次数

将python项目打包为多个目录

我需要一些有关使用setuptoolsfind_packages功能的解释。\n我有一个这样的项目结构:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project_dir_1\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 my_project\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cli.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subdir1\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 conf\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 params\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config.yml\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subdir2\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 version.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project_dir_2\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80  subdir1\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module.py\n\xe2\x94\x82   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_main.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

实际上,我的所有代码都在该my_project目录中,而且我还有两个附加目录project_dir_1project_dir_2其中包含必要的外部模块,我应该在包代码和另一个项目代码中导入这些模块,该包将安装在 venv 中。 \n我有安装脚本像这样:

\n\n
setup(\n    name=\'my_project\',\n    version=\'0.0.1\',\n    description=\'Python …
Run Code Online (Sandbox Code Playgroud)

python packaging project-structure setuptools setup.py

5
推荐指数
1
解决办法
2263
查看次数