2.6. 使用操作器在 OpenShift 上 3scale 的部署配置选项
本节介绍了使用操作器在 OpenShift 上红帽 3scale API 管理的部署配置选项。
先决条件
- 配置容器 registry 身份验证
- 首先使用操作器部署 3scale 要求您按照在 OpenShift 上安装 3scale Operator中的步骤进行操作
OpenShift Container Platform 4.x
- 在 OpenShift 集群中具有管理员特权的用户帐户。
2.6.1. 为嵌入式 APIcast 配置代理参数 复制链接链接已复制到粘贴板!
作为 3scale 管理员,您可以为嵌入式 APIcast staging 和 production 配置代理参数。本节提供了在 APIManager 自定义资源中指定代理参数的参考信息。换句话说,您使用 3scale operator(一个 APIManager 自定义资源)在 OpenShift 上部署 3scale。
您可以在首次部署 APIManager CR 时指定这些参数,或者您可以更新部署的 APIManager CR,Operator 会协调更新。请参阅部署 APIManager 自定义资源。
嵌入式 APIcast 有四个与代理相关的配置参数:
-
allProxy -
httpProxy -
httpsProxy -
noProxy
allProxy
allProxy 参数指定在请求没有指定协议相关的代理时,用来连接到服务的 HTTP 或 HTTPS 代理。
设置代理后,通过将 allProxy 参数设置为代理的地址来配置 APIcast。代理不支持身份验证。换句话说,APIcast APIcast 不会将经过身份验证的用户发送到代理。
allProxy 参数的值是一个字符串,没有默认值,且不需要该参数。使用此格式设置 spec.apicast.productionSpec.allProxy 参数或 spec.apicast.stagingSpec.allProxy 参数:
<scheme>://<host>:<port>
例如:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
apicast:
productionSpec:
allProxy: http://forward-proxy:80
stagingSpec:
allProxy: http://forward-proxy:81
httpProxy
httpProxy 参数指定用于连接 HTTP 服务的 HTTP 代理。
设置代理后,通过将 httpProxy 参数设置为代理的地址来配置 APIcast。代理不支持身份验证。换句话说,APIcast APIcast 不会将经过身份验证的用户发送到代理。
httpProxy 参数的值是一个字符串,没有默认值,且不需要该参数。使用此格式设置 spec.apicast.productionSpec.httpProxy 参数或 spec.apicast.stagingSpec.httpProxy 参数:
http://<host>:<port>
例如:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
apicast:
productionSpec:
httpProxy: http://forward-proxy:80
stagingSpec:
httpProxy: http://forward-proxy:81
httpsProxy
httpsProxy 参数指定用于连接服务的 HTTPS 代理。
设置代理后,通过将 httpsProxy 参数设置为代理的地址来配置 APIcast。代理不支持身份验证。换句话说,APIcast APIcast 不会将经过身份验证的用户发送到代理。
httpsProxy 参数的值是一个字符串,没有默认值,且不需要该参数。使用此格式设置 spec.apicast.productionSpec.httpsProxy 参数或 spec.apicast.stagingSpec.httpsProxy 参数:
https://<host>:<port>
例如:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
apicast:
productionSpec:
httpsProxy: https://forward-proxy:80
stagingSpec:
httpsProxy: https://forward-proxy:81
noProxy
noProxy 参数指定以逗号分隔的主机名和域名列表。当请求包含其中一个名称时,APIcast 不会代理请求。
如果您需要停止对代理的访问,例如在维护操作过程中,将 noProxy 参数设置为星号(*)。这与所有请求中指定的所有主机匹配,并有效地禁用任何代理。
noProxy 参数的值是一个字符串,没有默认值,且不需要该参数。指定以逗号分隔的字符串,以设置 spec.apicast.productionSpec.noProxy 参数或 spec.apicast.stagingSpec.noProxy 参数。例如:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
apicast:
productionSpec:
noProxy: theStore,company.com,big.red.com
stagingSpec:
noProxy: foo,bar.com,.extra.dot.com
2.6.2. 使用 3scale Operator 注入自定义虚拟环境 复制链接链接已复制到粘贴板!
在使用嵌入式 APIcast 的 3scale 安装中,您可以使用 3scale 操作器注入自定义环境。嵌入式 APIcast 也称为受管或托管 APIcast。自定义环境定义 APIcast 适用于网关服务的所有上游 API 的行为。要创建自定义环境,请在 Lua 代码中定义全局配置。
您可在 3scale 安装前或之后注入自定义环境。在注入自定义环境并在 3scale 安装后,您可以删除自定义环境。3scale 操作器协调更改。
先决条件
- 已安装 3scale Operator。
流程
编写用于定义您要注入的自定义环境的 Lua 代码。例如,以下
env1.lua文件显示了 3scale 操作器为所有服务加载的自定义日志策略。local cjson = require('cjson') local PolicyChain = require('apicast.policy_chain') local policy_chain = context.policy_chain local logging_policy_config = cjson.decode([[ { "enable_access_logs": false, "custom_logging": "\"{{request}}\" to service {{service.id}} and {{service.name}}" } ]]) policy_chain:insert( PolicyChain.load_policy('logging', 'builtin', logging_policy_config), 1) return { policy_chain = policy_chain, port = { metrics = 9421 }, }从定义自定义环境的 Lua 文件创建 secret。例如:
oc create secret generic custom-env-1 --from-file=./env1.luasecret 可以包含多个自定义虚拟环境。为定义自定义环境的每个文件指定
'-from-file选项。Operator 会加载每个自定义环境。定义
APIManager自定义资源来引用您刚才创建的 secret。以下示例显示了相对于引用定义自定义环境的 secret 的内容。apiVersion: apps.3scale.net/v1alpha1 kind: APIManager metadata: name: apimanager-apicast-custom-environment spec: wildcardDomain: <desired-domain> apicast: productionSpec: customEnvironments: - secretRef: name: custom-env-1 stagingSpec: customEnvironments: - secretRef: name: custom-env-1APIManager自定义资源可以引用定义自定义虚拟环境的多个 secret。Operator 会加载每个自定义环境。创建添加自定义虚拟环境的
APIManager自定义资源。例如:oc apply -f apimanager.yaml
后续步骤
您无法更新定义自定义环境的 secret 的内容。如果需要更新自定义环境,您可以执行以下操作之一:
-
推荐的选项是创建具有不同名称的 secret,并更新
APIManager自定义资源字段customEnvironments[].secretRef.name。Operator 会触发滚动更新并加载更新的自定义环境。 -
另外,您可以通过将
spec.apicast.productionSpec.replicas或spec.apicast.stagingSpec.replicas设置为 0 来更新现有的 secret,然后通过将spec.apicast.productionSpec.replicas或spec.apicast.stagingSpec.replicas设置为其先前的值来再次重新部署 APIcast。
2.6.3. 使用 3scale Operator 注入自定义策略 复制链接链接已复制到粘贴板!
在使用嵌入式 APIcast 的 3scale 安装中,您可以使用 3scale 操作器来注入自定义策略。嵌入式 APIcast 也称为受管或托管 APIcast。注入自定义策略会将策略代码添加到 APIcast。然后,您可以使用以下任一策略将自定义策略添加到 API 产品策略链中:
- 3scale API
-
产品自定义资源
要使用 3scale 管理门户将自定义策略添加到产品策略链中,还必须使用 CustomPolicyDefinition 自定义资源注册自定义策略的 schema。自定义策略注册是只有在您要使用管理门户配置产品策略链时才需要。
您可以将自定义策略注入为 3scale 安装的一部分或之后。在注入自定义策略并在 3scale 安装后,您可以通过从 APIManager CR 中删除其规格来删除自定义策略。3scale 操作器协调更改。
先决条件
- 您需要安装或您之前安装了 3scale Operator。
-
您已定义一个自定义策略,如写您自己的策略中所述。即,已创建了定义自定义策略的
my-policy.lua、apicast-policy.json和init.lua文件,
流程
从定义一个自定义策略的文件创建 secret。例如:
oc create secret generic my-first-custom-policy-secret \ --from-file=./apicast-policy.json \ --from-file=./init.lua \ --from-file=./my-first-custom-policy.lua如果您有多个自定义策略,请为每个自定义策略创建一个 secret。secret 只能包含一个自定义策略。
定义一个
APIManager自定义资源来引用包含自定义策略的每个 secret。您可以为 APIcast staging 和 APIcast production 指定相同的 secret。以下示例显示有关引用包含自定义策略的 secret 的内容。apiVersion: apps.3scale.net/v1alpha1 kind: APIManager metadata: name: apimanager-apicast-custom-policy spec: apicast: stagingSpec: customPolicies: - name: my-first-custom-policy version: "0.1" secretRef: name: my-first-custom-policy-secret - name: my-second-custom-policy version: "0.1" secretRef: name: my-second-custom-policy-secret productionSpec: customPolicies: - name: my-first-custom-policy version: "0.1" secretRef: name: my-first-custom-policy-secret - name: my-second-custom-policy version: "0.1" secretRef: name: my-second-custom-policy-secretAPIManager自定义资源可以引用定义不同自定义策略的多个 secret。Operator 加载每个自定义策略。创建
APIManager自定义资源来引用包含自定义策略的 secret。例如:oc apply -f apimanager.yaml
后续步骤
您无法更新定义自定义策略的 secret 的内容。如果您需要更新自定义策略,您可以执行以下操作之一:
-
推荐的选项是使用不同的名称创建 secret,并更新
APIManager自定义资源customPolicies部分以引用新 secret。Operator 会触发滚动更新并加载更新的自定义策略。 -
另外,您可以通过将
spec.apicast.productionSpec.replicas或spec.apicast.stagingSpec.replicas设置为 0 来更新现有的 secret,然后通过将spec.apicast.productionSpec.replicas或spec.apicast.stagingSpec.replicas设置为其先前的值来再次重新部署 APIcast。
2.6.4. 使用 3scale operator 配置 OpenTracing 复制链接链接已复制到粘贴板!
在使用嵌入式 APIcast 的 3scale 安装中,您可以使用 3scale operato 来配置 OpenTracing。您可以在 stage 或生产环境或这两种环境中配置 OpenTracing。通过启用 OpenTracing,您可以在 APIcast 实例上获取更多见解和更好的可观察性。
先决条件
- 3scale Operator 已安装,或者在安装过程中。
- 前提条件在配置 APIcast 以使用 OpenTracing中列出。
- Jaeger 已安装。
流程
在
stringData.config中包含您的 OpenTracing 配置详情的 secret。这是包含您的 OpenTracing 配置详细信息的属性的唯一有效值。任何其他规格都阻止 APIcast 收到您的 OpenTracing 配置详细信息。以下示例显示了一个有效的 secret 定义:apiVersion: v1 kind: Secret metadata: name: myjaeger stringData: config: |- { "service_name": "apicast", "disabled": false, "sampler": { "type": "const", "param": 1 }, "reporter": { "queueSize": 100, "bufferFlushInterval": 10, "logSpans": false, "localAgentHostPort": "jaeger-all-in-one-inmemory-agent:6831" }, "headers": { "jaegerDebugHeader": "debug-id", "jaegerBaggageHeader": "baggage", "TraceContextHeaderName": "uber-trace-id", "traceBaggageHeaderPrefix": "testctx-" }, "baggage_restrictions": { "denyBaggageOnInitializationFailure": false, "hostPort": "127.0.0.1:5778", "refreshInterval": 60 } } type: Opaque创建 secret.例如,如果您将以前的 secret 定义保存到
myjaeger.yaml文件中,您将运行以下命令:oc create secret generic myjaeger --from-file myjaeger.yaml定义一个指定
OpenTracing属性的APIManager自定义资源。在 CR 定义中,将openTracing.tracingConfigSecretRef.name属性设置为包含您的 OpenTracing 配置详情的 secret 的名称。下例仅显示了与配置 OpenTracing 相关的内容。apiVersion: apps.3scale.net/v1alpha1 kind: APIManager metadata: name: apimanager1 spec: apicast: stagingSpec: ... openTracing: enabled: true tracingLibrary: jaeger tracingConfigSecretRef: name: myjaeger productionSpec: ... openTracing: enabled: true tracingLibrary: jaeger tracingConfigSecretRef: name: myjaeger创建配置 OpenTracing 的
APIManager自定义资源。例如,如果您在apimanager1.yaml文件中保存APIManager自定义资源,您将运行以下命令:oc apply -f apimanager1.yaml
后续步骤
根据 OpenTracing 的安装方式,您应该在 Jaeger 服务用户界面中看到 trace。
其他资源
2.6.5. 使用 3scale operator 在 pod 级别启用 TLS 复制链接链接已复制到粘贴板!
3scale 部署两个 APIcast 实例,一个用于 production,另一个用于 staging。TLS 可以只为生产环境或只为 staging 环境启用,或为两个实例都启用 TLS。
先决条件
- 启用 TLS 的有效证书。
流程
从有效的证书创建 secret,例如:
oc create secret tls mycertsecret --cert=server.crt --key=server.key配置会公开
APIManagerCRD 中的 secret 引用。您可以创建 secret,然后按如下所示引用APIManager自定义资源中的 secret 名称:-
生产环境:
APIManagerCR 在.spec.apicast.productionSpec.httpsCertificateSecretRef字段中公开证书。 Staging:
APIManagerCR 在.spec.apicast.stagingSpec.httpsCertificateSecretRef字段中公开证书。另外,您还可以配置以下内容:
-
httpsPort表示哪个端口 APIcast 应开始侦听 HTTPS 连接。如果这与 HTTP 端口 APIcast 有冲突,则仅将此端口用于 HTTPS。 httpsVerifyDepth定义客户端证书链的最大长度。注意提供有效的证书和
APImanagerCR 的引用。如果配置可以访问httpsPort,但不能访问httpsCertificateSecretRef,APIcast 使用嵌入的自签名证书。不建议这样做。
-
生产环境:
- 点 Operators > Installed Operators。
- 从 Installed Operators 列表中,点 3scale Operator。
- 点 API Manager 选项卡。
- 点 Create APIManager。
在编辑器中添加以下 YAML 定义。
如果为生产环境启用,请配置以下 YAML 定义:
spec: apicast: productionSpec: httpsPort: 8443 httpsVerifyDepth: 1 httpsCertificateSecretRef: name: mycertsecret如果为 staging 启用,请配置以下 YAML 定义:
spec: apicast: stagingSpec: httpsPort: 8443 httpsVerifyDepth: 1 httpsCertificateSecretRef: name: mycertsecret
- 点 Create。
2.6.6. 评估部署的概念验证 复制链接链接已复制到粘贴板!
以下小节描述了适用于 3scale 评估部署的概念验证的配置选项。此部署默认使用内部数据库。
外部数据库的配置是生产环境的标准部署选项。
2.6.6.1. 默认部署配置 复制链接链接已复制到粘贴板!
容器将具有 Kubernetes 资源限值和请求。
- 这样可确保最低性能水平。
- 它限制资源以允许外部服务和解决方案分配。
- 部署内部数据库.
文件存储将基于 Persistence 卷(PV)。
- 一个系统将需要读取、写入、执行(RWX)访问模式。
- OpenShift 配置为在请求时提供它们。
- 将 MySQL 部署为内部关系数据库。
默认配置选项适合客户的概念验证(PoC)或评估。
可以使用 APIManager 自定义资源中的特定字段值覆盖一个或多个默认配置选项。3scale 操作器允许所有可用组合,而模板则允许固定的部署配置集。例如,3scale 操作器允许在评估模式和外部数据库模式中部署 3scale。模板不允许这一具体的部署配置。模板仅适用于最常用的配置选项。
2.6.6.2. 评估安装 复制链接链接已复制到粘贴板!
对于和评估安装,容器将不会指定 kubernetes 资源限值和请求。例如:
- 内存占用较小
- 快速启动
- 可以在笔记本电脑上运行
- 适用于售前/销售演示
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
wildcardDomain: lvh.me
resourceRequirementsEnabled: false
其他资源
- 如需更多信息,请参阅 APIManager 自定义资源。
2.6.7. 安装外部数据库 复制链接链接已复制到粘贴板!
外部数据库安装适合需要高可用性(HA)或计划重复使用的数据库。
启用 3scale 外部数据库安装模式时,您可以将以下一个或多个数据库配置为 3scale 的外部:
-
backend-redis -
system-redis -
system-database(mysql,postgresql, 或oracle) -
zync-database
以下数据库版本支持 3scale 2.8 及以上版本:
| 数据库 | 版本 |
|---|---|
| redis | 5.0 |
| MySQL | 8.0 |
| PostgreSQL | 13 |
在创建 APIManager 自定义资源 以部署 3scale 之前,您必须使用 OpenShift 机密为外部数据库提供以下连接设置。
2.6.7.1. 后端 Redis secret 复制链接链接已复制到粘贴板!
部署两个外部 Redis 实例并填写连接设置,如下例所示:
apiVersion: v1
kind: Secret
metadata:
name: backend-redis
stringData:
REDIS_STORAGE_URL: "redis://backend-redis-storage"
REDIS_STORAGE_SENTINEL_HOSTS: "redis://sentinel-0.example.com:26379,redis://sentinel-1.example.com:26379, redis://sentinel-2.example.com:26379"
REDIS_STORAGE_SENTINEL_ROLE: "master"
REDIS_QUEUES_URL: "redis://backend-redis-queues"
REDIS_QUEUES_SENTINEL_HOSTS: "redis://sentinel-0.example.com:26379,redis://sentinel-1.example.com:26379, redis://sentinel-2.example.com:26379"
REDIS_QUEUES_SENTINEL_ROLE: "master"
type: Opaque
Secret 名称必须是 backend-redis。
2.6.7.2. 系统 Redis secret 复制链接链接已复制到粘贴板!
部署两个外部 Redis 实例并填写连接设置,如下例所示:
apiVersion: v1
kind: Secret
metadata:
name: system-redis
stringData:
URL: "redis://system-redis"
SENTINEL_HOSTS: "redis://sentinel-0.example.com:26379,redis://sentinel-1.example.com:26379, redis://sentinel-2.example.com:26379"
SENTINEL_ROLE: "master"
NAMESPACE: ""
type: Opaque
Secret 名称必须是 system-redis。
2.6.7.3. 系统数据库 secret 复制链接链接已复制到粘贴板!
-
Secret 名称必须是
system-database。
当您部署 3scale 时,系统数据库有三个替代方案。为每个替代的相关 secret 配置不同的属性和值。
- MySQL
- PostgreSQL
- Oracle 数据库
要部署 MySQL、PostgreSQL 或 Oracle Database 系统数据库 secret,请填写连接设置,如下例所示:
MySQL 系统数据库 secret
apiVersion: v1
kind: Secret
metadata:
name: system-database
stringData:
URL: "mysql2://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
type: Opaque
要将 MySQL 8.0 与 3scale 2.12 搭配使用,您必须将身份验证插件设置为 mysql_native_password。在 MySQL 配置文件中添加以下内容:
[mysqld]
default_authentication_plugin=mysql_native_password
PostgreSQL 系统数据库 secret
apiVersion: v1
kind: Secret
metadata:
name: system-database
stringData:
URL: "postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
type: Opaque
Oracle 系统数据库 secret
apiVersion: v1
kind: Secret
metadata:
name: system-database
stringData:
URL: "oracle-enhanced://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
ORACLE_SYSTEM_PASSWORD: "{SYSTEM_PASSWORD}"
type: Opaque
-
{DB_USER}和{DB_PASSWORD}是常规的非系统用户的用户名和密码。 -
{DB_NAME}是 Oracle 数据库服务名称。
2.6.7.4. Zync 数据库 secret 复制链接链接已复制到粘贴板!
在 zync 数据库设置中,当 spec.externalComponents.zync.database 字段被设置为 true 时,您必须在部署 3scale 前创建一个名为 zync 的 secret。在这个 secret 中,将 DATABASE_URL 和 DATABASE_PASSWORD 字段设置为指向外部 zync 数据库的值,例如:
apiVersion: v1
kind: Secret
metadata:
name: zync
stringData:
DATABASE_URL: postgresql://<zync-db-user>:<zync-db-password>@<zync-db-host>:<zync-db-port>/zync_production
ZYNC_DATABASE_PASSWORD: <zync-db-password>
type: Opaque
zync 数据库必须使用高可用性模式。
2.6.7.5. 用于部署 3scale 的 APIManager 自定义资源 复制链接链接已复制到粘贴板!
-
当启用外部组件时,必须在部署 3scale 前为每个外部组件(
backend-redis、system-redis、system-database、zync)创建一个 secret。 -
对于外部
system-database,仅选择一种数据库来外部化。
APIManager 自定义资源的配置将取决于您的 3scale 部署外部您选择的数据库。
如果您的 backend-redis、system-redis 或 system-database 对于 3scale 是外部的,APIManager 自定义资源必须填充对应的 externalComponents 对象。例如:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
wildcardDomain: lvh.me
externalComponents:
system:
database: true
以下示例演示了使用 Amazon Simple Storage Service(Amazon S3)而不是持久性卷声明(PVC)的 3scale FileStorage。
在创建 APIManager 自定义资源以部署 3scale 之前,需要使用 openshift secret 提供 S3 服务的连接设置。
2.6.8.1. Amazon S3 secret 复制链接链接已复制到粘贴板!
AN AWS S3 兼容提供程序可以在带有 AWS_HOSTNAME、AWS_PATH_STYLE 和 AWS_PROTOCOL 可选密钥的 S3 机密中配置。如需了解更多详细信息,请参阅 S3 secret 引用。
在以下示例中,Secret 名称可以是任意的,因为它将在 APIManager 自定义资源中引用。
kind: Secret
metadata:
creationTimestamp: null
name: aws-auth
stringData:
AWS_ACCESS_KEY_ID: 123456
AWS_SECRET_ACCESS_KEY: 98765544
AWS_BUCKET: mybucket.example.com
AWS_REGION: eu-west-1
type: Opaque
Amazon S3 区域和 Amazon S3 存储桶设置直接在 APIManager 自定义资源中提供。Amazon S3 secret 名称直接在 APIManager 自定义资源中提供。
最后,创建 APIManager 自定义资源来部署 3scale。
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
wildcardDomain: lvh.me
system:
fileStorage:
simpleStorageService:
configurationSecretRef:
name: aws-auth
检查 APIManager SystemS3Spec 供参考。
2.6.9. PostgreSQL 安装 复制链接链接已复制到粘贴板!
MySQL 内部关系数据库是默认的部署。此部署配置可以被覆盖来改用 PostgreSQL。
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
wildcardDomain: lvh.me
system:
database:
postgresql: {}
其他资源
- 如需更多信息,请参阅 APIManager DatabaseSpec。
2.6.10. 在组件级别自定义计算资源要求 复制链接链接已复制到粘贴板!
通过 APIManager 自定义资源属性自定义 3scale 解决方案中的 Kubernetes 计算资源要求。这样做可自定义分配给特定 APIManager 组件的计算资源要求,即 CPU 和内存。
以下示例概述了如何自定义 system-master 的 system-provider 容器、backend-listener 和 zync-database 的计算资源要求:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
backend:
listenerSpec:
resources:
requests:
memory: "150Mi"
cpu: "300m"
limits:
memory: "500Mi"
cpu: "1000m"
system:
appSpec:
providerContainerResources:
requests:
memory: "111Mi"
cpu: "222m"
limits:
memory: "333Mi"
cpu: "444m"
zync:
databaseResources:
requests:
memory: "111Mi"
cpu: "222m"
limits:
memory: "333Mi"
cpu: "444m"
其他资源
如需有关如何指定组件级别自定义资源要求的更多信息,请参阅 APIManager CRD 引用。
2.6.10.1. 默认 APIManager 组件计算资源 复制链接链接已复制到粘贴板!
当您将 APIManager spec.resourceRequirementsEnabled 属性配置为 true 时,会为 APIManager 组件设置默认计算资源。
下表中显示了为 APIManager 组件设置的特定计算资源默认值。
2.6.10.1.1. CPU 和内存单元 复制链接链接已复制到粘贴板!
下表说明了您将在计算资源默认值表中找到的单元。如需有关 CPU 和内存单元的更多信息,请参阅管理容器的资源。
资源单元解释
- m - milliCPU 或 millicore
- Mi - mebibytes
- Gi - gibibyte
- G - gigabyte
| 组件 | CPU 请求 | CPU 限值 | 内存请求 | 内存限值 |
|---|---|---|---|---|
| system-app 的 system-master | 50m | 1000m | 600Mi | 800Mi |
| system-app 的 system-provider | 50m | 1000m | 600Mi | 800Mi |
| system-app 的 system-developer | 50m | 1000m | 600Mi | 800Mi |
| system-sidekiq | 100m | 1000m | 500Mi | 2Gi |
| system-sphinx | 80m | 1000m | 250Mi | 512Mi |
| system-redis | 150m | 500m | 256Mi | 32Gi |
| system-mysql | 250m | 无限制 | 512Mi | 2Gi |
| system-postgresql | 250m | 无限制 | 512Mi | 2Gi |
| backend-listener | 500m | 1000m | 550Mi | 700Mi |
| backend-worker | 150m | 1000m | 50Mi | 300Mi |
| backend-cron | 50m | 150m | 40Mi | 80Mi |
| backend-redis | 1000m | 2000m | 1024Mi | 32Gi |
| apicast-production | 500m | 1000m | 64Mi | 128Mi |
| apicast-staging | 50m | 100m | 64Mi | 128Mi |
| zync | 150m | 1 | 250M | 512Mi |
| zync-que | 250m | 1 | 250M | 512Mi |
| zync-database | 50m | 250m | 250M | 2G |
2.6.11. 组件级别的自定义节点关联性和容限 复制链接链接已复制到粘贴板!
在 Red Hat 3scale API Management 中自定义 Kubernetes 关联性和容限。APIManager 自定义资源属性用于定制一个安装中的不同 3scale 组件如何调度到 Kubernetes 节点。
以下示例为后端设置自定义节点关联性。它还为 system-memcached 设置监听程序和自定义容限:
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
backend:
listenerSpec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: "kubernetes.io/hostname"
operator: In
values:
- ip-10-96-1-105
- key: "beta.kubernetes.io/arch"
operator: In
values:
- amd64
system:
memcachedTolerations:
- key: key1
value: value1
operator: Equal
effect: NoSchedule
- key: key2
value: value2
operator: Equal
effect: NoSchedule
其他资源
如需与关联性和容限相关的完整属性列表,请参阅 APIManager CDR 参考。
2.6.12. 协调 复制链接链接已复制到粘贴板!
安装 3scale 后,3scale 操作器将启用更新自定义资源中的一组给定参数,以修改系统配置选项。可以通过 热交换 (即,不停止或关闭系统)进行修改。
并非所有 APIManager 自定义资源定义(CRD)的参数都是可协调的。
以下是可协调参数列表:
2.6.12.1. Resources 复制链接链接已复制到粘贴板!
所有 3scale 组件的资源限制和请求.
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
ResourceRequirementsEnabled: true/false
2.6.12.2. 后端副本 复制链接链接已复制到粘贴板!
后端 组件 pod 数量。
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
backend:
listenerSpec:
replicas: X
workerSpec:
replicas: Y
cronSpec:
replicas: Z
2.6.12.3. APIcast 副本 复制链接链接已复制到粘贴板!
APIcast staging 和生产组件 pod 数量。
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
apicast:
productionSpec:
replicas: X
stagingSpec:
replicas: Z
2.6.12.4. 系统副本 复制链接链接已复制到粘贴板!
系统 应用程序和系统 sidekiq 组件 pod 数量
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
system:
appSpec:
replicas: X
sidekiqSpec:
replicas: Z
2.6.12.5. Zync 副本 复制链接链接已复制到粘贴板!
Zync app 和 que 组件 pod 数量
apiVersion: apps.3scale.net/v1alpha1
kind: APIManager
metadata:
name: example-apimanager
spec:
zync:
appSpec:
replicas: X
queSpec:
replicas: Z