github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/pulsar/config/proxy-config-constraint.cue (about)

     1  // Copyright (C) 2022-2023 ApeCloud Co., Ltd
     2  //
     3  // This file is part of KubeBlocks project
     4  //
     5  // This program is free software: you can redistribute it and/or modify
     6  // it under the terms of the GNU Affero General Public License as published by
     7  // the Free Software Foundation, either version 3 of the License, or
     8  // (at your option) any later version.
     9  //
    10  // This program is distributed in the hope that it will be useful
    11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13  // GNU Affero General Public License for more details.
    14  //
    15  // You should have received a copy of the GNU Affero General Public License
    16  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17  
    18  #PulsarProxyParameter: {
    19  	// The ZooKeeper quorum connection string (as a comma-separated list)
    20  	// @deprecated
    21  	zookeeperServers: string
    22  
    23  	// The metadata store URL. \n Examples: \n  * zk:my-zk-1:2181,my-zk-2:2181,my-zk-3:2181\n  * my-zk-1:2181,my-zk-2:2181,my-zk-3:2181 (will default to ZooKeeper when the schema is not specified)\n  * zk:my-zk-1:2181,my-zk-2:2181,my-zk-3:2181/my-chroot-path (to add a ZK chroot path)\n
    24  	metadataStoreUrl: string
    25  
    26  	// Configuration store connection string (as a comma-separated list). Deprecated in favor of `configurationMetadataStoreUrl`
    27  	// @deprecated
    28  	configurationStoreServers: string
    29  
    30  	// Global ZooKeeper quorum connection string (as a comma-separated list)
    31  	// @deprecated
    32  	globalZookeeperServers: string
    33  
    34  	// The metadata store URL for the configuration data. If empty, we fall back to use metadataStoreUrl
    35  	configurationMetadataStoreUrl: string
    36  
    37  	// Metadata store session timeout in milliseconds.
    38  	metadataStoreSessionTimeoutMillis: int
    39  
    40  	// Metadata store cache expiry time in seconds.
    41  	metadataStoreCacheExpirySeconds: int
    42  
    43  	// Is metadata store read-only operations.
    44  	metadataStoreAllowReadOnlyOperations: bool
    45  
    46  	// Max size of messages.
    47  	maxMessageSize: int
    48  
    49  	// ZooKeeper session timeout in milliseconds. @deprecated - Use metadataStoreSessionTimeoutMillis instead.
    50  	// @deprecated
    51  	zookeeperSessionTimeoutMs: int
    52  
    53  	// ZooKeeper cache expiry time in seconds. @deprecated - Use metadataStoreCacheExpirySeconds instead.
    54  	// @deprecated
    55  	zooKeeperCacheExpirySeconds: int
    56  
    57  	// Is zooKeeper allow read-only operations.
    58  	// @deprecated
    59  	zooKeeperAllowReadOnlyOperations: bool
    60  
    61  	// The service url points to the broker cluster. URL must have the pulsar:// prefix.
    62  	brokerServiceURL: string
    63  
    64  	// The tls service url points to the broker cluster. URL must have the pulsar+ssl:// prefix.
    65  	brokerServiceURLTLS: string
    66  
    67  	// The web service url points to the broker cluster
    68  	brokerWebServiceURL: string
    69  
    70  	// The tls web service url points to the broker cluster
    71  	brokerWebServiceURLTLS: string
    72  
    73  	// The web service url points to the function worker cluster. Only configure it when you setup function workers in a separate cluster
    74  	functionWorkerWebServiceURL: string
    75  
    76  	// The tls web service url points to the function worker cluster. Only configure it when you setup function workers in a separate cluster
    77  	functionWorkerWebServiceURLTLS: string
    78  
    79  	// When enabled, checks that the target broker is active before connecting. zookeeperServers and configurationStoreServers must be configured in proxy configuration for retrieving the active brokers.
    80  	checkActiveBrokers: bool
    81  
    82  	// Broker proxy connect timeout.\nThe timeout value for Broker proxy connect timeout is in millisecond. Set to 0 to disable.
    83  	brokerProxyConnectTimeoutMs: int
    84  
    85  	// Broker proxy read timeout.\nThe timeout value for Broker proxy read timeout is in millisecond. Set to 0 to disable.
    86  	brokerProxyReadTimeoutMs: int
    87  
    88  	// Allowed broker target host names. Supports multiple comma separated entries and a wildcard.
    89  	brokerProxyAllowedHostNames: string
    90  
    91  	// Allowed broker target ip addresses or ip networks / netmasks. Supports multiple comma separated entries.
    92  	brokerProxyAllowedIPAddresses: string
    93  
    94  	// Allowed broker target ports
    95  	brokerProxyAllowedTargetPorts: string
    96  
    97  	// Hostname or IP address the service binds on
    98  	bindAddress: string
    99  
   100  	// Hostname or IP address the service advertises to the outside world. If not set, the value of `InetAddress.getLocalHost().getCanonicalHostName()` is used.
   101  	advertisedAddress: string
   102  
   103  	// Enable or disable the proxy protocol.
   104  	haProxyProtocolEnabled: bool
   105  
   106  	// Enables zero-copy transport of data across network interfaces using the spice. Zero copy mode cannot be used when TLS is enabled or when proxyLogLevel is > 0.
   107  	proxyZeroCopyModeEnabled: bool
   108  
   109  	// The port for serving binary protobuf request
   110  	servicePort: int
   111  
   112  	// The port for serving tls secured binary protobuf request
   113  	servicePortTls: int
   114  
   115  	// The port for serving http requests
   116  	webServicePort: int
   117  
   118  	// The port for serving https requests
   119  	webServicePortTls: int
   120  
   121  	// Specify the TLS provider for the web service, available values can be SunJSSE, Conscrypt and etc.
   122  	webServiceTlsProvider: string
   123  
   124  	// Specify the tls protocols the proxy's web service will use to negotiate during TLS Handshake.\n\nExample:- [TLSv1.3, TLSv1.2]
   125  	webServiceTlsProtocols: string
   126  
   127  	// Specify the tls cipher the proxy's web service will use to negotiate during TLS Handshake.\n\nExample:- [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
   128  	webServiceTlsCiphers: string
   129  
   130  	// The directory where nar Extraction happens
   131  	narExtractionDirectory: string
   132  
   133  	// Proxy log level, default is 0. 0: Do not log any tcp channel info 1: Parse and log any tcp channel info and command info without message body 2: Parse and log channel info, command info and message body
   134  	proxyLogLevel: int
   135  
   136  	// Path for the file used to determine the rotation status for the proxy instance when responding to service discovery health checks
   137  	statusFilePath: string
   138  
   139  	// A list of role names (a comma-separated list of strings) that are treated as `super-user`, meaning they will be able to do all admin operations and publish & consume from all topics
   140  	superUserRoles: string
   141  
   142  	// Whether authentication is enabled for the Pulsar proxy
   143  	authenticationEnabled: bool
   144  
   145  	// Authentication provider name list (a comma-separated list of class names
   146  	authenticationProviders: string
   147  
   148  	// Whether authorization is enforced by the Pulsar proxy
   149  	authorizationEnabled: bool
   150  
   151  	// Authorization provider as a fully qualified class name
   152  	authorizationProvider: string
   153  
   154  	// Whether client authorization credentials are forwarded to the broker for re-authorization.Authentication must be enabled via configuring `authenticationEnabled` to be true for thisto take effect
   155  	forwardAuthorizationCredentials: bool
   156  
   157  	// Interval of time for checking for expired authentication credentials. Disable by setting to 0.
   158  	authenticationRefreshCheckSeconds: int
   159  
   160  	// Whether the '/metrics' endpoint requires authentication. Defaults to true.'authenticationEnabled' must also be set for this to take effect.
   161  	authenticateMetricsEndpoint: bool
   162  
   163  	// This is a regexp, which limits the range of possible ids which can connect to the Broker using SASL.\n Default value is: \".*pulsar.*\", so only clients whose id contains 'pulsar' are allowed to connect.
   164  	saslJaasClientAllowedIds: string
   165  
   166  	// Service Principal, for login context name. Default value is \"PulsarProxy\".
   167  	saslJaasServerSectionName: string
   168  
   169  	// Path to file containing the secret to be used to SaslRoleTokenSigner\nThe secret can be specified like:\nsaslJaasServerRoleTokenSignerSecretPath=file:///my/saslRoleTokenSignerSecret.key.
   170  	saslJaasServerRoleTokenSignerSecretPath: string
   171  
   172  	// kerberos kinit command.
   173  	kinitCommand: string
   174  
   175  	// Max concurrent inbound connections. The proxy will reject requests beyond that
   176  	maxConcurrentInboundConnections: int
   177  
   178  	// The maximum number of connections per IP. If it exceeds, new connections are rejected.
   179  	maxConcurrentInboundConnectionsPerIp: int
   180  
   181  	// Max concurrent lookup requests. The proxy will reject requests beyond that
   182  	maxConcurrentLookupRequests: int
   183  
   184  	// The authentication plugin used by the Pulsar proxy to authenticate with Pulsar brokers
   185  	brokerClientAuthenticationPlugin: string
   186  
   187  	// The authentication parameters used by the Pulsar proxy to authenticate with Pulsar brokers
   188  	brokerClientAuthenticationParameters: string
   189  
   190  	// The path to trusted certificates used by the Pulsar proxy to authenticate with Pulsar brokers
   191  	brokerClientTrustCertsFilePath: string
   192  
   193  	// The path to TLS private key used by the Pulsar proxy to authenticate with Pulsar brokers
   194  	brokerClientKeyFilePath: string
   195  
   196  	// The path to the TLS certificate used by the Pulsar proxy to authenticate with Pulsar brokers
   197  	brokerClientCertificateFilePath: string
   198  
   199  	// Whether TLS is enabled when communicating with Pulsar brokers
   200  	tlsEnabledWithBroker: bool
   201  
   202  	// When this parameter is not empty, unauthenticated users perform as anonymousUserRole
   203  	anonymousUserRole: string
   204  
   205  	// Tls cert refresh duration in seconds (set 0 to check on every new connection)
   206  	tlsCertRefreshCheckDurationSec: int
   207  
   208  	// Path for the TLS certificate file
   209  	tlsCertificateFilePath: string
   210  
   211  	// Path for the TLS private key file
   212  	tlsKeyFilePath: string
   213  
   214  	// Path for the trusted TLS certificate file.\n\nThis cert is used to verify that any certs presented by connecting clients are signed by a certificate authority. If this verification fails, then the certs are untrusted and the connections are dropped
   215  	tlsTrustCertsFilePath: string
   216  
   217  	// Accept untrusted TLS certificate from client.\n\nIf true, a client with a cert which cannot be verified with the `tlsTrustCertsFilePath` cert will be allowed to connect to the server, though the cert will not be used for client authentication
   218  	tlsAllowInsecureConnection: bool
   219  
   220  	// Whether the hostname is validated when the proxy creates a TLS connection with brokers
   221  	tlsHostnameVerificationEnabled: bool
   222  
   223  	// Specify the tls protocols the broker will use to negotiate during TLS handshake (a comma-separated list of protocol names).\n\nExamples:- [TLSv1.3, TLSv1.2]
   224  	tlsProtocols: string
   225  
   226  	// Specify the tls cipher the proxy will use to negotiate during TLS Handshake (a comma-separated list of ciphers).\n\nExamples:- [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
   227  	tlsCiphers: string
   228  
   229  	// Whether client certificates are required for TLS.\n\n Connections are rejected if the client certificate isn't trusted
   230  	tlsRequireTrustedClientCertOnConnect: bool
   231  
   232  	// Enable TLS with KeyStore type configuration for proxy
   233  	tlsEnabledWithKeyStore: bool
   234  
   235  	// Specify the TLS provider for the broker service: \nWhen using TLS authentication with CACert, the valid value is either OPENSSL or JDK.\nWhen using TLS authentication with KeyStore, available values can be SunJSSE, Conscrypt and etc.
   236  	tlsProvider: string
   237  
   238  	// TLS KeyStore type configuration for proxy: JKS, PKCS12
   239  	tlsKeyStoreType: string
   240  
   241  	// TLS KeyStore path for proxy
   242  	tlsKeyStore: string
   243  
   244  	// TLS KeyStore password for proxy
   245  	tlsKeyStorePassword: string
   246  
   247  	// TLS TrustStore type configuration for proxy: JKS, PKCS12
   248  	tlsTrustStoreType: string
   249  
   250  	// TLS TrustStore path for proxy
   251  	tlsTrustStore: string
   252  
   253  	// TLS TrustStore password for proxy, null means empty password.
   254  	tlsTrustStorePassword: string
   255  
   256  	// Whether the Pulsar proxy use KeyStore type to authenticate with Pulsar brokers
   257  	brokerClientTlsEnabledWithKeyStore: bool
   258  
   259  	// The TLS Provider used by the Pulsar proxy to authenticate with Pulsar brokers
   260  	brokerClientSslProvider: string
   261  
   262  	// TLS KeyStore type configuration for proxy: JKS, PKCS12  used by the Pulsar proxy to authenticate with Pulsar brokers
   263  	brokerClientTlsKeyStoreType: string
   264  
   265  	// TLS KeyStore path for internal client,  used by the Pulsar proxy to authenticate with Pulsar brokers
   266  	brokerClientTlsKeyStore: string
   267  
   268  	// TLS KeyStore password for proxy,  used by the Pulsar proxy to authenticate with Pulsar brokers
   269  	brokerClientTlsKeyStorePassword: string
   270  
   271  	// TLS TrustStore type configuration for proxy: JKS, PKCS12  used by the Pulsar proxy to authenticate with Pulsar brokers
   272  	brokerClientTlsTrustStoreType: string
   273  
   274  	// TLS TrustStore path for proxy,  used by the Pulsar proxy to authenticate with Pulsar brokers
   275  	brokerClientTlsTrustStore: string
   276  
   277  	// TLS TrustStore password for proxy,  used by the Pulsar proxy to authenticate with Pulsar brokers
   278  	brokerClientTlsTrustStorePassword: string
   279  
   280  	// Specify the tls cipher the proxy will use to negotiate during TLS Handshake (a comma-separated list of ciphers).\n\nExamples:- [TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256].\n used by the Pulsar proxy to authenticate with Pulsar brokers
   281  	brokerClientTlsCiphers: string
   282  
   283  	// Specify the tls protocols the broker will use to negotiate during TLS handshake (a comma-separated list of protocol names).\n\nExamples:- [TLSv1.3, TLSv1.2] \n used by the Pulsar proxy to authenticate with Pulsar brokers
   284  	brokerClientTlsProtocols: string
   285  
   286  	// Http directs to redirect to non-pulsar services
   287  	httpReverseProxyConfigs: string
   288  
   289  	// Http output buffer size.\n\nThe amount of data that will be buffered for http requests before it is flushed to the channel. A larger buffer size may result in higher http throughput though it may take longer for the client to see data. If using HTTP streaming via the reverse proxy, this should be set to the minimum value, 1, so that clients see the data as soon as possible.
   290  	httpOutputBufferSize: int
   291  
   292  	// The maximum size in bytes of the request header.                Larger headers will allow for more and/or larger cookies plus larger form content encoded in a URL.                However, larger headers consume more memory and can make a server more vulnerable to denial of service                attacks.
   293  	httpMaxRequestHeaderSize: int
   294  
   295  	// Http input buffer max size.\n\nThe maximum amount of data that will be buffered for incoming http requests so that the request body can be replayed when the backend broker issues a redirect response.
   296  	httpInputMaxReplayBufferSize: int
   297  
   298  	// Http proxy timeout.\n\nThe timeout value for HTTP proxy is in millisecond.
   299  	httpProxyTimeout: int
   300  
   301  	// Number of threads to use for HTTP requests processing
   302  	httpNumThreads: int
   303  
   304  	// Max concurrent web requests
   305  	maxConcurrentHttpRequests: int
   306  
   307  	// Capacity for thread pool queue in the HTTP server Default is set to 8192.
   308  	httpServerThreadPoolQueueSize: int
   309  
   310  	// Capacity for accept queue in the HTTP server Default is set to 8192.
   311  	httpServerAcceptQueueSize: int
   312  
   313  	// Maximum number of inbound http connections. (0 to disable limiting)
   314  	maxHttpServerConnections: int
   315  
   316  	// Number of threads used for Netty IO. Default is set to `2 * Runtime.getRuntime().availableProcessors()`
   317  	numIOThreads: int
   318  
   319  	// Number of threads used for Netty Acceptor. Default is set to `1`
   320  	numAcceptorThreads: int
   321  
   322  	// The directory to locate proxy additional servlet
   323  	proxyAdditionalServletDirectory: string
   324  
   325  	// The directory to locate proxy additional servlet
   326  	additionalServletDirectory: string
   327  
   328  	// List of proxy additional servlet to load, which is a list of proxy additional servlet names
   329  	proxyAdditionalServlets: string
   330  
   331  	// List of proxy additional servlet to load, which is a list of proxy additional servlet names
   332  	additionalServlets: string
   333  
   334  	// Enable the enforcement of limits on the incoming HTTP requests
   335  	httpRequestsLimitEnabled: bool
   336  
   337  	// Max HTTP requests per seconds allowed. The excess of requests will be rejected with HTTP code 429 (Too many requests)
   338  	httpRequestsMaxPerSecond: float
   339  
   340  	// The directory to locate proxy extensions
   341  	proxyExtensionsDirectory: string
   342  
   343  	// List of messaging protocols to load, which is a list of extension names
   344  	proxyExtensions: string
   345  
   346  	// Use a separate ThreadPool for each Proxy Extension
   347  	useSeparateThreadPoolForProxyExtensions: bool
   348  
   349  	// Enable or disable the WebSocket servlet
   350  	webSocketServiceEnabled: bool
   351  
   352  	// Interval of time to sending the ping to keep alive in WebSocket proxy. This value greater than 0 means enabled
   353  	webSocketPingDurationSeconds: int
   354  
   355  	// Name of the cluster to which this broker belongs to
   356  	clusterName: string
   357  
   358  	...
   359  }
   360  
   361  configuration: #PulsarProxyParameter & {
   362  }