问题标签 [envoyproxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kubernetes - 在 GRPC 服务上使用 JWT 进行 Istio 最终用户身份验证
我想通过 Istio 为 GRPC 服务设置身份验证策略。
目前,可以在常规 HTTP 服务上添加策略,因为您可以使用Authorization
标头将 JWT 令牌传递给服务。我有点迷茫,因为它似乎不是 GRPC 服务的类似策略(您可以在请求的元数据中包含令牌)。
有没有人设法将身份验证策略添加到 Istio 管理的 GRPC 服务?
kubernetes - 使用带有 secret 和 configmap 的应用程序进行 Istio 注入
我正在尝试使用Istio/envoy入口测试 SSL 直通,因为我能够使用 nginx 入口控制器来实现它。所以我创建了一个 nginx https 部署并测试了 deployment/pod/service 的工作情况。
但是,当我像往常一样运行它时,kubectl apply -f <(istioctl kube-inject -f ~/nginx/nginx-app.yaml)
部署不会继续(因此没有创建 pod)。
似乎是音量和安装导致了问题。似乎 Istio 也在尝试安装这些。
有没有人有见识?
谢谢!
istio - 如何添加额外的 http 标头代表 istio-proxy 的 auth 主体?
我在这里使用 Auth0 jwt 令牌成功地遵循了这个最终用户身份验证 Istio 教程。
现在,我有一个用例,我需要注入特定的 http 标头,指定主体及其由该令牌授予的范围权限。怎么做?有没有关于它的指导方针?
redis - 如何在 Kubernetes 中为 redis 服务配置 envoy 边缘代理?
我想将在 kubernetes 中运行的 Redis HA 服务公开给在云外运行的客户端。为此,我正在尝试设置支持 Redis 的特使。我正在使用大使,它是 kubernetes 特使的包装器。按照这个文档进行初始设置。我是 Envoy 和 kubernetes 的新手。
如何将大使配置为我的 Redis 服务的代理?
我猜有某个地方可以在代理中指定 Redis 服务的地址。很难获得这些信息。此页面指的是特使文档中的 Redis 代理,但我不知道在哪里进行更改。
另外,对于我的用例,我只对边缘代理功能感兴趣,而不是特使的服务代理功能。
kubernetes - 使用 RBAC 网络过滤器阻止 Envoy 代理中服务的入口或出口
我想尝试在 Envoy 代理中配置一个过滤器,以根据某些 IP、主机名、路由表等来阻止服务的入口和出口。
我已经搜索了文档,并认为这是可能的。但没有得到任何例子,它的用法。
有人可以指出一些如何做到的例子吗?
此页面上有一个配置示例: https ://www.envoyproxy.io/docs/envoy/latest/api-v2/config/rbac/v2alpha/rbac.proto
- 但这是针对服务帐户的,例如在 Kubernetes 中。
最接近我想要的,我可以在这个页面中看到: https ://www.envoyproxy.io/docs/envoy/latest/configuration/network_filters/rbac_filter#statistics
- 提到,“过滤器支持基于连接属性(IP、端口、SSL 主题)的安全列表 (ALLOW) 或阻止列表 (DENY) 策略集的配置。”
- 但它没有显示如何做到这一点。
我想出了这样的事情:
但我无法应用此网络过滤器。所有配置都给我配置错误。
load-balancing - 如何使用 Envoy 解决此节点关联性
BeginTransaction
我提供了一个 gRPC 服务,不幸的是它必须在和Commit
API 调用之间具有节点亲和性。
消费者 API 调用顺序通常是:
BeginTransaction()
返回txnID
DoStuff(txnID, moreParams...)
DoStuff(txnID, moreParams...)
...
Commit(txnID)
消费者可以是同时调用我的 API 的多线程进程,因此他们可能在任何时间点使用数百个事务。
如果我使用 Envoy 代理作为我的 Service 入口点,BeginTransaction
应该路由到集群中任何健康的节点,但它必须确保使用返回的后续调用txnID
被路由到同一个节点。
在我的情况下,在 http 标头或消息的任何部分中传递任何上下文信息都是可以接受的。
kubernetes - 代表请求处理时间的大使指标
我已将大使部署到 Istio。StatsD 导出器已就位,Grafana 仪表板 4698 ( https://grafana.com/dashboards/4698 )。
但似乎没有指标简单地显示获得响应所需的时间。
envoy_listener_0_0_0_0_80_downstream_cx_length_ms - 具有令人困惑的值(所有分位数) http_request_duration_microseconds - 当转换为毫秒时,会给出 10-20 毫秒(0.5 - 0.99 分位数)之类的值,这也不是真实的。
只有 2 个指标正常工作: envoy_cluster_cluster_ext_auth_upstream_rq_time envoy_cluster_cluster_ext_ratelimit_upstream_rq_time
但是这些显示了身份验证和速率限制服务处理请求所花费的时间。
我怎样才能花时间处理整个请求?从它打到大使的那一刻到收到回应的那一刻?
kubernetes - Istio 未向 Jaeger 报告 https 跟踪
描述错误 我们有一个运行 envoy sidecar 代理的容器,使用 Istio 自己的示例为端口 443 提供服务/部署:sample/https/nginx。我们可以卷曲容器以很好地获取 nginx 页面,但在 Jaeger 中绝对看不到 https 调用的痕迹。只要我们在部署/服务中将端口切换到 80,就会在 Jaeger 中看到 HTTP 调用
预期行为 我们应该看到对容器的 HTTP/HTTPS 调用的跟踪。
重现错误的步骤:
创建 nginx 配置:
/li>创建 nginx 部署:
/li>curl -kv https://service-ip
给 200- Jaeger 中没有 HTTPS 的痕迹
版本
安装
环境 - 在 AWS EKS 中运行
集群状态 - 附加 的archite.tar.gz
编辑 1
用于服务的 yaml - jaeger-query
:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: 2018-10-02T02:32:23Z
labels:
app: jaeger
chart: tracing-1.0.1
heritage: Tiller
jaeger-infra: jaeger-service
release: istio
name: jaeger-query
namespace: istio-system
resourceVersion: "5259733"
selfLink: /api/v1/namespaces/istio-system/services/jaeger-query
uid: 6513eded-c5eb-11e8-860c-12504ba0df7c
spec:
clusterIP: 172.20.14.251
ports:
- name: query-http
port: 16686
protocol: TCP
targetPort: 16686
selector:
app: jaeger
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
部署: istio-tracing
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: 2018-10-02T02:32:23Z
generation: 1
labels:
app: istio-tracing
chart: tracing-1.0.1
heritage: Tiller
release: istio
name: istio-tracing
namespace: istio-system
resourceVersion: "5259783"
selfLink: /apis/extensions/v1beta1/namespaces/istio-system/deployments/istio-tracing
uid: 65056099-c5eb-11e8-860c-12504ba0df7c
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: jaeger
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
sidecar.istio.io/inject: "false"
creationTimestamp: null
labels:
app: jaeger
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
weight: 2
- preference:
matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- ppc64le
weight: 2
- preference:
matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- s390x
weight: 2
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values:
- amd64
- ppc64le
- s390x
containers:
- env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: COLLECTOR_ZIPKIN_HTTP_PORT
value: "9411"
- name: MEMORY_MAX_TRACES
value: "50000"
image: docker.io/jaegertracing/all-in-one:1.5
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 16686
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
name: jaeger
ports:
- containerPort: 9411
protocol: TCP
- containerPort: 16686
protocol: TCP
- containerPort: 5775
protocol: UDP
- containerPort: 6831
protocol: UDP
- containerPort: 6832
protocol: UDP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 16686
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources:
requests:
cpu: 10m
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
status:
availableReplicas: 1
conditions:
- lastTransitionTime: 2018-10-02T02:32:23Z
lastUpdateTime: 2018-10-02T02:32:23Z
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: 2018-10-02T02:32:23Z
lastUpdateTime: 2018-10-02T02:32:27Z
message: ReplicaSet "istio-tracing-ff94688bb" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 1
readyReplicas: 1
replicas: 1
updatedReplicas: 1
kubernetes - 使用具有多个端口和协议的相同 Istio Gateway
我正在尝试使用两种不同的协议(GRPC 和 HTTP)配置 istio 网关
现在,我有两个不同的网关,分别用于 GRPC 和 HTTP,如下所示
是否可以使用具有不同协议和端口的相同网关?
mongodb - 无法从 istio 访问外部 mongo db 服务器
我正在尝试使用 istio 和 envoy 为需要连接到外部 mongodB 服务器的服务实现服务网格,但由于某些原因,我的服务无法从 istio 代理访问外部 mongodB 服务器
下面是我的服务的网关和虚拟服务配置
我添加了出口服务条目,但仍然不起作用