This repository has been archived by the owner on Apr 4, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 31
Pilot executes cassandra
directly, bypassing the container image entry point
#347
Open
wallrj
wants to merge
9
commits into
jetstack:master
Choose a base branch
from
wallrj:346-exec-cassandra
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
69a59e5
Add a `pilot --leader-elect` flag
wallrj 20deca2
A helper for generating test files and directories.
wallrj 350c038
An integration test for Pilot WriteConfig.
wallrj 330437b
Add Pilot command line arguments for all the configuration values
wallrj 2426e2c
A configuration package for modifying yaml and properties files.
wallrj a25029d
Use the Configuration API to modify configuration files.
wallrj 74bb244
Run the Cassandra process as the Cassandra user (999) and update the …
wallrj 641310c
documentation
wallrj 015c813
dep ensure -v
wallrj File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,6 +25,8 @@ All the C* nodes (pods) in a ``nodepool`` have the same configuration and the fo | |
|
||
.. include:: configure-scheduler.rst | ||
|
||
.. _availability-zones-cassandra: | ||
|
||
Cassandra Across Multiple Availability Zones | ||
-------------------------------------------- | ||
|
||
|
@@ -240,6 +242,37 @@ Navigator will add C* nodes, one at a time, until the desired number of nodes is | |
|
||
You can look at ``CassandraCluster.Status.NodePools[<nodepoolname>].ReadyReplicas`` to see the current number of healthy C* nodes in each ``nodepool``. | ||
|
||
Pilots and Cassandra Docker Images | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
By default, Navigator will use the `Cassandra Docker images from DockerHub <https://hub.docker.com/_/cassandra/>`_. | ||
It will use an image with a tag matching the supplied ``CassandraCluster.Spec.Version`` field. | ||
If you prefer to use your own container image you should configure the ``CassandraCluster.Spec.Image`` fields. | ||
|
||
Navigator installs a ``navigator-pilot-cassandra`` executable into each Pod at the path ``/pilot``. | ||
This ``pilot`` process connects to the API server to: | ||
get extra configuration settings, | ||
report the status of this C* node, and to | ||
perform leader election of a single pilot in the cluster. | ||
|
||
The ``pilot`` overrides the following keys in the default ``/etc/cassandra/cassandra.yaml`` file: | ||
|
||
* ``cluster_name``: This will be set to match the name of the corresponding ``CassandraCluster`` resource in the API server. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Just a thought: is this safe to do, given two clusters may have the same name (in two different namespaces) |
||
* ``listen_address`` / ``listen_interface`` / ``broadcast_address`` / ``rpc_address`` / ``broadcast_rpc_address``: These keys will be set to ``null``. | ||
This ensures that Cassandra process listens and communicates using the IP address currently associated with the fully qualified domain name of the Pod. | ||
This is important if the Pod is moved to another node and is assigned a different IP address. | ||
Removing these settings from the Configuration file ensures that Cassandra uses the most recent IP address that Kubernetes has assigned to the Pod and that other C* nodes in the cluster are notified of the change of IP address. | ||
* ``seed_provider``: This is set to ``io.jetstack.cassandra.KubernetesSeedProvider`` which allows Cassandra to look up the seed IP addresses from a Kubernetes service. | ||
The ``seed_provider.*.seeds`` sub key will be emptied. | ||
This is to avoid the risk of nodes mistakenly joining the cluster as seeds if the seed provider service is temporarily unavailable. | ||
|
||
The ``pilot`` also overwrites ``cassandra-rackdc.properties`` with values derived from the ``CassandraCluster.Spec.Nodepools`` (see :ref:`availability-zones-cassandra`). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
|
||
Finally the ``pilot`` executes ``/usr/sbin/cassandra`` directly. | ||
|
||
.. note:: | ||
The default entry point (e.g. `/docker-entrypoint.sh <https://github.com/docker-library/cassandra/blob/master/3.11/docker-entrypoint.sh>`_ is ignored. | ||
|
||
Supported Versions | ||
------------------ | ||
|
||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(nit) Bulleted list 😄