EKS 中的 AWS 跨账户 Loki promtail 设置
Posted
技术标签:
【中文标题】EKS 中的 AWS 跨账户 Loki promtail 设置【英文标题】:AWS cross account Loki promtail setup in EKS 【发布时间】:2021-12-07 12:28:52 【问题描述】:这是我的设置。
我有 2 个 AWS 账户。
-
应用程序帐户
监控帐号
应用账号有EKS+Istio+应用相关微服务+promtail代理。
监控账户在 EKS + Istio + 内有集中式日志系统(Grafana & Prometheus & loki pods running)
从应用程序帐户,我想将日志推送到 Loki on Monitoring a/c。我尝试在监控 a/c 之外公开 Loki 服务,但我面临将 loki url 设置为 https://
问题是如何从应用程序帐户访问 loki URL,以便可以在应用程序 a/c 的 promtail 中对其进行配置? 请注意,这两个帐户都在 EKS 中使用 pod,而不是独立的 loki 或 promtail。
感谢和问候。
apiVersion: v1
kind: Service
metadata:
annotations:
meta.helm.sh/release-name: loki
meta.helm.sh/release-namespace: monitoring
creationTimestamp: "2021-10-25T14:59:20Z"
labels:
app: loki
app.kubernetes.io/managed-by: Helm
chart: loki-2.5.0
heritage: Helm
release: loki
name: loki
namespace: monitoring
resourceVersion: "18279654"
uid: 7eba14cb-41c9-445d-bedb-4b88647f1ebc
spec:
clusterIP: 172.20.217.122
clusterIPs:
- 172.20.217.122
ports:
- name: metrics
port: 80
protocol: TCP
targetPort: 3100
selector:
app: loki
release: loki
sessionAffinity: None
type: ClusterIP
status:
loadBalancer:
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
generation: 14
name: grafana-vs
namespace: monitoring
resourceVersion: "18256422"
uid: e8969da7-062c-49d6-9152-af8362c08016
spec:
gateways:
- my-gateway
hosts:
- '*'
http:
- match:
- uri:
prefix: /grafana/
name: grafana-ui
rewrite:
uri: /
route:
- destination:
host: prometheus-operator-grafana.monitoring.svc.cluster.local
port:
number: 80
- match:
- uri:
prefix: /loki
name: loki-ui
rewrite:
uri: /loki
route:
- destination:
host: loki.monitoring.svc.cluster.local
port:
number: 80
---
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
"apiVersion":"networking.istio.io/v1alpha3","kind":"Gateway","metadata":"annotations":,"name":"my-gateway","namespace":"monitoring","spec":"selector":"istio":"ingressgateway","servers":["hosts":["*"],"port":"name":"http","number":80,"protocol":"HTTP"]
creationTimestamp: "2021-10-18T12:28:05Z"
generation: 1
name: my-gateway
namespace: monitoring
resourceVersion: "16618724"
uid: 9b254a22-958c-4cc4-b426-4e7447c03b87
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP
---
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/scheme: internal
alb.ingress.kubernetes.io/target-type: ip
kubectl.kubernetes.io/last-applied-configuration: |
"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":"annotations":"alb.ingress.kubernetes.io/scheme":"internal","alb.ingress.kubernetes.io/target-type":"ip","kubernetes.io/ingress.class":"alb","name":"ingress-alb","namespace":"istio-system","spec":"rules":["http":"paths":["backend":"serviceName":"istio-ingressgateway","servicePort":80,"path":"/*"]]
kubernetes.io/ingress.class: alb
finalizers:
- ingress.k8s.aws/resources
generation: 1
name: ingress-alb
namespace: istio-system
resourceVersion: "4447931"
uid: 74b31fba-0f03-41c6-a63f-6a10dee8780c
spec:
rules:
- http:
paths:
- backend:
service:
name: istio-ingressgateway
port:
number: 80
path: /*
pathType: ImplementationSpecific
status:
loadBalancer:
ingress:
- hostname: internal-k8s-istiosys-ingressa-25a256ef4d-1368971909.us-east-1.elb.amazonaws.com
kind: List
metadata:
resourceVersion: ""
selfLink: ""
入口与 AWS ALB 相关联。
我想从 ALB URL 访问 Loki,例如 http(s)://my-alb-url/loki 我希望我现在已经提供了所需的详细信息。 让我知道。谢谢。
【问题讨论】:
【参考方案1】:...how can I access loki URL from applications account so that it can be configured in promtail in applications a/c?
您没有描述当您使用上面的外部LB时应该工作的问题,无论如何,由于此方法将通过Internet,因此安全风险较高,出口成本考虑日志记录量。在这种情况下,您可以使用Privatelink,请参阅第 16 页共享服务。您的 promtail 将使用 ENI DNS 名称作为 loki 目标。
【讨论】:
感谢您的回复@gohm'c。我试图使用 LB 公开服务,但问题是如果我按照我在帖子中提到的建议链接进行更改,Loki 不会被公开,我无法从 Grafana 仪表板以外的任何其他地方访问它。那么想知道如何使用 LB 在 EKS 集群之外公开 Loki? 您发布的 GitHub 问题链接主要是针对 loki 的反向代理,它希望进行路径重写。但是您的问题读起来就像您希望 pod 在 diff 中运行。 EKS/帐户能够登录到特定 EKS/帐户中的 loki,对吗?如果是这样,如果不是 PrivateLink(推荐),您可以使用 NLB。 是的。我正在尝试公开 Loki 服务,但是当我进行更改时,无法通过 NLB 访问 loki 服务,这就是我卡住的地方。如果您知道我可以参考配置更改的任何参考,请告诉我。我尝试过,但仍在等待成功。 在问题中发布您使用的服务规范expose the Loki service
。
您好,请查看问题中的更新以上是关于EKS 中的 AWS 跨账户 Loki promtail 设置的主要内容,如果未能解决你的问题,请参考以下文章
另一个账户中来自 Lambda 的 AWS 跨账户 S3 PutObject
AWS 跨账户 - 对 AWS CDK 中的参数的参数存储/Secrets Manager 访问