如何使用 Helm Charts 自动配置 Kubernetes 端口转发?
How to automatically configure Kubernetes port forwarding with Helm Charts?
使用 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
定义一个job
,在lifecycle during helm install
. The available hooks list also contains a post-install
hook you are probably looking for. An example的某个点执行,可以参考官方文档
你基本上提供了一个 Kubernetes 作业,添加了必要的 helm 标签,然后还有一个像这样的注释:
apiVersion: ...
kind: ....
metadata:
annotations:
"helm.sh/hook": post-install
重要提示:
此作业必须使用安装了 kubectl 的容器 (check this example)
这份工作应该看起来like this sample
- 为了 运行
kubectl port-forward
有效,已将服务帐户关联到此作业。
另一个通用答案:
你不能:Helm 的操作仅限于使用其模板语言渲染一些 YAML 文件集,并将它们提交给 Kubernetes 服务器。它只做 kubectl apply
和 kubectl 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-type 服务是设置从集群外部访问的更好方法。诸如服务类型之类的旋钮和控制负载均衡器所需的任何注释都是通过 Helm 值公开的好东西。
使用 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
定义一个job
,在lifecycle during helm install
. The available hooks list also contains a post-install
hook you are probably looking for. An example的某个点执行,可以参考官方文档
你基本上提供了一个 Kubernetes 作业,添加了必要的 helm 标签,然后还有一个像这样的注释:
apiVersion: ...
kind: ....
metadata:
annotations:
"helm.sh/hook": post-install
重要提示:
此作业必须使用安装了 kubectl 的容器 (check this example)
这份工作应该看起来like this sample
- 为了 运行
kubectl port-forward
有效,已将服务帐户关联到此作业。
另一个通用答案:
你不能:Helm 的操作仅限于使用其模板语言渲染一些 YAML 文件集,并将它们提交给 Kubernetes 服务器。它只做 kubectl apply
和 kubectl 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-type 服务是设置从集群外部访问的更好方法。诸如服务类型之类的旋钮和控制负载均衡器所需的任何注释都是通过 Helm 值公开的好东西。