如何使用Helm Charts自动配置Kubernetes端口转发?

4

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

到目前为止,我看到的文档表明我需要创建一个Helm chart,然后运行...

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服务... 嗯嗯嗯.... https://kubernetes.io/docs/concepts/services-networking/ingress/ - barrypicker
2个回答

4
您不能:Helm 的操作仅限于使用其模板语言来渲染一些 YAML 文件,并将它们提交到 Kubernetes 服务器。它只能执行 `kubectl apply` 和 `kubectl delete` 命令。
不过,您可能会发现一个有用的技巧是,在 kubectl 1.10 版本中,kubectl port-forward 命令可以接受除 Pod 名称以外的其他参数(如果您的集群版本太旧,则需要一个足够新的客户端)。它会为您查找适当的 Pod 名称。因此,您可以…
kubectl port-forward service/pouring-rat-nginx 8080:80

我发现kubectl port-forward在轻量级测试和调试以及“如果我发送一个curl请求,它是否按照我想要的方式运行”方面效果很好。它还会定期在一段空闲时间后关闭,并且由于它正在通过HTTP隧道传输TCP,因此速度不是最快的。设置LoadBalancer类型的服务将是从集群外部设置访问的更好方法。像服务类型和任何注释一样,您需要通过Helm值公开控制负载均衡器的旋钮。


2
定义一个在生命周期某个时刻执行的job,该作业在helm install期间执行。可用钩子列表中还包含您可能正在寻找的post-install钩子。在官方文档中可以找到一个示例
您基本上提供了一个Kubernetes Job,添加必要的helm标签,然后还有一个类似于这样的注释:
apiVersion: ...
kind: ....
metadata:
  annotations:
    "helm.sh/hook": post-install

重要提示:
  • 此作业必须使用已安装 kubectl 的容器 (请查看此示例)

  • 此作业应该看起来 像这个样本

  • 为了有效运行 kubectl port-forward,一个服务账户与此作业相关联。


另一个一般性的答案:https://stackoverflow.com/a/55078187/747579

谢谢@Abdennour - 这意味着模板中有操作顺序。我应该在Chart.yaml中应用它吗? - barrypicker
Yuppa @barrypicker - Abdennour TOUMI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接