小编Nic*_*hey的帖子

Kubernetes的动态通配符子域入口

我目前正在GKE上使用Kubernetes,使用Ingress资源在不同的子域上为我的产品的各个部分提供服务.例如:api.mydomain.com,console.mydomain.com,等.

ingress.yml(当前):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: api.mydomain.com
    http:
      paths:
        - backend:
            serviceName: api-service
            servicePort: 80
  - host: console.mydomain.com
    http:
      paths:
        - backend:
            serviceName: console-service
            servicePort: 80
Run Code Online (Sandbox Code Playgroud)

这非常有效,L7 GCE负载均衡器路由到适当的位置.但是,我想要做的是将许多功能分支部署部署为子域,以便在推送到生产之前测试和演示新功能.这些可能类似于new-stylesheet.console.mydomain.comupgraded-algorithm.api.mydomain.com受GitLab CI 环境的启发.

这是每个部署的潜在工作流程:

  1. 创建feature-api-deployment.yml
  2. 创建feature-api-service.yml
  3. 使用新的子域规则更新ingress.yml:feature.api.mydomain.com指定serviceName: feature-api-service

但枚举和维护所有子域 - >服务映射将会因拆除部署而变得混乱,并创建大量的GCE后端(默认配额为5 ......),因此它并不理想.

Kubernetes是否有任何内置的东西可供我处理?像这样的东西是理想的选择基于匹配的子域的目标服务:

ingress.yml(通缉)

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
spec:
  rules:
  - host: *.api.mydomain.com
    http:
      paths:
        - backend:
            serviceName: {value of …
Run Code Online (Sandbox Code Playgroud)

networking load-balancing kubernetes google-kubernetes-engine

16
推荐指数
1
解决办法
6961
查看次数

防止 PyCharm 覆盖远程 Docker 解释器中的 PYTHONPATH

我在 PyCharm 2019.2 中设置了一个远程 Docker 解释器,我可以在其中连接并运行一个简单的 Python 脚本。但是,我尝试使用的 Docker 映像 ( ros:kinetic-ros-base)$PYTHONPATH在其入口点中进行了一些修改,PyCharm 似乎会忽略/覆盖这些修改。

$PYTHONPATH我可以通过直接从 Docker 容器打印变量来演示这一点:

$ docker run -it ros:kinetic-ros-base python
>>> import os
>>> os.environ['PYTHONPATH']
'/opt/ros/kinetic/lib/python2.7/dist-packages'
Run Code Online (Sandbox Code Playgroud)

或者使用 PyCharm 通过远程 Docker 解释器运行脚本,使用相同的ros:kinetic-ros-base图像:

import os
print(os.environ['PYTHONPATH'])
Run Code Online (Sandbox Code Playgroud)
/opt/project:/opt/.pycharm_helpers/pycharm_matplotlib_backend:/opt/.pycharm_helpers/pycharm_display
Run Code Online (Sandbox Code Playgroud)

$PYTHONPATH显然,PyCharm在容器的入口点脚本运行后替换了该变量。

我可以通过添加/opt/ros/kinetic/lib/python2.7/dist-packages到运行配置的环境变量来解决这个问题Edit Configurations...,但是依赖容器的 PYTHONPATH 的代码检查无法解析。该行import rospy给出了 IDE 错误No module named rospy,尽管它会运行得很好(显然,在这种情况下,PYTHONPATH 仅在运行时设置)。

有什么办法吗

  1. 让 PyC​​harm 尊重 Docker 映像的 ENTRYPOINT 脚本中对 PYTHONPATH 所做的更改,或者
  2. 获取集成代码编辑器检查以在运行配置中使用手动定义的 PYTHONPATH 环境变量?

python pycharm docker

6
推荐指数
0
解决办法
368
查看次数