Connect to Cassandra via cqlsh within Kubernetes cluster
Connect to Cassandra via cqlsh within Kubernetes cluster
Building on the steps completed in prior topics, these instructions describe the steps to
connect to the deployed Apache Cassandra® 3.11.7 database, via
cqlsh
, from within a Kubernetes cluster. Get credentials and exec start cqlsh within Kubernetes
On a local machine where you have authorized access to the Kubernetes cluster, as described
in Create a Kubernetes cluster, use the following command to get the
cluster1-superuser
secret. The command must also identify the
cass-operator
namespace, which was defined earlier via the sample YAML
configuration files. Example:
kubectl get secret -o yaml cluster1-superuser -n cass-operator
apiVersion: v1 data: password: QmwxZzJIY2N6X0JDNFA4Q1pFMWhiekQ0Z0pTVDZaSnNzcXRXUXNNUEw3Ql9WSjhxd3MxYUhB username: Y2x1c3RlcjEtc3VwZXJ1c2Vy kind: Secret metadata: creationTimestamp: "2021-01-21T23:55:23Z" name: cluster1-superuser namespace: cass-operator resourceVersion: "1479618" selfLink: /api/v1/namespaces/cass-operator/secrets/cluster1-superuser uid: d095d9ba-60ad-4f0c-8d66-3d3f45bd05b4 type: Opaque
In the command results, notice the secret's encoded password. For this example on a macOS
machine, we'll need to use
base64 -d
to decode the string. Example:
echo 'QmwxZzJIY2N6X0JDNFA4Q1pFMWhiekQ0Z0pTVDZaSnNzcXRXUXNNUEw3Ql9WSjhxd3MxYUhB' | base64 -d
Bl1g2Hccz_BC4P8CZE1hbzD4gJST6ZJssqtWQsMPL7B_VJ8qws1aHA
Now use
kubectl
from the local machine to exec
into the
Kubernetes cluster and launch the deployed Cassandra's cqlsh
. Specify its
location in the Kubernetes cluster. In this example, it is:
/opt/cassandra/bin/cqlsh
. Also specify the cass-operator
namespace, the auth'd username (defined earlier), and the decoded password. Example:
kubectl exec -n cass-operator -i -t -c cassandra cluster1-dc1-default-sts-0 -- /opt/cassandra/bin/cqlsh -u cluster1-superuser -p Bl1g2Hccz_BC4P8CZE1hbzD4gJST6ZJssqtWQsMPL7B_VJ8qws1aHA
Connected to cluster1 at 127.0.0.1:9042. [cqlsh 5.0.1 | Cassandra 3.11.7 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cluster1-superuser@cqlsh>
Submit DDL and DML commands to the connected Cassandra database
With the connection to Cassandra's
cqlsh
established inside the Kubernetes
cluster, we can submit DDL and DML commands. Note: In the following examples, the
cluster1-superuser@cqlsh>
prompt is shown simply as
cqlsh>
. First, create a keyspace.
Tip: In the
Example:CREATE KEYSPACE
command,
remember to specify the relevant datacenter name. In this example, as defined earlier by
the provided YAML, it is dc1
.CREATE KEYSPACE IF NOT EXISTS cycling WITH replication = { 'class' : 'NetworkTopologyStrategy', 'dc1' : '3' };Define a table. Example:
CREATE TABLE IF NOT EXISTS cycling.cyclist_semi_pro ( id int, firstname text, lastname text, age int, affiliation text, country text, registration date, PRIMARY KEY (id));Load some data. Example:
INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (1, 'Carlos', 'Perotti', 22, 'Recco Club', 'ITA', '2020-01-12'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (2, 'Giovani', 'Pasi', 19, 'Venezia Velocità', 'ITA', '2016-05-15'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (3, 'Frances', 'Giardello', 24, 'Menaggio Campioni', 'ITA', '2018-07-29'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (4, 'Mark', 'Pastore', 19, 'Portofino Ciclisti', 'ITA', '2017-06-16'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (5, 'Irene', 'Cantona', 24, 'Como Velocità', 'ITA', '2012-07-22'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (6, 'Hugo', 'Herrera', 23, 'Bellagio Ciclisti', 'ITA', '2004-02-12'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (7, 'Marcel', 'Silva', 21, 'Paris Cyclistes', 'FRA', '2018-04-28'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (8, 'Theo', 'Bernat', 19, 'Nice Cavaliers', 'FRA', '2007-05-15'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (9, 'Richie', 'Draxler', 24, 'Normandy Club', 'FRA', '2011-02-26'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (10, 'Agnes', 'Cavani', 22, 'Chamonix Hauteurs', 'FRA', '2020-01-02'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (11, 'Pablo', 'Verratti', 19, 'Chamonix Hauteurs', 'FRA', '2006-05-15'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (12, 'Charles', 'Eppinger', 24, 'Chamonix Hauteurs', 'FRA', '2018-07-29'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (13, 'Stanley', 'Trout', 30, 'Bolder Boulder', 'USA', '2016-02-12'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (14, 'Juan', 'Perez', 31, 'Rutgers Alumni Riders', 'USA', '2017-06-16'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (15, 'Thomas', 'Fulton', 27, 'Exeter Academy', 'USA', '2012-12-15'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (16, 'Jenny', 'Hamler', 28, 'CU Alums Crankworkz', 'USA', '2012-07-22'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (17, 'Alice', 'McCaffrey', 26, 'Pennan Power', 'GBR', '2020-02-12'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (18, 'Nicholas', 'Burrow', 26, 'Aberdeen Association', 'GBR', '2016-02-12'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (19, 'Tyler', 'Higgins', 24, 'Highclere Agents', 'GBR', '2019-07-31'); INSERT INTO cycling.cyclist_semi_pro (id, firstname, lastname, age, affiliation, country, registration) VALUES (20, 'Leslie', 'Boyd', 18, 'London Cyclists', 'GBR', '2012-12-15');Run a query. Example:
SELECT * FROM cycling.cyclist_semi_pro;
id | affiliation | age | country | firstname | lastname | registration ----+-----------------------+-----+---------+-----------+-----------+-------------- 5 | Como Velocità | 24 | ITA | Irene | Cantona | 2012-07-22 10 | Chamonix Hauteurs | 22 | FRA | Agnes | Cavani | 2020-01-02 16 | CU Alums Crankworkz | 28 | USA | Jenny | Hamler | 2012-07-22 13 | Bolder Boulder | 30 | USA | Stanley | Trout | 2016-02-12 11 | Chamonix Hauteurs | 19 | FRA | Pablo | Verratti | 2006-05-15 1 | Recco Club | 22 | ITA | Carlos | Perotti | 2020-01-12 19 | Highclere Agents | 24 | GBR | Tyler | Higgins | 2019-07-31 8 | Nice Cavaliers | 19 | FRA | Theo | Bernat | 2007-05-15 2 | Venezia Velocità | 19 | ITA | Giovani | Pasi | 2016-05-15 4 | Portofino Ciclisti | 19 | ITA | Mark | Pastore | 2017-06-16 18 | Aberdeen Association | 26 | GBR | Nicholas | Burrow | 2016-02-12 15 | Exeter Academy | 27 | USA | Thomas | Fulton | 2012-12-15 20 | London Cyclists | 18 | GBR | Leslie | Boyd | 2012-12-15 7 | Paris Cyclistes | 21 | FRA | Marcel | Silva | 2018-04-28 6 | Bellagio Ciclisti | 23 | ITA | Hugo | Herrera | 2004-02-12 9 | Normandy Club | 24 | FRA | Richie | Draxler | 2011-02-26 14 | Rutgers Alumni Riders | 31 | USA | Juan | Perez | 2017-06-16 17 | Pennan Power | 26 | GBR | Alice | McCaffrey | 2020-02-12 12 | Chamonix Hauteurs | 24 | FRA | Charles | Eppinger | 2018-07-29 3 | Menaggio Campioni | 24 | ITA | Frances | Giardello | 2018-07-29 (20 rows)
What's next?
Now that you've deployed Cass Operator and Cassandra to your Kubernetes cluster, and learned how to connect to cqlsh from within the Kubernetes cluster, proceed to the next topic. It explains how to connect to Apache Cassandra® resources and applications in the Kubernetes cluster from outside the cluster.