Addressability
The SolrCloud CRD provides users the ability to define how it is addressed, through the following options:
Under SolrCloud.Spec.solrAddressability:
-
podPort- The port on which the pod is listening. This is also that the port that the Solr Jetty service will listen on. (Defaults to8983) -
commonServicePort- The port on which the common service is exposed. (Defaults to80) -
kubeDomain- Specifies an override of the default Kubernetes cluster domain name,cluster.local. This option should only be used if the Kubernetes cluster has been setup with a custom domain name. -
external- Expose the cloud externally, outside of the kubernetes cluster in which it is running.-
method- (Required) The method by which your cloud will be exposed externally. Currently available options areIngressandExternalDNS. The goal is to support more methods in the future, such as LoadBalanced Services. -
domainName- (Required) The primary domain name to open your cloud endpoints on. IfuseExternalAddressis set totrue, then this is the domain that will be used in Solr Node names. -
additionalDomainNames- You can choose to listen on additional domains for each endpoint, however Solr will not register itself under these names. -
useExternalAddress- Use the external address to advertise the SolrNode. If a domain name is required for the chosen externalmethod, then the one provided indomainNamewill be used. This can not be set totruewhenhideNodesis set totrueoringressTLSTerminationis used. -
hideCommon- Do not externally expose the common service (one endpoint for all solr nodes). -
hideNodes- Do not externally expose each node. (This cannot be set totrueif the cloud is running across multiple kubernetes clusters) -
nodePortOverride- Make the Node Service(s) override the podPort. This is only available for theIngressexternal method. IfhideNodesis set totrue, then this option is ignored. If provided, this port will be used to advertise the Solr Node. Ifmethod: IngressandhideNodes: false, then this value defaults to80since that is the default port that ingress controllers listen on. -
ingressTLSTermination- Terminate TLS for the SolrCloud at theIngress, if using theIngressmethod. This will leave the inter-node communication within the cluster to use HTTP. This option may not be used withuseExternalAddress. Only one sub-option can be provided.-
useDefaultTLSSecret- Use the default TLS Secret set by your Ingress controller, if your Ingress controller supports this feature. Cannot be used whentlsSecretis used. For example, using nginx: https://kubernetes.github.io/ingress-nginx/user-guide/tls/#default-ssl-certificate -
tlsSecret- Name a of Kubernetes TLS Secret to terminate TLS when using theIngressmethod. Cannot be used whenuseDefaultTlsSecretis used.
-
-
Unless both external.method=Ingress and external.hideNodes=false, a headless service will be used to make each Solr Node in the statefulSet addressable.
If both of those criteria are met, then an individual ClusterIP Service will be created for each Solr Node/Pod.
|
If you are using an Ingress for external addressability, you can customize the created Ingress through SolrCloud.spec.customSolrKubeOptions.ingressOptions.
Under this property, you can set custom annotations, labels and an ingressClassName.