Helm 图表和 Ingress 资源
Helm charts and Ingress resources
我是 K8s 的新手。
我正试图让外界可以看到我的应用程序。我已经部署了 this Nginx Ingress Controller with my apps, using Helm and helmfile,它给了我一个外部 IP 地址和一个负载平衡器。
据我了解,我现在需要 ingress resource
来配置路由映射。
我计划以此入口资源为起点。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx-example
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80
我的应用程序部署在端口 80 上的单独命名空间中。
我的问题是:创建资源的 yaml 放在哪里?
如果可能的话,我希望将所有内容都保留在 Helm 中,以便更轻松地管理配置,所以我不想使用 kubectl
,除非万不得已。
我的头盔文件
repositories:
- name: stable
url: https://charts.helm.sh/stable
- name: nginx-stable
url: https://helm.nginx.com/stable
releases:
# other apps configured here
- name: ingress-nginx
namespace: ingress
createNamespace: true
chart: nginx-stable/nginx-ingress
values:
- ./ingress/values.yaml
version: 0.10.4
installed: true
我的 Ingress 控制器 values.yaml:
---
rbac:
create: true
serviceAccount:
create: true
name: nginx-ingress-public
controller:
ingressClassResource:
enabled: true
default: true
replicaCount: 3
minAvailable: 3
updateStrategy:
rollingUpdate:
maxSurge: 3
maxUnavailable: 0
您应该只部署一次入口控制器,因为它可以处理整个集群的所有 入口流量。
有时部署多个是有意义的,例如我们 运行 2 个入口控制器。 1 个用于内部流量(私有 IP),1 个用于外部流量(public IP)。
一旦你有了它,你只需告诉你的其他 helm 版本使用它的入口 class。
入口清单通常是您的 helm chart 的模板。所以你把它放在模板中。如果您这样做 helm create my-app
,您将获得一个很好的起点,包括入口。
一旦您的图表中有了入口模板,您就可以像往常一样将此模板的一些合理默认值添加到图表的 values.yaml 中。
部署图表时,您可以使用某些标志来覆盖默认值。即 -f
和 --set
.
我是 K8s 的新手。
我正试图让外界可以看到我的应用程序。我已经部署了 this Nginx Ingress Controller with my apps, using Helm and helmfile,它给了我一个外部 IP 地址和一个负载平衡器。
据我了解,我现在需要 ingress resource
来配置路由映射。
我计划以此入口资源为起点。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx-example
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80
我的应用程序部署在端口 80 上的单独命名空间中。
我的问题是:创建资源的 yaml 放在哪里?
如果可能的话,我希望将所有内容都保留在 Helm 中,以便更轻松地管理配置,所以我不想使用 kubectl
,除非万不得已。
我的头盔文件
repositories:
- name: stable
url: https://charts.helm.sh/stable
- name: nginx-stable
url: https://helm.nginx.com/stable
releases:
# other apps configured here
- name: ingress-nginx
namespace: ingress
createNamespace: true
chart: nginx-stable/nginx-ingress
values:
- ./ingress/values.yaml
version: 0.10.4
installed: true
我的 Ingress 控制器 values.yaml:
---
rbac:
create: true
serviceAccount:
create: true
name: nginx-ingress-public
controller:
ingressClassResource:
enabled: true
default: true
replicaCount: 3
minAvailable: 3
updateStrategy:
rollingUpdate:
maxSurge: 3
maxUnavailable: 0
您应该只部署一次入口控制器,因为它可以处理整个集群的所有 入口流量。
有时部署多个是有意义的,例如我们 运行 2 个入口控制器。 1 个用于内部流量(私有 IP),1 个用于外部流量(public IP)。
一旦你有了它,你只需告诉你的其他 helm 版本使用它的入口 class。
入口清单通常是您的 helm chart 的模板。所以你把它放在模板中。如果您这样做 helm create my-app
,您将获得一个很好的起点,包括入口。
一旦您的图表中有了入口模板,您就可以像往常一样将此模板的一些合理默认值添加到图表的 values.yaml 中。
部署图表时,您可以使用某些标志来覆盖默认值。即 -f
和 --set
.