使用更新的配置进行Istio安装不会删除Prometheus ServiceMonitor对象

时间:2020-07-07 03:10:52

标签: istio prometheus-operator

根据此问题的讨论,我使用内置的Prometheus配置了Istio(版本1.16.3),并使用内置的Prometheus运算符配置了Prometheus ServiceMonitor对象:https://github.com/istio/istio/issues/21187

在大多数情况下,此方法工作正常,但我注意到还创建了kubernetes-services-secure-monitor和kubernetes-pods-secure-monitor,这导致Prometheus抛出证书未找到错误,这是按预期的,因为我还没有设置这些。

"level=error ts=2020-07-06T03:43:33.464Z caller=manager.go:188 component="scrape manager" msg="error creating new scrape pool" err="error creating HTTP client: unable to load specified CA cert /etc/prometheus/secrets/istio.prometheus/root-cert.pem: open /etc/prometheus/secrets/istio.prometheus/root-cert.pem: no such file or directory" scrape_pool=istio-system/kubernetes-pods-secure-monitor/0

我还注意到,可以按照以下方式使用Values.prometheus.provisionPrometheusCert标志来禁用服务监视器的创建:

istio/manifests/charts/istio-telemetry/prometheusOperator/templates/servicemonitors.yaml

 {{- if .Values.prometheus.provisionPrometheusCert }} 

但是,使用`istioctl install重新应用配置并不会删除那些服务监视器。

istioctl install命令是否不删除/修剪现有资源?

这是我的完整配置:

apiVersion: install.istio.io/v1alpha1
kind: IstioControlPlane
metadata:
  namespace: istio-system
  name: istio-controlplane
  labels:
    istio-injection: enabled
spec:
  profile: default
  addonComponents:
    prometheus:
      enabled: false
    prometheusOperator:
      enabled: true
    grafana:
      enabled: false
    kiali:
      enabled: true
      namespace: staging
    tracing:
      enabled: false
  values:
    global:
      proxy:
        logLevel: warning
      mountMtlsCerts: false
      prometheusNamespace: monitoring
      tracer:
        zipkin:
          address: jaeger-collector.staging:9411

    prometheusOperator:
      createPrometheusResource: false

    prometheus:
      security:
        enabled: false
      provisionPrometheusCert: false

1 个答案:

答案 0 :(得分:0)

两个单独的问题:升级到新版本的Istio和更新配置。

升级

据我所知,将istio从较旧版本升级到1.4、1.5、1.6时,我们遇到很多问题,但是最近istioctl upgrade出现时,您不必担心升级集群。

istioctl upgrade命令执行Istio的升级。在执行升级之前,它会检查Istio安装是否满足升级资格标准。此外,如果它检测到Istio版本之间的配置文件默认值有任何更改,它还会提醒用户。

此外,Istio 1.6将支持新的升级模型,以安全地进行Canary部署Istio的新版本。在此新模型中,代理将与它们使用的特定控制平面相关联。这样一来,新版本就可以以较低的风险部署到群集中-在用户明确选择之前,没有代理可以连接到新版本。这样可以逐步将工作负载迁移到新的控制平面,同时使用Istio遥测技术监视变化以调查任何问题

与此相关的文档是herehere


更新

正如我在评论中提到的,我发现可能有帮助的两件事是

  • istioctl操作员日志

如果更新出现问题,它将显示在istio操作员日志中,并且更新将失败。

您可以通过检查操作员控制器日志来观察控制器在群集中响应IstioOperator CR更新所做的更改:

$ kubectl logs -f -n istio-operator $(kubectl get pods -n istio-operator -lname=istio-operator -o jsonpath='{.items[0].metadata.name}')

验证安装成功 您可以使用verify-install命令检查Istio安装是否成功,该命令会将群集上的安装与您指定的清单进行比较。

如果您没有在部署之前生成清单,请运行以下命令立即生成清单:

$ istioctl manifest generate <your original installation options> > $HOME/generated-manifest.yaml

然后运行以下verify-install命令以查看安装是否成功:

$ istioctl verify-install -f $HOME/generated-manifest.yaml

希望您觉得这有用。