$ oc get cm kourier-bootstrap -n knative-serving-ingress -o yaml
Kourier 是一个轻量级的 Kubernetes 原生 Knative Serving Ingress。Kourier 充当 Knative 的网关,将 HTTP 流量路由到 Knative 服务。
Kourier 中的 Envoy 代理组件处理 Knative 服务的入站和出站 HTTP 流量。默认情况下,Kourier 在 `knative-serving-ingress` 命名空间中的 `kourier-bootstrap` 配置映射中包含一个 Envoy bootstrap 配置。
要获取当前的 Envoy bootstrap 配置,请运行以下命令
$ oc get cm kourier-bootstrap -n knative-serving-ingress -o yaml
例如,使用默认配置,示例命令生成的输出包含以下摘录
Name: kourier-bootstrap
Namespace: knative-serving-ingress
Labels: app.kubernetes.io/component=net-kourier
app.kubernetes.io/name=knative-serving
app.kubernetes.io/version=release-v1.10
networking.knative.dev/ingress-provider=kourier
serving.knative.openshift.io/ownerName=knative-serving
serving.knative.openshift.io/ownerNamespace=knative-serving
Annotations: manifestival: new
dynamic_resources:
ads_config:
transport_api_version: V3
api_type: GRPC
rate_limit_settings: {}
grpc_services:
- envoy_grpc: {cluster_name: xds_cluster}
cds_config:
resource_api_version: V3
ads: {}
lds_config:
resource_api_version: V3
ads: {}
node:
cluster: kourier-knative
id: 3scale-kourier-gateway
static_resources:
listeners:
- name: stats_listener
address:
socket_address:
address: 0.0.0.0
port_value: 9000
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: stats_server
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
virtual_hosts:
- name: admin_interface
domains:
- "*"
routes:
- match:
safe_regex:
regex: '/(certs|stats(/prometheus)?|server_info|clusters|listeners|ready)?'
headers:
- name: ':method'
string_match:
exact: GET
route:
cluster: service_stats
clusters:
- name: service_stats
connect_timeout: 0.250s
type: static
load_assignment:
cluster_name: service_stats
endpoints:
lb_endpoints:
endpoint:
address:
pipe:
path: /tmp/envoy.admin
- name: xds_cluster
# This keepalive is recommended by envoy docs.
# https://envoy.k8s.ac.cn/docs/envoy/latest/api-docs/xds_protocol
typed_extension_protocol_options:
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
"@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
explicit_http_config:
http2_protocol_options:
connection_keepalive:
interval: 30s
timeout: 5s
connect_timeout: 1s
load_assignment:
cluster_name: xds_cluster
endpoints:
lb_endpoints:
endpoint:
address:
socket_address:
address: "net-kourier-controller.knative-serving-ingress.svc.cluster.local."
port_value: 18000
type: STRICT_DNS
admin:
access_log:
- name: envoy.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
address:
pipe:
path: /tmp/envoy.admin
layered_runtime:
layers:
- name: static-layer
static_layer:
envoy.reloadable_features.override_request_timeout_by_gateway_timeout: false
Events: <none>
Kourier 中的 Envoy 代理组件处理 Knative 服务的入站和出站 HTTP 流量。默认情况下,Kourier 在 `knative-serving-ingress` 命名空间中的 `kourier-bootstrap` 配置映射中包含一个 Envoy bootstrap 配置。您可以将其更改为自定义配置映射。
您已安装 OpenShift Serverless Operator 和 Knative Serving。
您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。
通过更改 `KnativeServing` 自定义资源 (CR) 中的 `spec.ingress.kourier.bootstrap-configmap` 字段来指定自定义引导配置映射。
apiVersion: operator.knative.dev/v1beta1
kind: KnativeServing
metadata:
name: knative-serving
namespace: knative-serving
spec:
config:
network:
ingress-class: kourier.ingress.networking.knative.dev
ingress:
kourier:
bootstrap-configmap: my-configmap
enabled: true
# ...
您可以更改 envoy bootstrap 配置以启用对管理员界面的访问。
此过程假定您具备足够的 Knative 知识,因为更改 envoy bootstrap 配置可能会导致 Knative 失败。Red Hat 不支持未经测试或未随产品一起提供的自定义配置。 |
您已安装 OpenShift Serverless Operator 和 Knative Serving。
您拥有 OpenShift Container Platform 的集群管理员权限,或者您拥有 Red Hat OpenShift Service on AWS 或 OpenShift Dedicated 的集群或专用管理员权限。
要启用管理员界面访问,请在您的引导配置映射中找到此配置
pipe:
path: /tmp/envoy.admin
将其替换为以下配置
socket_address: (1)
address: 127.0.0.1
port_value: 9901
1 | 此配置允许访问环回地址 (127.0.0.1) 和端口 9901 上的 Envoy 管理界面。 |
在 `service_stats` 集群配置和 `admin` 配置中应用 `socket_address` 配置。
第一个在 `service_stats` 集群配置中
clusters:
- name: service_stats
connect_timeout: 0.250s
type: static
load_assignment:
cluster_name: service_stats
endpoints:
lb_endpoints:
endpoint:
address:
socket_address:
address: 127.0.0.1
port_value: 9901
第二个在 `admin` 配置中
admin:
access_log:
- name: envoy.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
address:
socket_address:
address: 127.0.0.1
port_value: 9901