[Monitor]loki use S3 and DynamoDB

 

前言

最近在點監控這邊的技能樹,多多少少也遇到一些問題,雖然說這部份討論真的不多,但是設定上還算簡單,照著網路上的設定大致上沒什麼問題,不過因為我把loki放在k8s,所以大致上都是k8s本身的問題

遇到的問題

No OpenIDConnect provider found in your account

這個問題應該是我用的是EKS的關係,所以找了一些資料後找到AWS提供的說明文,以下擷錄其中的一段話此功能可讓您向支援的身分供應商驗證 AWS API 呼叫,並接收有效的 OIDC JSON Web 字符 (JWT)。(註1)

所以依照網頁上的流程照著做發現我還真的沒有這個東西,建立完之後問題並沒有完全解決,是的抱持著「解決主要敵人後,次要敵人就會出來」的想法就不會有太大的衝擊,接下來遇到的也是權限上的問題。

繼續遇到問題

Not authorized to perform sts:AssumeRoleWithWebIdentity\n\tstatus code: 403

這部份是需要加在你K8s使用的serviceAccount對應的帳號裡,像我是在IAMrole裡創了個LokiAccount,而且在K8sserviceAccount也叫LokiAccount,這樣方便我不會搞混哪邊要用哪個,接著以下的code就是加在該roleTrustRelationship

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<aws_account>:oidc-provider/oidc.eks.<region>.amazonaws.com/id/<region-provider>"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.<region>.amazonaws.com/id/<region-provider>:sub": "system:serviceaccount:<k8s_namespace>:LokiAccount"
        }
      }
    }
  ]
}

結語

這次卡關的時間沒有想像中的久,然後loki使用上也算順利,部署設定也比想像中簡單很多,雖然也是用helm,不過官方頁面給的設定有點少所以我就不附連結了,我是直接參考GihubGist有人貼出他的helm設定檔,不過就像我說的遇到的問題不是helm,而是在K8s裡,所以算是對K8s的了解又更往上了一層。

參考鏈結

註1

建立IAM OIDC

sts:AssumeRoleWithWebIdentity status code: 403

loki_values.yaml

loki storage

Setup Loki Storage to AWS S3 and DynamoDB in Kubernetes with Kiam