Kubernetes Ingress控制器

基于NGINX的Kubernetes Ingress控制器,提供反向代理和负载均衡功能。

  • by godfirstjohnjames-gmail-com
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 abundancemarble/MCP-server

使用说明

ingress nginx

ingress nginx 使用NGINX作为反向代理和负载均衡器的Kubernetes入口控制器

要使用,请添加 ingressClassName: nginx 规范字段或 kubernetes.io/ingress.class: nginx Ingress资源的注释。

此图表引导ingress nginx部署到 Kubernetes 集群使用 舵 包管理器。

需求

库贝内特斯: >=1.21.0-0

获取回购信息

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

安装图表

重要提示: 仅支持helm3

helm install [RELEASE_NAME] ingress-nginx/ingress-nginx

该命令以默认配置在Kubernetes集群上部署ingress nginx。

看 配置 在......下面

看 舵安装 用于命令文档。

卸载图表

helm uninstall [RELEASE_NAME]

这将删除与图表关联的所有Kubernetes组件并删除版本。

看 helm卸载 用于命令文档。

升级图表

helm upgrade [RELEASE_NAME] [CHART] --install

看 helm 升级 用于命令文档。

从稳定/nginx入口迁移

从迁移版本有两种主要方法 stable/nginx-ingress 到 ingress-nginx/ingress-nginx 图表:

  1. 对于用于非关键服务的Nginx Ingress控制器,最简单的方法是 卸载 旧的释放和 安装 新的那个
  2. 对于生产中需要零停机时间的关键服务,您需要:
    1. 安装 第二个Ingress控制器
    2. 将DNS流量从旧控制器重定向到新控制器
    3. 在此转换期间记录来自两个控制器的流量
    4. 卸载 旧控制器一旦流量完全耗尽

请注意,这两个图表之间有一些不同的升级配置,由JFrog的Rimas Mocevicius在《升级到ingress nginx Helm chart》一节中描述 从Helm chart nginx ingress迁移到ingress nginx.作为 ingress-nginx/ingress-nginx 图表继续更新,您需要运行以下命令检查当前差异 舵配置 两个图表上的命令。

配置

看 安装前自定义图表。要查看所有带有详细注释的可配置选项,请访问图表 values.yaml,或运行以下配置命令:

helm show values ingress-nginx/ingress-nginx

Pod 中断预算

请注意,只有当replicaCount大于1时,才会定义PodDisruptionBudget资源, 否则,将无法疏散节点。看 gh问题#7127 了解更多信息。

普罗米修斯指标

Ingress Nginx控制器可以通过设置导出Prometheus指标 controller.metrics.enabled 到 true.

您可以使用以下命令将Prometheus注释添加到度量服务中 controller.metrics.service.annotations. 或者,如果您使用Prometheus运算符,则可以使用以下命令启用ServiceMonitor创建 controller.metrics.serviceMonitor.enabled.并设置 controller.metrics.serviceMonitor.additionalLabels.release="prometheus"。“release=prometheus”应与prometheus-servicemonitor中配置的标签匹配(请参阅 kubectl get servicemonitor prometheus-kube-prom-prometheus -oyaml -n prometheus)

ingress nginx nginx_status页面/统计服务器

此图表的以前版本有 controller.stats.* 配置块,由于Ingress Nginx控制器中的以下更改,该块现已过时:

  • 在 0.16.1,删除了vts(虚拟主机流量状态)仪表板
  • 在 0.23.0,端口18080处的状态页现在是一个仅在本地主机上可用的unix套接字web服务器。 您可以使用 curl --unix-socket /tmp/nginx-status-server.sock http://localhost/nginx_status 在控制器容器内本地访问它,或使用以下代码段 nginx入口更改日志 重新启用http服务器

外部DNS服务配置

添加一个 外部DNS LoadBalancer服务的注释:

controller:
  service:
    annotations:
      external-dns.alpha.kubernetes.io/hostname: kubernetes-example.com.

AWS L7 ELB,带SSL端接

如图所示,对控制器进行注释 nginx入口l7补丁:

controller:
  service:
    targetPorts:
      http: http
      https: http
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:XX-XXXX-X:XXXXXXXXX:certificate/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "http"
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
      service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '3600'

附加内部负载平衡器

当您需要外部和内部负载平衡器,但不希望每个应用程序有多个入口控制器和多个入口对象时,此设置非常有用。

默认情况下,ingress对象将指向外部负载均衡器地址,但如果配置正确,如果您正在查找的URL解析为内部负载均衡器的URL,则可以使用内部地址。

您需要设置以下两个值:

controller.service.internal.enabled controller.service.internal.annotations

如果其中一个丢失,则不会部署内部负载平衡器。你可能有这样的例子 controller.service.internal.enabled=true 但是没有设置注释,在这种情况下不会采取任何行动。

controller.service.internal.annotations 根据您使用的云服务而有所不同。

AWS示例:

controller:
  service:
    internal:
      enabled: true
      annotations:
        # Create internal NLB
        service.beta.kubernetes.io/aws-load-balancer-scheme: "internal"
        # Create internal ELB(Deprecated)
        # service.beta.kubernetes.io/aws-load-balancer-internal: "true"
        # Any other annotation can be declared here.

GCE示例:

controller:
  service:
    internal:
      enabled: true
      annotations:
        # Create internal LB. More information: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing
        # For GKE versions 1.17 and later
        networking.gke.io/load-balancer-type: "Internal"
        # For earlier versions
        # cloud.google.com/load-balancer-type: "Internal"

        # Any other annotation can be declared here.

Azure示例:

controller:
  service:
      annotations:
        # Create internal LB
        service.beta.kubernetes.io/azure-load-balancer-internal: "true"
        # Any other annotation can be declared here.

