iT邦幫忙

0

AWS EKS 搭建 prometheus.operator ingress 問題

  • 分享至 

  • xImage

大家好,目前我在 AWS 上面搭建 prometheus-operator,
使用上還算順利,但我想要在使用 ingress 讓別人訪問 grafana,
於是參考下面這篇文章

https://prometheus-operator.dev/docs/kube/exposing-prometheus-alertmanager-grafana-ingress/

其中中間有一段 jsonnet 的東西,看不懂這是要怎麼使用。

local kp =
  (import 'kube-prometheus/main.libsonnet') +
  {
    values+:: {
      common+: {
        namespace: 'monitoring',
      },
    },
    prometheus+:: {
      prometheus+: {
        spec+: {
          externalUrl: 'http://prometheus.example.com',
        },
      },
    },
    ingress+:: {
      'prometheus-k8s': {
        apiVersion: 'networking.k8s.io/v1',
        kind: 'Ingress',
        metadata: {
          name: $.prometheus.prometheus.metadata.name,
          namespace: $.prometheus.prometheus.metadata.namespace,
          annotations: {
            'nginx.ingress.kubernetes.io/auth-type': 'basic',
            'nginx.ingress.kubernetes.io/auth-secret': 'basic-auth',
            'nginx.ingress.kubernetes.io/auth-realm': 'Authentication Required',
          },
        },
        spec: {
          rules: [{
            host: 'prometheus.example.com',
            http: {
              paths: [{
                backend: {
                  service: {
                    name: $.prometheus.service.metadata.name,
                    port: 'web',
                  },
                },
              }],
            },
          }],
        },
    },
  } + {
    ingress+:: {
      'basic-auth-secret': {
        apiVersion: 'v1',
        kind: 'Secret',
        metadata: {
          name: 'basic-auth',
          namespace: $._config.namespace,
        },
        data: { auth: std.base64(importstr 'auth') },
        type: 'Opaque',
      },
    },
  };

// Output a kubernetes List object with both ingresses (k8s-libsonnet)
k.core.v1.list.new([
  kp.ingress['prometheus-k8s'],
  kp.ingress['basic-auth-secret'],
])

問了 chatgpt 他請我執行
jsonnet config.jsonnet > config.yaml
然後kubectl apply -f config.yaml 即可。

於是我就把上面那一段 jsonnet 放入一個新的空白檔案 config.jsonnet
當我執行時候,卻發生了錯了。
jsonnet config.jsonnet > config.yaml
STATIC ERROR: aaa.jsonnet:58:4: expected a comma before next field.

這東西還是不要太過相信 chatgpt 給你的答案。
多多去看一下AWS給你的操作文件還比較實在。
不是 AWS問題,卡在 prometheus operator
如果樓主沒有根據主機把一些參數改成正確的值,有問題不意外
建議樓主看一下那些參數需要改的,請標示為"已修改"
不然光看上面完全跟範本一樣的東西,能夠跑才有鬼
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Ray
iT邦大神 1 級 ‧ 2023-09-04 23:35:44
最佳解答

你把第 58 行那個 ; 號

  };

改成 , 號看看?

  },

STATIC ERROR: aaa.jsonnet:61:2: expected token OPERATOR but got "."

60 // Output a kubernetes List object with both ingresses 61 (k8s-libsonnet)
62 k.core.v1.list.new([
63   kp.ingress['prometheus-k8s'],
64   kp.ingress['basic-auth-secret'],
65 ])

61行,. 錯誤..?

Ray iT邦大神 1 級 ‧ 2023-09-05 08:39:40 檢舉

那你把原本 58 行那個 , 去掉只留下 }:

  }

然後從 59 行以後的東西通通刪掉不要, 這樣試試看?

嗨嗨~雷神,
我早上有測試了一下,發現不行,後來我找到解法了,還沒有完全成功。
但至少知道他會什麼會出現 jsonnet 的原因了。

具體教學是放在這個位置
https://github.com/prometheus-operator/kube-prometheus/blob/main/docs/customizing.md

照做一遍後,還在模索,但是至少 jsonnet 怎麼更新 prometheus-operator 有點感覺了。

謝謝。

我要發表回答

立即登入回答