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.