Oracle云基础架构示例:

controller:
  service:
      annotations:
        # Create internal LB
        service.beta.kubernetes.io/oci-load-balancer-internal: "true"
        # Any other annotation can be declared here.

可以找到更多云服务提供商的负载均衡器注释: 内部负载平衡器.

此场景的一个用例是进行拆分视图DNS设置,其中公共区域CNAME记录指向外部平衡器URL,而私有区域CNAME记录则指向内部平衡器URL。这样,您只需要一个ingress kubernetes对象。

您可以选择设置 controller.service.loadBalancerIP 如果你需要一个静态IP作为结果 LoadBalancer.

入场网

对于nginx ingress控制器版本0.25+,ingress nginx控制器pod公开了一个端点,该端点将与 validatingwebhookconfiguration Kubernetes功能可防止将不良入口添加到集群中。 此功能自0.31.0起默认启用。

nginx ingress控制器在0.25.*仅适用于kubernetes 1.14+,0.26修复 这个问题

图表如何配置挂钩

验证和配置要求向其发送请求的端点使用TLS。可以设置自定义证书来实现这一点,但在大多数情况下,自签名证书就足够了。使用helm时,此组件的设置需要一些更复杂的编排。这些步骤被创建为幂等的,并且允许打开和关闭该功能,而不会遇到掌舵怪癖。

  1. 预安装挂钩使用与使用最终用户证书进行配置兼容的格式将证书配置到同一命名空间中。如果证书已经存在,则钩子退出。
  2. Ingress Nginx控制器pod被配置为使用TLS代理容器,该容器将加载该证书。
  3. 验证和修改webhook配置是在集群中创建的。
  4. 安装后挂钩从步骤1创建的密钥中读取CA,并修补验证和修改webhook配置。此过程将允许由其他过程提供的自定义CA也被修补到webhook配置中。所选的故障策略也已修补到webhook配置中

替代方案

应该可以使用 证书管理员 如果需要更完整的解决方案。

您可以通过设置证书管理器启用自动自签名TLS证书配置 controller.admissionWebhooks.certManager.enabled 值为true。

请确保证书管理器已正确安装和配置。

升级时发生Helm错误:spec.clusterIP:无效值:“”

如果您从0.31.0到1.2.2之间的版本升级此图表,则可能会出现以下错误:

Error: UPGRADE FAILED: Service "?????-controller" is invalid: spec.clusterIP: Invalid value: "": field is immutable

如何以及为什么在 这个问题 但要解决这个问题,您可以设置 xxxx.service.omitClusterIP 到 true 哪里 xxxx 是错误中引用的服务。

截至版本 1.26.0 通过简单地不提供任何clusterIP值, invalid: spec.clusterIP: Invalid value: "": field is immutable 将不再发生,因为 clusterIP: "" 将不会被渲染。

Pod安全准入

您可以通过在Pod上贴标签来使用Pod Security Admission ingress-nginx 命名空间按照指示 文档.

例子:

apiVersion: v1
kind: Namespace
metadata:
  name: ingress-nginx
  labels:
    kubernetes.io/metadata.name: ingress-nginx
    name: ingress-nginx
    pod-security.kubernetes.io/enforce: restricted
    pod-security.kubernetes.io/enforce-version: v1.31

价值观

