Skip to content

Commit

Permalink
Merge pull request #1359 from zimnx/mz/expose-scylla-outside
Browse files Browse the repository at this point in the history
Add new ways of exposing ScyllaCluster outside
  • Loading branch information
scylla-operator-bot[bot] authored Sep 18, 2023
2 parents c392920 + debc9e6 commit c6b93ee
Show file tree
Hide file tree
Showing 25 changed files with 2,119 additions and 151 deletions.
66 changes: 66 additions & 0 deletions examples/common/operator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2697,6 +2697,44 @@ spec:
exposeOptions:
description: exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.
properties:
broadcastOptions:
description: BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.
properties:
clients:
default:
type: ServiceClusterIP
description: clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config.
properties:
podIP:
description: podIP holds options related to Pod IP address.
properties:
source:
default: Status
description: sourceType specifies source of the Pod IP.
type: string
type: object
type:
description: type of the address that is broadcasted.
type: string
type: object
nodes:
default:
type: ServiceClusterIP
description: nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config.
properties:
podIP:
description: podIP holds options related to Pod IP address.
properties:
source:
default: Status
description: sourceType specifies source of the Pod IP.
type: string
type: object
type:
description: type of the address that is broadcasted.
type: string
type: object
type: object
cql:
description: cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.
properties:
Expand All @@ -2716,6 +2754,34 @@ spec:
type: string
type: object
type: object
nodeService:
default:
type: ClusterIP
description: nodeService controls properties of Service dedicated for each ScyllaCluster node.
properties:
allocateLoadBalancerNodePorts:
description: allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: boolean
annotations:
additionalProperties:
type: string
description: annotations is a custom key value map merged with every node Service annotations.
type: object
externalTrafficPolicy:
description: externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: string
internalTrafficPolicy:
description: internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: string
loadBalancerClass:
description: loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: string
type:
description: type is the Kubernetes Service type.
type: string
required:
- type
type: object
type: object
externalSeeds:
description: externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as "seeds" parameter of seed-provider.
Expand Down
93 changes: 93 additions & 0 deletions helm/scylla-manager/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,60 @@
"exposeOptions": {
"description": "exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.",
"properties": {
"broadcastOptions": {
"description": "BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.",
"properties": {
"clients": {
"default": {
"type": "ServiceClusterIP"
},
"description": "clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config.",
"properties": {
"podIP": {
"description": "podIP holds options related to Pod IP address.",
"properties": {
"source": {
"default": "Status",
"description": "sourceType specifies source of the Pod IP.",
"type": "string"
}
},
"type": "object"
},
"type": {
"description": "type of the address that is broadcasted.",
"type": "string"
}
},
"type": "object"
},
"nodes": {
"default": {
"type": "ServiceClusterIP"
},
"description": "nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config.",
"properties": {
"podIP": {
"description": "podIP holds options related to Pod IP address.",
"properties": {
"source": {
"default": "Status",
"description": "sourceType specifies source of the Pod IP.",
"type": "string"
}
},
"type": "object"
},
"type": {
"description": "type of the address that is broadcasted.",
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"cql": {
"description": "cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.",
"properties": {
Expand All @@ -266,6 +320,45 @@
}
},
"type": "object"
},
"nodeService": {
"default": {
"type": "ClusterIP"
},
"description": "nodeService controls properties of Service dedicated for each ScyllaCluster node.",
"properties": {
"allocateLoadBalancerNodePorts": {
"description": "allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "boolean"
},
"annotations": {
"additionalProperties": {
"type": "string"
},
"description": "annotations is a custom key value map merged with every node Service annotations.",
"type": "object"
},
"externalTrafficPolicy": {
"description": "externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "string"
},
"internalTrafficPolicy": {
"description": "internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "string"
},
"loadBalancerClass": {
"description": "loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "string"
},
"type": {
"description": "type is the Kubernetes Service type.",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"type": "object"
Expand Down
93 changes: 93 additions & 0 deletions helm/scylla/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,60 @@
"exposeOptions": {
"description": "exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.",
"properties": {
"broadcastOptions": {
"description": "BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.",
"properties": {
"clients": {
"default": {
"type": "ServiceClusterIP"
},
"description": "clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config.",
"properties": {
"podIP": {
"description": "podIP holds options related to Pod IP address.",
"properties": {
"source": {
"default": "Status",
"description": "sourceType specifies source of the Pod IP.",
"type": "string"
}
},
"type": "object"
},
"type": {
"description": "type of the address that is broadcasted.",
"type": "string"
}
},
"type": "object"
},
"nodes": {
"default": {
"type": "ServiceClusterIP"
},
"description": "nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config.",
"properties": {
"podIP": {
"description": "podIP holds options related to Pod IP address.",
"properties": {
"source": {
"default": "Status",
"description": "sourceType specifies source of the Pod IP.",
"type": "string"
}
},
"type": "object"
},
"type": {
"description": "type of the address that is broadcasted.",
"type": "string"
}
},
"type": "object"
}
},
"type": "object"
},
"cql": {
"description": "cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.",
"properties": {
Expand All @@ -155,6 +209,45 @@
}
},
"type": "object"
},
"nodeService": {
"default": {
"type": "ClusterIP"
},
"description": "nodeService controls properties of Service dedicated for each ScyllaCluster node.",
"properties": {
"allocateLoadBalancerNodePorts": {
"description": "allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "boolean"
},
"annotations": {
"additionalProperties": {
"type": "string"
},
"description": "annotations is a custom key value map merged with every node Service annotations.",
"type": "object"
},
"externalTrafficPolicy": {
"description": "externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "string"
},
"internalTrafficPolicy": {
"description": "internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "string"
},
"loadBalancerClass": {
"description": "loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.",
"type": "string"
},
"type": {
"description": "type is the Kubernetes Service type.",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"type": "object"
Expand Down
66 changes: 66 additions & 0 deletions pkg/api/scylla/v1/scylla.scylladb.com_scyllaclusters.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1741,6 +1741,44 @@ spec:
exposeOptions:
description: exposeOptions specifies options for exposing ScyllaCluster services. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.
properties:
broadcastOptions:
description: BroadcastOptions defines how ScyllaDB node publishes its IP address to other nodes and clients.
properties:
clients:
default:
type: ServiceClusterIP
description: clients specifies options related to the address that is broadcasted for communication with clients. This field controls the `broadcast_rpc_address` value in ScyllaDB config.
properties:
podIP:
description: podIP holds options related to Pod IP address.
properties:
source:
default: Status
description: sourceType specifies source of the Pod IP.
type: string
type: object
type:
description: type of the address that is broadcasted.
type: string
type: object
nodes:
default:
type: ServiceClusterIP
description: nodes specifies options related to the address that is broadcasted for communication with other nodes. This field controls the `broadcast_address` value in ScyllaDB config.
properties:
podIP:
description: podIP holds options related to Pod IP address.
properties:
source:
default: Status
description: sourceType specifies source of the Pod IP.
type: string
type: object
type:
description: type of the address that is broadcasted.
type: string
type: object
type: object
cql:
description: cql specifies expose options for CQL SSL backend. EXPERIMENTAL. Do not rely on any particular behaviour controlled by this field.
properties:
Expand All @@ -1760,6 +1798,34 @@ spec:
type: string
type: object
type: object
nodeService:
default:
type: ClusterIP
description: nodeService controls properties of Service dedicated for each ScyllaCluster node.
properties:
allocateLoadBalancerNodePorts:
description: allocateLoadBalancerNodePorts controls value of service.spec.allocateLoadBalancerNodePorts of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: boolean
annotations:
additionalProperties:
type: string
description: annotations is a custom key value map merged with every node Service annotations.
type: object
externalTrafficPolicy:
description: externalTrafficPolicy controls value of service.spec.externalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: string
internalTrafficPolicy:
description: internalTrafficPolicy controls value of service.spec.internalTrafficPolicy of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: string
loadBalancerClass:
description: loadBalancerClass controls value of service.spec.loadBalancerClass of each node Service. Check Kubernetes corev1.Service documentation about semantic of this field.
type: string
type:
description: type is the Kubernetes Service type.
type: string
required:
- type
type: object
type: object
externalSeeds:
description: externalSeeds specifies the external seeds to propagate to ScyllaDB binary on startup as "seeds" parameter of seed-provider.
Expand Down
Loading

0 comments on commit c6b93ee

Please sign in to comment.