【问题标题】:How to automatically configure Kubernetes port forwarding with Helm Charts?如何使用 Helm Charts 自动配置 Kubernetes 端口转发?
【发布时间】:2019-10-26 08:55:28
【问题描述】:

使用 Helm,如何配置 Helm Chart 以自动包含端口转发?

到目前为止我看到的文档表明我创建了一个 Helm 图表,我运行...

helm install myhelmchart

...然后手动转发端口...

  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=myhelmchart,app.kubernetes.io/instance=pouring-rat" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl port-forward $POD_NAME 8080:80

【问题讨论】:

  • 也许我错误地假设在 docker 容器中看到的端口转发是应该如何工作的。经过进一步调查,我发现了入口配置的概念,它据称允许 SSL 入口点,该入口点重定向到非 SSL 服务......嗯......kubernetes.io/docs/concepts/services-networking/ingress

标签: kubernetes kubernetes-helm kubernetes-pod


【解决方案1】:

定义一个job,在helm install期间在lifecycle中的某个点执行。 available hooks list 还包含您可能正在寻找的 post-install 钩子。 example 可以在官方文档中找到。

您基本上提供了一个 Kubernetes 作业,添加必要的 helm 标签,然后还添加如下注释:

apiVersion: ...
kind: ....
metadata:
  annotations:
    "helm.sh/hook": post-install

重要提示:

  • 此作业必须使用安装了 kubectl 的容器 (check this example)

  • 这个工作应该看起来like this sample

  • 服务帐户与此作业相关联,以便有效地运行kubectl port-forward

另一个通用答案:https://stackoverflow.com/a/55078187/747579

【讨论】:

  • 感谢@Abdennour - 这意味着模板中有操作顺序。我应该在 Chart.yaml 中应用它吗?
  • 尤帕@barrypicker
【解决方案2】:

你不能:Helm 的操作仅限于使用它的模板语言来渲染一组 YAML 文件,并将它们提交给 Kubernetes 服务器。它只适用于kubectl applykubectl delete

不过,您可能会发现一个有用的技巧是,kubectl port-forward 可以在 kubectl 1.10 中获取除 pod 名称之外的其他内容(这是客户端中的功能,如果您有一个非常旧的集群,您只需要一个足够新的客户端)。它将为您查找适当的 pod 名称。所以你可以

kubectl port-forward service/pouring-rat-nginx 8080:80

我发现kubectl port-forward 可以很好地用于轻量级测试和调试,并且“如果我发送curl 请求,它会按照我想要的方式运行”。它还做一些空闲时间后例行关闭之类的事情,并且由于它是通过 HTTP 建立 TCP 隧道,所以它不是最快的事情。设置 LoadBalancer 类型的服务将是设置从集群外部访问的更好方法。诸如服务类型之类的旋钮以及控制负载均衡器所需的任何注释都是通过 Helm 值公开的好东西。

【讨论】:

    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 2020-04-01
    • 2019-03-25
    • 2021-10-24
    • 2021-12-14
    • 2021-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多