关键字 类型 默认值 描述
通用标签 对象 {}
controller.addHeaders 对象 {} 在向客户端发送响应流量之前,将根据以下内容添加自定义标头:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#add-标题
controller.administration Webhooks.annotations 对象 {}
controller.administrationWebhooks.certManager.administration证书持续时间 字符串 ""
controller.administrationWebhooks.certManager.administration Cert.revision历史限制 int 0 webhook证书的修订历史限制。裁判。:https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.Certificationspec
controller.administrationWebhooks.certManager.enabled bool false
controller.administrationWebhooks.certManager.rootCert.duration 字符串 ""
controller.administration Webhooks.certManager.rootCert.revision历史限制 int 0 根证书的修订历史限制。裁判。:https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.Certificationspec
controller.administrationWebhooks.construction 字符串 "/usr/local/certificates/cert"
controller.administration Webhooks.createSecretJob.activeHeadline秒数 int 0 作业完成的最后期限(秒)。必须大于0才能强制执行。如果未设置或为0,则不强制执行截止日期。
controller.administrationWebhooks.createSecretJob.name 字符串 "create"
controller.administrationWebhooks.createSecretJob.resources 对象 {}
controller.administrationWebhooks.createSecretJob.securityContext 对象 {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":65532,"runAsNonRoot":true,"runAsUser":65532,"seccompProfile":{"type":"RuntimeDefault"}} 秘密创建容器的安全上下文
controller.administrationWebhooks.createSecretJob.volumeMounts 列表 [] 秘密创建容器的卷装载
controller.administrationWebhooks.createSecretJob.volumes 列表 [] 秘密创造舱的体积
controller.administrationWebhooks.enabled bool true
controller.administration Webhooks.extraEnvs 列表 [] 要设置的其他环境变量
controller.administrationWebhooks.failurePolicy 字符串 "Fail" 要使用的准入Webhook失败策略
controller.administrationWebhooks.key 字符串 "/usr/local/certificates/key"
controller.administrationWebhooks.labels 对象 {} 标签将添加到入场webhooks
controller.administrationWebhooks.name 字符串 "admission"
controller.administrationWebhooks.namespaceSelector 对象 {}
controller.administrationWebhooks.objectSelector 对象 {}
controller.administrationWebhooks.patch.enabled bool true
controller.administrationWebhooks.patch.image.dest 字符串 "sha256:b28e0688be7d1e15fe385053bd4c6b631bc7708c9220632de1b95867e5e7da11"
controller.administrationWebhooks.patch.image.image string "ingress-nginx/kube-webhook-certgen"
controller.administrationWebhooks.patch.image.pullPolicy 字符串 "IfNotPresent"
controller.administrationWebhooks.patch.image.tag 字符串 "v1.6.6"
controller.administrationWebhooks.patch.labels 对象 {} 要添加到修补作业资源的标签
controller.administrationWebhooks.patch.networkPolicy.enabled bool false 是否启用“网络策略”
controller.administrationWebhooks.patch.nodeSelector。“kubernetes.io/os” 字符串 "linux"
controller.administrationWebhooks.patch.pod注释 对象 {}
controller.administrationWebhooks.patch.priorityClassName 字符串 "" 为webhook修补作业提供优先级类名#
controller.administrationWebhooks.patch.rbac 对象 {"create":true} 准入webhook补丁作业RBAC
controller.administrationWebhooks.patch.rbac.create bool true 是否创建RBAC
controller.administrationWebhooks.patch.runtime类名 字符串 "" 指示kubelet使用指定的RuntimeClass运行pod
controller.administrationWebhooks.patch.securityContext 对象 {} 秘密创建和webhook补丁包的安全上下文
controller.administrationWebhooks.patch.serviceAccount 对象 {"automountServiceAccountToken":true,"create":true,"name":""} 准入webhook补丁作业服务帐户
controller.administrationWebhooks.patch.serviceAccount.autocountServiceAccountToken bool true 是否自动装载服务帐户令牌
controller.administrationWebhooks.patch.serviceAccount.create bool true 是否创建服务帐户
controller.administrationWebhooks.patch.serviceAccount.name 字符串 "" 自定义服务帐户名
controller.administration Webhooks.patch.toleations 列表 []
controller.administration Webhooks.patchWebhook Job.activeHeadline秒数 int 0 作业完成的最后期限(秒)。必须大于0才能强制执行。如果未设置或为0,则不强制执行截止日期。
controller.administrationWebhooks.patchWebhookJob.name 字符串 "patch"
controller.administrationWebhooks.patchWebhookJob.resources 对象 {}
controller.administrationWebhooks.patchWebhookJob.securityContext 对象 {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":65532,"runAsNonRoot":true,"runAsUser":65532,"seccompProfile":{"type":"RuntimeDefault"}} webhook补丁容器的安全上下文
controller.administrationWebhooks.patchWebhookJob.volumeMounts 列表 [] webhook补丁容器的卷装载
controller.administration Webhooks.patchWebhook Job.volumes 列表 [] webhook补丁盒的容量
controller.administrationWebhooks.port int 8443
controller.administration Webhooks.service.annotations 对象 {}
controller.administrationWebhooks.service.externalIPs 列表 []
controller.administrationWebhooks.service.loadBalancerSourceRanges 列表 []
controller.administration Webhooks.service.servicePort int 443
controller.administrationWebhooks.service.type 字符串 "ClusterIP"
controller.afficiency 对象 {} 节点服务器调度的亲和性和反亲和性规则#Ref:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-和反亲和力#
controller.allowSnippet注释 bool false 此配置定义了Ingress Controller是否应允许用户设置自己的*代码段注释,否则在用户添加这些注释时将被禁止/删除。ConfigMgr中的全局代码段仍然受到尊重
controller.notations 对象 {} 要添加到控制器Deployment或DaemonSet#的注释
controller.autoscaling.annotations 对象 {}
控制器.自动缩放.行为 对象 {}
controller.autoscaling.enabled bool false
controller.autoscaling.maxReplicas int 11
controller.autoscaling.min副本 int 1
控制器.自动缩放.目标CPUUtilization百分比 int 50
控制器.自动缩放.目标内存利用率百分比 int 50
controller.autoscale模板 列表 []
controller.config 对象 {} 全局配置传递给控制器使用的ConfigMap。值可能包含Helm模板。裁判。:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
controller.config注释 对象 {} 要添加到控制器配置配置configmap的注释。
controller.configMapNamespace 字符串 "" 允许自定义configmap/nnginx configmap命名空间;默认值为$(POD_NAMESPACE)
controller.containerName 字符串 "controller" 配置控制器容器名称
controller.clientPort 对象 {"http":80,"https":443} 配置nginx控制器监听的端口
controller.containerSecurityContext 对象 {} 控制器容器的安全上下文
controller.customTemplate.configMapKey string ""
controller.customTemplate.configMapName 字符串 ""
controller.disableLeaderElection bool false 此配置禁用Nginx控制器领导者选举
controller.dnsConfig 对象 {} 可选择自定义pod dnsConfig。
controller.dnsPolicy 字符串 "ClusterFirst" 如果您有“hostNetwork:true”,可以选择将其更改为ClusterFirstWithHostNet。默认情况下,在使用主机网络时,名称解析使用主机的DNS。如果您希望nginx控制器继续解析k8s网络内的名称,请使用ClusterFirstWithHostNet。
controller.electionID 字符串 "" 用于状态更新的选举ID,默认情况下,它使用控制器名称和后缀“leader”
controller.electionTTL 字符串 "" 领导人选举在再次当选之前的有效期,例如。 15s, 10m 或 1h。(默认值:30s)
controller.enableAnnotationValidations bool true
controller.enableMimaloc bool true 启用mimalloc作为malloc的直接替代品。#参考:https://github.com/microsoft/mimalloc #
controller.enable拓扑软件路由 bool false 此配置启用拓扑感知路由功能,与服务注释服务一起使用。kubernes.io/Topology mode=“auto”默认为false
controller.extraArgs 对象 {} 传递给Ingress Nginx控制器的其他命令行参数,例如指定可以使用的默认SSL证书
controller.extra容器 列表 [] 要添加到控制器吊舱的其他容器。看https://github.com/lemonldap-ng-controller/lemonldap-ng-controller作为示例。
controller.extraEnvs 列表 [] 要设置的其他环境变量
controller.extraInit容器 列表 [] 容器,在应用程序容器启动之前运行。值可能包含Helm模板。
controller.extraModules 列表 [] 模块,安装到核心nginx映像中。
controller.extraVolumeMounts 列表 [] 附加卷装载到控制器主容器。
controller.extraVolumes 列表 [] 控制器吊舱的额外容量。
controller.healthCheckHost 字符串 "" 绑定健康检查终结点的地址。如果Ingress Nginx控制器正在运行,最好将此选项设置为内部节点地址 hostNetwork: true 模式。
controller.healthCheckPath 字符串 "/healthz" 健康检查终结点的路径。在healthz端口参数定义的端口上接收到的所有请求都会在内部转发到此路径。
controller.host别名 列表 [] 可选择自定义pod主机别名。
controller.hostNetwork bool false 需要与基于CNI的kubernetes安装(如kubeadm设置的安装)一起使用,因为CNI和hostport还不能混合使用。可以弃用一次https://github.com/kubernetes/kubernetes/issues/23920已合并
controller.hostPort.enabled bool false 是否启用“hostPort”
controller.hostPort.ports.http int 80 'hostPort'http端口
controller.hostPort.ports.https int 443 'hostPort'https端口
controller.hostname 对象 {} 可选择自定义pod主机名。
controller.image.allow特权升级 bool false
controller.image.chroot bool false
controller.image.digest 字符串 "sha256:fb3e5c0bdff6a498dd5192b11a09ace0739baa9fe6ba519bf5b22425871ce490"
controller.image.digestChroot 字符串 "sha256:c46f14a73fb06f2ac2d85d2e576a39563c874fa182076c1ced8b44e24247a80b"
controller.image.image 字符串 "ingress-nginx/controller"
controller.image.pullPolicy 字符串 "IfNotPresent"
controller.image.readOnly根文件系统 bool false
controller.image.runAsGroup int 82 不得使用官方图像更改此值。uid=101(www数据)gid=82(www数据”)组=82(www数据”)
controller.image.runAsNonRoot bool true
controller.image.run用户 int 101 不得使用官方图像更改此值。uid=101(www数据)gid=82(www数据”)组=82(www数据”)
controller.image.seccompProfile.type 字符串 "RuntimeDefault"
controller.image.tag 字符串 "v1.14.2"
controller.ingressClass 字符串 "nginx" 为了与ingress.class注释向后兼容,请使用ingressClass。算法如下,首先考虑ingressClassName,如果不存在,控制器会查找ingress.class注释
controller.ingressClassByName bool false 按名称处理入口类(另外根据规范控制器)。
controller.ingressClassResource 对象 {"aliases":[],"annotations":{},"controllerValue":"k8s.io/ingress-nginx","default":false,"enabled":true,"name":"nginx","parameters":{}} 本节介绍IngressClass资源的创建。IngressClasses是不可变的,创建后不能更改。我们还不支持命名空间IngressClasses,因此需要ClusterRole和ClusterRoleBinding。
controller.ingressClassResource.aliases 列表 [] 这个IngressClass的别名。创建具有相同设置但名称为相应别名的副本。适用于只有一个Ingress控制器但具有类似Ingress资源的生产环境。 default 仅在原始IngressClass上启用。
controller.ingressClassResource.annotations 对象 {} 要添加到IngressClass资源的注释。
controller.ingressClassResource.controllerValue 字符串 "k8s.io/ingress-nginx" IngressClass的控制器。Ingress控制器查找IngressClasses,它应该通过此值进行协调。该值也被设置为 --controller-class 这个入口控制器的论点。裁判:https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-班级
controller.ingressClassResource.default bool false 如果是真的,Ingresses没有 ingressClassName 在创建时被分配到此IngressClass。如果存在多个默认IngressClasses,则入口创建将被拒绝。裁判:https://kubernetes.io/docs/concepts/services-networking/ingress/#default-入口等级
controller.ingressClassResource.enabled bool true 是否创建IngressClass
controller.ingressClassResource.name 字符串 "nginx" IngressClass的名称
controller.ingressClassResource.parameters 对象 {} 指向包含控制器附加配置的自定义资源的链接。如果使用此IngressClass的控制器不需要其他参数,则这是可选的。裁判:https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-班级
controller.keda.api版本 字符串 "keda.sh/v1alpha1"
controller.keda.behavior 对象 {}
controller.keda.coldownPeriod int 300
controller.keda.enabled bool false
controller.keda.max副本 int 11
controller.keda.min副本 int 1
controller.keda.polling间隔 int 30
controller.keda.restore到原始副本计数 bool false
controller.keda.scaledObject.annotations 对象 {}
controller.keda.triggers 列表 []
controller.cind 字符串 "Deployment" 使用a DaemonSet 或 Deployment
controller.tlabes 对象 {} 要添加到控制器Deployment或DaemonSet以及其他没有指定标签选项的资源中的标签#
控制器生命周期 对象 {"preStop":{"exec":{"command":["/wait-shutdown"]}}} 使用生命周期挂钩改善删除入口控制器pod时的连接排空:使用此新挂钩,我们将默认终止GracePeriodSeconds从30秒增加到300秒,允许连接排空长达五分钟。如果活动连接在此之前结束,则pod将在此时优雅地终止。为了有效地利用此功能,Configmap功能工作器关闭超时新值为240秒,而不是10秒。 #
controller.livessProbe.failure阈值 int 5
controller.livessProbe.httpGet.path 字符串 "/healthz"
controller.livessProbe.httpGet.port int 10254
controller.livessProbe.httpGet.scheme 字符串 "HTTP"
controller.livessProbe.initial延迟秒 int 10
controller.livessProbe.periodSeconds int 10
controller.livessProbe.accessThreshold int 1
controller.livessProbe.timeoutSeconds int 1
controller.maxmindLicenseKey 字符串 "" 下载GeoLite2数据库的Maxmind许可证密钥。 # https://blog.maxmind.com/2019/12/significant-changes-to-accessing-and-using-geolite2-databases/
controller.metrics已启用 bool false
控制器.度量.端口 int 10254
controller.metrics.portName 字符串 "metrics"
控制器.度量.色度规则.附加标签 对象 {}
控制器.度量.色度规则.注释 对象 {} 要添加到PrometheusRule的注释。
控制器.度量.色度规则.已启用 bool false
控制器.度量.色度规则.规则 列表 []
controller.metrics.service.annotations 对象 {}
controller.metrics.service.enabled bool true 是否启用度量服务。
controller.metrics.service.externalIPs 列表 [] 统计导出器服务可用的IP地址列表#Ref:https://kubernetes.io/docs/concepts/services-networking/service/#external-ips#
controller.metrics.service.labels 对象 {} 要添加到度量服务资源的标签
controller.metrics.service.loadBalancer源范围 列表 []
controller.metrics.service.servicePort int 10254
controller.metrics.service.type 字符串 "ClusterIP"
controller.metrics.serviceMonitor.additional标签 对象 {}
controller.metrics.serviceMonitor.annotations对象 {} 要添加到ServiceMonitor的注释。
controller.metrics.serviceMonitor.enabled bool false
controller.metrics.serviceMonitor.labelLimit int 0 每刮擦一次,样品可接受的标签数量限制。
controller.metrics.serviceMonitor.labelNameLengthLimit int 0 样本可接受的标签名称长度的每次刮擦限制。
controller.metrics.serviceMonitor.labelValueLengthLimit int 0 样本可接受的标签长度的每次刮擦限制值。
控制器.度量.服务监视器.度量重新标记 列表 []
controller.metrics.serviceMonitor.namespace 字符串 ""
controller.metrics.serviceMonitor.namespaceSelector 对象 {}
控制器.度量.服务监视器.标签 列表 []
controller.metrics.serviceMonitor.sampleLimit int 0 定义每次刮擦可接受的刮擦样本数量的限制。
controller.metrics.serviceMonitor.scrapeInterval 字符串 "30s"
controller.metrics.serviceMonitor.scrapeTimeout 字符串 "" 超时后,刮擦结束。如果为空则不设置,因此默认为全局Prometheus抓取超时。
controller.metrics.serviceMonitor.target标签 列表 []
controller.metrics.serviceMonitor.targetLimit int 0 定义将被接受的刮擦目标数量的限制。
controller.min可用 int 1 PodDisruptionBudget中设置的最小可用吊舱。定义“minAvailable”或“maxUnavailable”,切勿同时定义两者。
controller.minReadySeconds int 0 minReadySeconds 为了避免在我们准备好之前杀死豆荚
controller.name 字符串 "controller"
controller.networkPolicy.enabled bool false 是否启用“网络策略”
controller.nodeSelector 对象 {"kubernetes.io/os":"linux"} 控制器吊舱分配的节点标签#参考:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ #
controller.podAnnotations 对象 {} 要添加到控制器Pod的注释#
controller.podLabels 对象 {} 要添加到pod容器元数据的标签
controller.podSecurityContext 对象 {} 控制器吊舱的安全上下文
controller.priorityClassName 字符串 ""
controller.progress截止时间秒 int 0 指定在系统报告控制器部署失败之前,您希望等待控制器部署进行的秒数。裁判。:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-截止时间秒
controller.proxySetHeaders 对象 {} 将根据以下内容在向后端发送流量之前添加自定义标头https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/custom-headers
controller.publishService 对象 {"enabled":true,"pathOverride":""} 允许自定义要在入口状态字段中报告的IP地址或FQDN的来源。默认情况下,它读取服务提供的信息。如果禁用,状态字段将报告运行入口控制器吊舱的一个或多个节点的IP地址。
controller.publishService.enabled bool true 是否启用“publishService”
controller.publishService.pathOverride 字符串 "" 允许覆盖发布服务以绑定到必须 /<服务名称>
控制器就绪故障阈值 int 3
controller.readinesProbe.httpGet.path 字符串 "/healthz"
控制器readinesprobe.httpGet.port int 10254
controller.readinesProbe.httpGet.scheme 字符串 "HTTP"
控制器readinesprobe.initial延迟秒 int 10
控制器.读数.指针.周期秒 int 10
controller.readinesProbe.access阈值 int 1
控制器readinesprobe.timeout秒数 整数 1
控制器.复制计数 int 1
controller.reportNodeInternalIp bool false 通过主机网络考虑裸机问题https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-主机网络入口状态为空,因为在使用主机网络的配置中没有暴露入口Nginx控制器的服务,标准云设置中使用的默认发布服务标志不适用
controller.resise策略 列表 [] 调整控制器容器的策略大小。裁判:https://kubernetes.io/docs/tasks/configure-pod-container/resize-container-resources
controller.resources.requests.cpu 字符串 "100m"
controller.resources.requests.memory 字符串 "90Mi"
controller.runtimeClassName 字符串 "" 指示kubelet使用指定的RuntimeClass运行pod
controller.scope.enabled bool false 是否启用“范围”
controller.scope.namespace 字符串 "" 命名空间将控制器限制为;默认值为$(POD_NAMESPACE)
controller.scope.namespace选择器 字符串 "" 当scope.enabled==false时,我们观察的不是所有名称空间,而是标签仅与namespaceSelector匹配的名称空间。格式类似于foo=bar。默认为空,表示监视所有命名空间。
controller.service.annotations 对象 {} 要添加到外部控制器服务的注释。看 controller.service.internal.annotations 用于将注释添加到内部控制器服务中。
controller.service.app协议 bool true 是否声明外部HTTP和HTTPS侦听器的应用程序协议。取代了用于声明后端协议的特定于提供者的注释。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#application-协议
controller.service.clusterIP 字符串 "" 外部控制器服务的预定义群集内部IP地址。注意与现有服务的冲突。这个值是不可变的。一旦设置,如果不删除并重新创建服务,则无法更改。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-您自己的ip地址
controller.service.clusterIPs 列表 [] 外部控制器服务的预定义群集内部IP地址。注意与现有服务的冲突。这个值是不可变的。一旦设置,如果不删除并重新创建服务,则无法更改。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-您自己的ip地址
controller.service.enableHttp bool true 是否在两个控制器服务上启用HTTP侦听器。
controller.service.enableHttps bool true 是否在两个控制器服务上启用HTTPS侦听器。
controller.service.enabled bool true 是否启用控制器服务。这不会影响准入webhook或指标服务的创建。
controller.service.external.enabled bool true 是否启用外部控制器服务。仅适用于内部部署。
controller.service.external.labels 对象 {} 要添加到外部控制器服务的标签。
controller.service.externalIPs 列表 [] 外部控制器服务可用的节点IP地址列表。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
controller.service.external流量策略 字符串 "" 外部控制器服务的外部流量策略。设置为“本地”以保留支持源IP的提供商的源IP。参考:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-客户端源ip
controller.service.internal.annotations 对象 {} 要添加到内部控制器服务的注释。必须创建内部控制器服务。因云服务而异。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#internal-负载平衡器
controller.service.internal.app协议 bool true 是否声明内部HTTP和HTTPS侦听器的应用程序协议。取代了用于声明后端协议的特定于提供者的注释。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#application-协议
controller.service.internal.clusterIP 字符串 "" 内部控制器服务的预定义群集内部IP地址。注意与现有服务的冲突。这个值是不可变的。一旦设置,如果不删除并重新创建服务,则无法更改。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-您自己的ip地址
controller.service.internal.clusterIPs 列表 [] 内部控制器服务的预定义群集内部IP地址。注意与现有服务的冲突。这个值是不可变的。一旦设置,如果不删除并重新创建服务,则无法更改。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-您自己的ip地址
controller.service.internal.enabled bool false 是否启用内部控制器服务。记得配置 controller.service.internal.annotations 当启用此功能时。
controller.service.internal.externalIPs 列表 [] 内部控制器服务可用的节点IP地址列表。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
controller.service.internal.external流量策略 字符串 "" 内部控制器服务的外部流量策略。设置为“本地”以保留支持源IP的提供商的源IP。参考:https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-客户端源ip
controller.service.internal.ip系列 列表 ["IPv4"] 分配给内部控制器服务的IP系列(如IPv4、IPv6)列表。此字段通常根据集群配置和 ipFamilyPolicy 现场。裁判:https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
controller.service.internal.ipFamilyPolicy 字符串 "SingleStack" 表示内部控制器服务的双堆栈功能。可能的值是SingleStack、PreferualStack或RequireDualStack。领域 ipFamilies 和 clusterIP 取决于此字段的值。裁判:https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
controller.service.internal.labels 对象 {} 要添加到内部控制器服务的标签。
controller.service.internal.loadBalancerClass 字符串 "" 内部控制器服务的负载平衡器类。云提供商使用它来选择云提供商默认值以外的负载均衡器实现。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#load-平衡器类
controller.service.internal.loadBalancerIP 字符串 "" 弃用:内部控制器服务的预定义IP地址。云提供商使用它将生成的负载均衡器服务连接到预先存在的静态IP。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
controller.service.internal.loadBalancerSourceRanges 列表 [] 限制对内部控制器服务的访问。值必须是CIDR。默认情况下允许任何源地址。
controller.service.internal.nodePorts.http string "" 为内部HTTP侦听器分配的节点端口。如果留空,服务控制器将从配置的节点端口范围中分配一个。
controller.service.internal.nodePorts.https 字符串 "" 为内部HTTPS侦听器分配的节点端口。如果留空,服务控制器将从配置的节点端口范围中分配一个。
controller.service.internal.nodePorts.tcp 对象 {} 内部TCP侦听器的节点端口映射。如果留空,服务控制器将从配置的节点端口范围分配它们。示例:tcp:8080:30080
controller.service.internal.nodePorts.udp 对象 {} 内部UDP侦听器的节点端口映射。如果留空,服务控制器将从配置的节点端口范围分配它们。示例:udp:53:30053
controller.service.internal.ports 对象 {}
controller.service.internal.sessionAffinity 字符串 "" 内部控制器服务的会话关联性。如果已设置,则必须为“无”或“ClientIP”。默认为“无”。裁判:https://kubernetes.io/docs/reference/networking/virtual-ips/#session-亲和力
controller.service.internal.targetPorts 对象 {}
controller.service.internal.traffic分发 字符串 "" 内部控制器服务的流量分配策略。设置为“首选关闭”可将流量路由到拓扑上更靠近客户端的端点。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#traffic-分布
controller.service.internal.type 字符串 "" 内部控制器服务的类型。默认值为 controller.service.type.参考:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-服务服务类型
controller.service.ip系列 列表 ["IPv4"] 分配给外部控制器服务的IP系列(例如IPv4、IPv6)列表。此字段通常根据集群配置和 ipFamilyPolicy 现场。裁判:https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
controller.service.ip家庭政策 字符串 "SingleStack" 表示外部控制器服务的双堆栈功能。可能的值是SingleStack、PreferualStack或RequireDualStack。领域 ipFamilies 和 clusterIP 取决于此字段的值。裁判:https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
controller.service.labels 对象 {} 标签将添加到两个控制器服务中。
controller.service.loadBalancerClass 字符串 "" 外部控制器服务的负载平衡器类。云提供商使用它来选择云提供商默认值以外的负载均衡器实现。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#load-平衡器类
controller.service.loadBalancerIP 字符串 "" 弃用:外部控制器服务的预定义IP地址。云提供商使用它将生成的负载均衡器服务连接到预先存在的静态IP。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
controller.service.loadBalancerSourceRanges 列表 [] 限制对外部控制器服务的访问。值必须是CIDR。默认情况下允许任何源地址。
controller.service.nodePorts.http 字符串 "" 为外部HTTP侦听器分配的节点端口。如果留空,服务控制器将从配置的节点端口范围中分配一个。
controller.service.nodePorts.https 字符串 "" 为外部HTTPS侦听器分配的节点端口。如果留空,服务控制器将从配置的节点端口范围中分配一个。
controller.service.nodePorts.tcp 对象 {} 外部TCP侦听器的节点端口映射。如果留空,服务控制器将从配置的节点端口范围分配它们。示例:tcp:8080:30080
controller.service.nodePorts.udp 对象 {} 外部UDP侦听器的节点端口映射。如果留空,服务控制器将从配置的节点端口范围分配它们。示例:udp:53:30053
controller.service.ports.http int 80 发布外部HTTP侦听器的端口。
controller.service.ports.https int 443 发布外部HTTPS侦听器的端口。
controller.service.sessionAffinity 字符串 "" 外部控制器服务的会话关联性。如果已设置,则必须为“无”或“ClientIP”。默认为“无”。裁判:https://kubernetes.io/docs/reference/networking/virtual-ips/#session-亲和力
controller.service.targetPorts.http string "http" 外部HTTP侦听器映射到的入口控制器的端口
controller.service.targetPorts.https 字符串 "https" 外部HTTPS侦听器映射到的入口控制器的端口
controller.service.traftcDistribution 字符串 "" 外部控制器服务的流量分配策略。设置为“首选关闭”可将流量路由到拓扑上更靠近客户端的端点。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#traffic-分布
controller.service.type 字符串 "LoadBalancer" 外部控制器服务的类型。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-服务服务类型
controller.shareProcessNamespace bool false
controller.sysctls 对象 {} 控制器Pod的sysctls#Ref:https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/
controller.tcp.notations 对象 {} 要添加到tcp配置configmap的注释
controller.tcp.configMapNamespace 字符串 "" 允许自定义tcp服务configmap;默认值为$(POD_NAMESPACE)
控制器终止GracePeriodSeconds int 300 terminationGracePeriodSeconds 为了避免在我们准备好之前杀死Pod#等待连接耗尽最多五分钟#
controller.容忍度 列表 [] 对服务器调度到有污点的节点的节点容忍度#Ref:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ #
controller.topology预约束 列表 [] 拓扑扩展约束依赖于节点标签来标识每个节点所在的拓扑域。#参考:https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ #
controller.udp.notations 对象 {} 要添加到udp-configmap的注释
controller.udp.configMapNamespace 字符串 "" 允许自定义udp服务configmap;默认值为$(POD_NAMESPACE)
controller.unhealthyPodEviationPolicy 字符串 "" 由PodDisruptionBudget保护的不健康豆荚的驱逐政策。裁判:https://kubernetes.io/blog/2023/01/06/unhealthy-pod-eviction-policy-for-pdbs/
controller.updateStrategy 对象 {} 应用于Deployment或DaemonSet#的更新策略
controller.wakeIngressWithoutClass bool false 处理不带ingressClass注释的Ingress对象/ingressClassName字段覆盖控制器二进制文件的值--watch Ingress不带类标志默认为false
defaultBackend.affinity 对象 {} 节点服务器调度的亲和性和反亲和性规则#Ref:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-和反亲和力
defaultBackend.autoscaling.annotations 对象 {}
defaultBackend.autoscaling.enabled bool false
defaultBackend.autoscaling.max副本 int 2
defaultBackend.autoscaling.min副本 int 1
defaultBackend.autoscaling.targetCPUutilization百分比 int 50
defaultBackend.autoscaling.target内存利用率百分比 int 50
defaultBackend.containerSecurityContext 对象 {} 默认后端容器的安全上下文
defaultBackend.enabled bool false
defaultBackend.extraArgs 对象 {}
defaultBackend.extraConfigMaps 列表 []
defaultBackend.extraEnvs 列表 [] 为defaultBackend Pod设置的其他环境变量
defaultBackend.extraVolumeMounts 列表 []
defaultBackend.extraVolumes 列表 []
defaultBackend.image.allow特权升级 bool false
defaultBackend.image.image string "defaultbackend-amd64"
defaultBackend.image.pullPolicy 字符串 "IfNotPresent"
defaultBackend.image.readOnly根文件系统 bool true
defaultBackend.image.runAsGroup int 65534
defaultBackend.image.runAsNonRoot bool true
defaultBackend.image.runAsUser int 65534
defaultBackend.image.seccompProfile.type 字符串 "RuntimeDefault"
defaultBackend.image.tag 字符串 "1.5"
defaultBackend.labels 对象 {} 要添加到默认后端资源的标签
defaultBackend.livenessProbe.failureThreshold int 3
defaultBackend.livenessProbe.initial延迟秒 int 30
defaultBackend.livenessProbe.periodSeconds int 10
defaultBackend.livenessProbe.accessThreshold int 1
defaultBackend.livenessProbe.timeoutSeconds int 5
defaultBackend.min可用 int 1 PodDisruptionBudget中设置的最小可用吊舱。定义“minAvailable”或“maxUnavailable”,切勿同时定义两者。
默认后端.min就绪秒 int 0 minReadySeconds 为了避免在我们准备好之前杀死豆荚
defaultBackend.name 字符串 "defaultbackend"
defaultBackend.networkPolicy.enabled bool false 是否启用“网络策略”
defaultBackend.nodeSelector 对象 {"kubernetes.io/os":"linux"} 默认后端pod分配的节点标签#Ref:https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/ #
defaultBackend.podAnnotations 对象 {} 要添加到默认后端Pod的注释#
defaultBackend.podLabels 对象 {} 要添加到pod容器元数据的标签
defaultBackend.podSecurityContext 对象 {} 默认后端Pod的安全上下文
defaultBackend.port int 8080
defaultBackend.priorityClassName 字符串 ""
defaultBackend.readinesProbe.failure阈值 int 6
defaultBackend.readinesProbe.initial延迟秒 int 0
defaultBackend.readinesProbe.period秒 int 5
defaultBackend.readinesProbe.accessThreshold int 1
defaultBackend.readinesProbe.timeoutSeconds int 5
defaultBackend.reploicaCount int 1
defaultBackend.resources 对象 {}
defaultBackend.runtime类名 字符串 "" 指示kubelet使用指定的RuntimeClass运行pod
defaultBackend.service.annotations 对象 {}
defaultBackend.service.clusterIPs 列表 [] 默认后端服务的预定义群集内部IP地址。注意与现有服务的冲突。这个值是不可变的。一旦设置,如果不删除并重新创建服务,则无法更改。裁判:https://kubernetes.io/docs/concepts/services-networking/service/#choosing-您自己的ip地址
defaultBackend.service.externalIPs 列表 [] 默认后端服务可用的IP地址列表#Ref:https://kubernetes.io/docs/concepts/services-networking/service/#external-ips#
defaultBackend.service.loadBalancerSourceRanges 列表 []
defaultBackend.service.servicePort int 80
defaultBackend.service.type 字符串 "ClusterIP"
defaultBackend.serviceAccount.autocountServiceAccountToken bool true
defaultBackend.serviceAccount.create bool true
defaultBackend.serviceAccount.name 字符串 ""
defaultBackend.tolerations 列表 [] 对服务器调度到有污点的节点的节点容忍度#Ref:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ #
defaultBackend.topologySpreced约束 列表 [] 拓扑扩展约束依赖于节点标签来标识每个节点所在的拓扑域。参考:https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
defaultBackend.unhelthyPodEviationPolicy 字符串 "" 由PodDisruptionBudget保护的不健康豆荚的驱逐政策。裁判:https://kubernetes.io/blog/2023/01/06/unhealthy-pod-eviction-policy-for-pdbs/
defaultBackend.updateStrategy 对象 {} 应用于Deployment或DaemonSet#的更新策略
dhParam 字符串 "" 一个base64编码的Diffie-Hellman参数。这可以通过以下方式生成: `openssl dhparam 4096 2> /dev/null
global.image.register 字符串 "registry.k8s.io" 从中提取图像的注册表主机。
imagePullSecrets 列表 [] 包含私有注册表凭据的imagePullSecrets可选数组#Ref:https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
命名空间覆盖 字符串 "" 覆盖部署命名空间;默认为。释放。命名空间
portName前缀 字符串 "" ingress控制器服务中TCP和UDP端口名称的前缀#一些云提供商,如Yandex cloud,可能需要端口名称正则表达式来支持云负载均衡器集成
rbac.create bool true
rbac.scope bool false
修订历史限制 int 10 回滚限制#
serviceAccount.annotations 对象 {} 控制器服务帐户的注释
serviceAccount.automountServiceAccountToken bool true
serviceAccount.create bool true
serviceAccount.name 字符串 ""
tcp 对象 {} TCP服务键值对#Ref:https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md #
udp 对象 {} UDP服务键值对#Ref:https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md###MCP服务器
前往报告卡
GitHub MCP服务器
GitHub MCP服务器将AI工具直接连接到GitHub平台。这使AI代理、助手和聊天机器人能够读取存储库和代码文件,管理问题和PR,分析代码,并自动化工作流程。通过自然语言的互动。

用例 存储库管理:浏览和查询代码、搜索文件、分析提交,并了解您有权访问的任何存储库中的项目结构。 问题和公关自动化:创建、更新和管理问题和拉取请求。让人工智能帮助分类错误、审查代码更改和维护项目板。 CI/CD和工作流智能:监控GitHub Actions工作流运行,分析构建失败,管理发布,并深入了解您的开发流程。 代码分析:检查安全发现,查看Dependabot警报,了解代码模式,并全面了解您的代码库。 团队协作:访问讨论、管理通知、分析团队活动并简化团队流程。 专为希望将人工智能工具连接到GitHub上下文和功能的开发人员而设计,从简单的自然语言查询到复杂的多步骤代理工作流。

远程GitHub MCP服务器 在VS代码中安装在VS代码内部人员中安装

远程GitHub MCP服务器由GitHub托管,提供了最简单的启动和运行方法。如果您的MCP主机不支持远程MCP服务器,请不要担心!您可以使用GitHub MCP Server的本地版本。

先决条件 支持远程服务器的兼容MCP主机(VS Code 1.101+、Claude Desktop、Cursor、Windsurf等) 启用任何适用的策略 在VS代码中安装 为了快速安装,请使用上面的一键安装按钮之一。完成该流程后,切换代理模式(位于副驾驶聊天文本输入处),服务器将启动。确保您使用VS Code 1.101或更高版本进行远程MCP和OAuth支持。

或者,要手动配置VS Code,请从以下示例中选择适当的JSON块并将其添加到您的主机配置中:

使用OAuth