diff --git a/examples/examples_test.go b/examples/examples_test.go index 33ec647fff..ebf9269932 100644 --- a/examples/examples_test.go +++ b/examples/examples_test.go @@ -221,12 +221,6 @@ func TestExampleObjectSchemas(t *testing.T) { "rbd": &api.Pod{}, "rbd-with-secret": &api.Pod{}, }, - "../examples/storage/cassandra": { - "cassandra-daemonset": &extensions.DaemonSet{}, - "cassandra-controller": &api.ReplicationController{}, - "cassandra-service": &api.Service{}, - "cassandra-statefulset": &apps.StatefulSet{}, - }, "../examples/cluster-dns": { "dns-backend-rc": &api.ReplicationController{}, "dns-backend-service": &api.Service{}, diff --git a/examples/storage/cassandra/README.md b/examples/storage/cassandra/README.md index 5afcd19131..52b4a9e554 100644 --- a/examples/storage/cassandra/README.md +++ b/examples/storage/cassandra/README.md @@ -1 +1 @@ -This file has moved to [https://github.com/kubernetes/examples/blob/master/cassandra/README.md](https://github.com/kubernetes/examples/blob/master/cassandra/README.md) +This example has been moved to [https://github.com/kubernetes/examples/blob/master/cassandra](https://github.com/kubernetes/examples/blob/master/cassandra) diff --git a/examples/storage/cassandra/cassandra-daemonset.yaml b/examples/storage/cassandra/cassandra-daemonset.yaml deleted file mode 100644 index 8305ebf88b..0000000000 --- a/examples/storage/cassandra/cassandra-daemonset.yaml +++ /dev/null @@ -1,56 +0,0 @@ -apiVersion: extensions/v1beta1 -kind: DaemonSet -metadata: - labels: - name: cassandra - name: cassandra -spec: - template: - metadata: - labels: - app: cassandra - spec: - # Filter to specific nodes: - # nodeSelector: - # app: cassandra - containers: - - command: - - /run.sh - env: - - name: MAX_HEAP_SIZE - value: 512M - - name: HEAP_NEWSIZE - value: 100M - - name: CASSANDRA_SEED_PROVIDER - value: "io.k8s.cassandra.KubernetesSeedProvider" - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - image: gcr.io/google-samples/cassandra:v12 - name: cassandra - ports: - - containerPort: 7000 - name: intra-node - - containerPort: 7001 - name: tls-intra-node - - containerPort: 7199 - name: jmx - - containerPort: 9042 - name: cql - # If you need it it is going away in C* 4.0 - #- containerPort: 9160 - # name: thrift - resources: - requests: - cpu: 0.5 - volumeMounts: - - mountPath: /cassandra_data - name: data - volumes: - - name: data - emptyDir: {} diff --git a/examples/storage/cassandra/cassandra-service.yaml b/examples/storage/cassandra/cassandra-service.yaml deleted file mode 100644 index 35b07733b5..0000000000 --- a/examples/storage/cassandra/cassandra-service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: cassandra - name: cassandra -spec: - clusterIP: None - ports: - - port: 9042 - selector: - app: cassandra diff --git a/examples/storage/cassandra/cassandra-statefulset.yaml b/examples/storage/cassandra/cassandra-statefulset.yaml deleted file mode 100644 index f91f40360e..0000000000 --- a/examples/storage/cassandra/cassandra-statefulset.yaml +++ /dev/null @@ -1,98 +0,0 @@ -apiVersion: "apps/v1beta1" -kind: StatefulSet -metadata: - name: cassandra -spec: - serviceName: cassandra - replicas: 3 - template: - metadata: - labels: - app: cassandra - spec: - terminationGracePeriodSeconds: 1800 - containers: - - name: cassandra - image: gcr.io/google-samples/cassandra:v12 - imagePullPolicy: Always - ports: - - containerPort: 7000 - name: intra-node - - containerPort: 7001 - name: tls-intra-node - - containerPort: 7199 - name: jmx - - containerPort: 9042 - name: cql - resources: - limits: - cpu: "500m" - memory: 1Gi - requests: - cpu: "500m" - memory: 1Gi - securityContext: - capabilities: - add: - - IPC_LOCK - lifecycle: - preStop: - exec: - command: ["/bin/sh", "-c", "nodetool drain"] - env: - - name: MAX_HEAP_SIZE - value: 512M - - name: HEAP_NEWSIZE - value: 100M - - name: CASSANDRA_SEEDS - value: "cassandra-0.cassandra.default.svc.cluster.local" - - name: CASSANDRA_CLUSTER_NAME - value: "K8Demo" - - name: CASSANDRA_DC - value: "DC1-K8Demo" - - name: CASSANDRA_RACK - value: "Rack1-K8Demo" - - name: CASSANDRA_AUTO_BOOTSTRAP - value: "false" - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - readinessProbe: - exec: - command: - - /bin/bash - - -c - - /ready-probe.sh - initialDelaySeconds: 15 - timeoutSeconds: 5 - # These volume mounts are persistent. They are like inline claims, - # but not exactly because the names need to match exactly one of - # the stateful pod volumes. - volumeMounts: - - name: cassandra-data - mountPath: /cassandra_data - # These are converted to volume claims by the controller - # and mounted at the paths mentioned above. - # do not use these in production until ssd GCEPersistentDisk or other ssd pd - volumeClaimTemplates: - - metadata: - name: cassandra-data - spec: - accessModes: [ "ReadWriteOnce" ] - resources: - requests: - storage: 1Gi - storageClassName: fast ---- -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: fast -provisioner: kubernetes.io/gce-pd -parameters: - type: pd-ssd diff --git a/examples/storage/cassandra/image/Dockerfile b/examples/storage/cassandra/image/Dockerfile deleted file mode 100644 index 5c4658d7f1..0000000000 --- a/examples/storage/cassandra/image/Dockerfile +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright 2017 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -FROM k8s.gcr.io/ubuntu-slim:0.9 - -ARG BUILD_DATE -ARG VCS_REF -ARG CASSANDRA_VERSION -ARG DEV_CONTAINER - -LABEL \ - org.label-schema.build-date=$BUILD_DATE \ - org.label-schema.docker.dockerfile="/Dockerfile" \ - org.label-schema.license="Apache License 2.0" \ - org.label-schema.name="k8s-for-greeks/docker-cassandra-k8s" \ - org.label-schema.url="https://github.com/k8s-for-greeks/" \ - org.label-schema.vcs-ref=$VCS_REF \ - org.label-schema.vcs-type="Git" \ - org.label-schema.vcs-url="https://github.com/k8s-for-greeks/docker-cassandra-k8s" - -ENV CASSANDRA_HOME=/usr/local/apache-cassandra-${CASSANDRA_VERSION} \ - CASSANDRA_CONF=/etc/cassandra \ - CASSANDRA_DATA=/cassandra_data \ - CASSANDRA_LOGS=/var/log/cassandra \ - JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 \ - PATH=${PATH}:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/apache-cassandra-${CASSANDRA_VERSION}/bin \ - DI_VERSION=1.2.0 \ - DI_SHA=81231da1cd074fdc81af62789fead8641ef3f24b6b07366a1c34e5b059faf363 - -ADD files / - -RUN set -e && echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections \ - && apt-get update && apt-get -qq -y --force-yes install --no-install-recommends \ - openjdk-8-jre-headless \ - libjemalloc1 \ - localepurge \ - wget && \ - mirror_url=$( wget -q -O - http://www.apache.org/dyn/closer.cgi/cassandra/ \ - | sed -n 's#.*href="\(http://.*/cassandra\/[^"]*\)".*#\1#p' \ - | head -n 1 \ - ) \ - && wget -q -O - ${mirror_url}/${CASSANDRA_VERSION}/apache-cassandra-${CASSANDRA_VERSION}-bin.tar.gz \ - | tar -xzf - -C /usr/local \ - && wget -q -O - https://github.com/Yelp/dumb-init/releases/download/v${DI_VERSION}/dumb-init_${DI_VERSION}_amd64 > /sbin/dumb-init \ - && echo "$DI_SHA /sbin/dumb-init" | sha256sum -c - \ - && chmod +x /sbin/dumb-init \ - && chmod +x /ready-probe.sh \ - && mkdir -p /cassandra_data/data \ - && mkdir -p /etc/cassandra \ - && mv /logback.xml /cassandra.yaml /jvm.options /etc/cassandra/ \ - && mv /usr/local/apache-cassandra-${CASSANDRA_VERSION}/conf/cassandra-env.sh /etc/cassandra/ \ - && adduser --disabled-password --no-create-home --gecos '' --disabled-login cassandra \ - && chown cassandra: /ready-probe.sh \ - && if [ -n "$DEV_CONTAINER" ]; then apt-get -y --no-install-recommends install python; else rm -rf $CASSANDRA_HOME/pylib; fi \ - && apt-get -y purge wget localepurge \ - && apt-get -y autoremove \ - && apt-get clean \ - && rm -rf \ - $CASSANDRA_HOME/*.txt \ - $CASSANDRA_HOME/doc \ - $CASSANDRA_HOME/javadoc \ - $CASSANDRA_HOME/tools/*.yaml \ - $CASSANDRA_HOME/tools/bin/*.bat \ - $CASSANDRA_HOME/bin/*.bat \ - doc \ - man \ - info \ - locale \ - common-licenses \ - ~/.bashrc \ - /var/lib/apt/lists/* \ - /var/log/* \ - /var/cache/debconf/* \ - /etc/systemd \ - /lib/lsb \ - /lib/udev \ - /usr/share/doc/ \ - /usr/share/doc-base/ \ - /usr/share/man/ \ - /tmp/* \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/plugin \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/javaws \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/jjs \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/orbd \ - /usr/lib/jvm/java-8-openjdk-amd64/bin/pack200 \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/policytool \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmiregistry \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/servertool \ - /usr/lib/jvm/java-8-openjdk-amd64/bin/tnameserv \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/unpack200 \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/javaws.jar \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/deploy* \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/desktop \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/*javafx* \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/*jfx* \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libdecora_sse.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libprism_*.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libfxplugins.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libglass.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libgstreamer-lite.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjavafx*.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/libjfx*.so \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/jfxrt.jar \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext/nashorn.jar \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/oblique-fonts \ - /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/plugin.jar \ - /usr/lib/jvm/java-8-openjdk-amd64/man - - -VOLUME ["/$CASSANDRA_DATA"] - -# 7000: intra-node communication -# 7001: TLS intra-node communication -# 7199: JMX -# 9042: CQL -# 9160: thrift service -EXPOSE 7000 7001 7199 9042 9160 - -CMD ["/sbin/dumb-init", "/bin/bash", "/run.sh"] diff --git a/examples/storage/cassandra/image/Makefile b/examples/storage/cassandra/image/Makefile deleted file mode 100644 index ac8ef75e06..0000000000 --- a/examples/storage/cassandra/image/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2016 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# build the cassandra image. -VERSION=v12 -PROJECT_ID?=google_samples -PROJECT=gcr.io/${PROJECT_ID} -CASSANDRA_VERSION=3.10 - -all: kubernetes-cassandra.jar build - -kubernetes-cassandra.jar: ../java/* ../java/src/main/java/io/k8s/cassandra/*.java - cd ../java && mvn clean && mvn package - mv ../java/target/kubernetes-cassandra*.jar files/kubernetes-cassandra.jar - cd ../java && mvn clean - -container: - @echo "Building ${PROJECT}/cassandra:${VERSION}" - docker build --pull --build-arg "CASSANDRA_VERSION=${CASSANDRA_VERSION}" -t ${PROJECT}/cassandra:${VERSION} . - -container-dev: - docker build --pull --build-arg "CASSANDRA_VERSION=${CASSANDRA_VERSION}" --build-arg "DEV_CONTAINER=true" -t ${PROJECT}/cassandra:${VERSION}-dev . - -build: container container-dev - -push: build - gcloud docker -- push ${PROJECT}/cassandra:${VERSION} - gcloud docker -- push ${PROJECT}/cassandra:${VERSION}-dev - -.PHONY: all build push diff --git a/examples/storage/cassandra/image/files/cassandra.yaml b/examples/storage/cassandra/image/files/cassandra.yaml deleted file mode 100644 index 7df40351e2..0000000000 --- a/examples/storage/cassandra/image/files/cassandra.yaml +++ /dev/null @@ -1,990 +0,0 @@ -# Cassandra storage config YAML - -# NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for -# full explanations of configuration directives -# /NOTE - -# The name of the cluster. This is mainly used to prevent machines in -# one logical cluster from joining another. -cluster_name: 'Test Cluster' - -# This defines the number of tokens randomly assigned to this node on the ring -# The more tokens, relative to other nodes, the larger the proportion of data -# that this node will store. You probably want all nodes to have the same number -# of tokens assuming they have equal hardware capability. -# -# If you leave this unspecified, Cassandra will use the default of 1 token for legacy compatibility, -# and will use the initial_token as described below. -# -# Specifying initial_token will override this setting on the node's initial start, -# on subsequent starts, this setting will apply even if initial token is set. -# -# If you already have a cluster with 1 token per node, and wish to migrate to -# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations -num_tokens: 256 - -# Triggers automatic allocation of num_tokens tokens for this node. The allocation -# algorithm attempts to choose tokens in a way that optimizes replicated load over -# the nodes in the datacenter for the replication strategy used by the specified -# keyspace. -# -# The load assigned to each node will be close to proportional to its number of -# vnodes. -# -# Only supported with the Murmur3Partitioner. -# allocate_tokens_for_keyspace: KEYSPACE - -# initial_token allows you to specify tokens manually. While you can use # it with -# vnodes (num_tokens > 1, above) -- in which case you should provide a -# comma-separated list -- it's primarily used when adding nodes # to legacy clusters -# that do not have vnodes enabled. -# initial_token: - -# See http://wiki.apache.org/cassandra/HintedHandoff -# May either be "true" or "false" to enable globally -hinted_handoff_enabled: true -# When hinted_handoff_enabled is true, a black list of data centers that will not -# perform hinted handoff -# hinted_handoff_disabled_datacenters: -# - DC1 -# - DC2 -# this defines the maximum amount of time a dead host will have hints -# generated. After it has been dead this long, new hints for it will not be -# created until it has been seen alive and gone down again. -max_hint_window_in_ms: 10800000 # 3 hours - -# Maximum throttle in KBs per second, per delivery thread. This will be -# reduced proportionally to the number of nodes in the cluster. (If there -# are two nodes in the cluster, each delivery thread will use the maximum -# rate; if there are three, each will throttle to half of the maximum, -# since we expect two nodes to be delivering hints simultaneously.) -hinted_handoff_throttle_in_kb: 1024 - -# Number of threads with which to deliver hints; -# Consider increasing this number when you have multi-dc deployments, since -# cross-dc handoff tends to be slower -max_hints_delivery_threads: 2 - -# Directory where Cassandra should store hints. -# If not set, the default directory is $CASSANDRA_HOME/data/hints. -hints_directory: /cassandra_data/hints - -# How often hints should be flushed from the internal buffers to disk. -# Will *not* trigger fsync. -hints_flush_period_in_ms: 10000 - -# Maximum size for a single hints file, in megabytes. -max_hints_file_size_in_mb: 128 - -# Compression to apply to the hint files. If omitted, hints files -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#hints_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# Maximum throttle in KBs per second, total. This will be -# reduced proportionally to the number of nodes in the cluster. -batchlog_replay_throttle_in_kb: 1024 - -# Authentication backend, implementing IAuthenticator; used to identify users -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthenticator, -# PasswordAuthenticator}. -# -# - AllowAllAuthenticator performs no checks - set it to disable authentication. -# - PasswordAuthenticator relies on username/password pairs to authenticate -# users. It keeps usernames and hashed passwords in system_auth.credentials table. -# Please increase system_auth keyspace replication factor if you use this authenticator. -# If using PasswordAuthenticator, CassandraRoleManager must also be used (see below) -authenticator: AllowAllAuthenticator - -# Authorization backend, implementing IAuthorizer; used to limit access/provide permissions -# Out of the box, Cassandra provides org.apache.cassandra.auth.{AllowAllAuthorizer, -# CassandraAuthorizer}. -# -# - AllowAllAuthorizer allows any action to any user - set it to disable authorization. -# - CassandraAuthorizer stores permissions in system_auth.permissions table. Please -# increase system_auth keyspace replication factor if you use this authorizer. -authorizer: AllowAllAuthorizer - -# Part of the Authentication & Authorization backend, implementing IRoleManager; used -# to maintain grants and memberships between roles. -# Out of the box, Cassandra provides org.apache.cassandra.auth.CassandraRoleManager, -# which stores role information in the system_auth keyspace. Most functions of the -# IRoleManager require an authenticated login, so unless the configured IAuthenticator -# actually implements authentication, most of this functionality will be unavailable. -# -# - CassandraRoleManager stores role data in the system_auth keyspace. Please -# increase system_auth keyspace replication factor if you use this role manager. -role_manager: CassandraRoleManager - -# Validity period for roles cache (fetching granted roles can be an expensive -# operation depending on the role manager, CassandraRoleManager is one example) -# Granted roles are cached for authenticated sessions in AuthenticatedUser and -# after the period specified here, become eligible for (async) reload. -# Defaults to 2000, set to 0 to disable caching entirely. -# Will be disabled automatically for AllowAllAuthenticator. -roles_validity_in_ms: 2000 - -# Refresh interval for roles cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If roles_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as roles_validity_in_ms. -# roles_update_interval_in_ms: 2000 - -# Validity period for permissions cache (fetching permissions can be an -# expensive operation depending on the authorizer, CassandraAuthorizer is -# one example). Defaults to 2000, set to 0 to disable. -# Will be disabled automatically for AllowAllAuthorizer. -permissions_validity_in_ms: 2000 - -# Refresh interval for permissions cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If permissions_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as permissions_validity_in_ms. -# permissions_update_interval_in_ms: 2000 - -# Validity period for credentials cache. This cache is tightly coupled to -# the provided PasswordAuthenticator implementation of IAuthenticator. If -# another IAuthenticator implementation is configured, this cache will not -# be automatically used and so the following settings will have no effect. -# Please note, credentials are cached in their encrypted form, so while -# activating this cache may reduce the number of queries made to the -# underlying table, it may not bring a significant reduction in the -# latency of individual authentication attempts. -# Defaults to 2000, set to 0 to disable credentials caching. -credentials_validity_in_ms: 2000 - -# Refresh interval for credentials cache (if enabled). -# After this interval, cache entries become eligible for refresh. Upon next -# access, an async reload is scheduled and the old value returned until it -# completes. If credentials_validity_in_ms is non-zero, then this must be -# also. -# Defaults to the same value as credentials_validity_in_ms. -# credentials_update_interval_in_ms: 2000 - -# The partitioner is responsible for distributing groups of rows (by -# partition key) across nodes in the cluster. You should leave this -# alone for new clusters. The partitioner can NOT be changed without -# reloading all data, so when upgrading you should set this to the -# same partitioner you were already using. -# -# Besides Murmur3Partitioner, partitioners included for backwards -# compatibility include RandomPartitioner, ByteOrderedPartitioner, and -# OrderPreservingPartitioner. -# -partitioner: org.apache.cassandra.dht.Murmur3Partitioner - -# Directories where Cassandra should store data on disk. Cassandra -# will spread data evenly across them, subject to the granularity of -# the configured compaction strategy. -# If not set, the default directory is $CASSANDRA_HOME/data/data. -data_file_directories: - - /cassandra_data/data - -# commit log. when running on magnetic HDD, this should be a -# separate spindle than the data directories. -# If not set, the default directory is $CASSANDRA_HOME/data/commitlog. -commitlog_directory: /cassandra_data/commitlog - -# policy for data disk failures: -# die: shut down gossip and client transports and kill the JVM for any fs errors or -# single-sstable errors, so the node can be replaced. -# stop_paranoid: shut down gossip and client transports even for single-sstable errors, -# kill the JVM for errors during startup. -# stop: shut down gossip and client transports, leaving the node effectively dead, but -# can still be inspected via JMX, kill the JVM for errors during startup. -# best_effort: stop using the failed disk and respond to requests based on -# remaining available sstables. This means you WILL see obsolete -# data at CL.ONE! -# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra -disk_failure_policy: stop - -# policy for commit disk failures: -# die: shut down gossip and Thrift and kill the JVM, so the node can be replaced. -# stop: shut down gossip and Thrift, leaving the node effectively dead, but -# can still be inspected via JMX. -# stop_commit: shutdown the commit log, letting writes collect but -# continuing to service reads, as in pre-2.0.5 Cassandra -# ignore: ignore fatal errors and let the batches fail -commit_failure_policy: stop - -# Maximum size of the key cache in memory. -# -# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the -# minimum, sometimes more. The key cache is fairly tiny for the amount of -# time it saves, so it's worthwhile to use it at large numbers. -# The row cache saves even more time, but must contain the entire row, -# so it is extremely space-intensive. It's best to only use the -# row cache if you have hot rows or static rows. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). Set to 0 to disable key cache. -key_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the key cache. Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 14400 or 4 hours. -key_cache_save_period: 14400 - -# Number of keys from the key cache to save -# Disabled by default, meaning all keys are going to be saved -# key_cache_keys_to_save: 100 - -# Row cache implementation class name. -# Available implementations: -# org.apache.cassandra.cache.OHCProvider Fully off-heap row cache implementation (default). -# org.apache.cassandra.cache.SerializingCacheProvider This is the row cache implementation availabile -# in previous releases of Cassandra. -# row_cache_class_name: org.apache.cassandra.cache.OHCProvider - -# Maximum size of the row cache in memory. -# Please note that OHC cache implementation requires some additional off-heap memory to manage -# the map structures and some in-flight memory during operations before/after cache entries can be -# accounted against the cache capacity. This overhead is usually small compared to the whole capacity. -# Do not specify more memory that the system can afford in the worst usual situation and leave some -# headroom for OS block level cache. Do never allow your system to swap. -# -# Default value is 0, to disable row caching. -row_cache_size_in_mb: 0 - -# Duration in seconds after which Cassandra should save the row cache. -# Caches are saved to saved_caches_directory as specified in this configuration file. -# -# Saved caches greatly improve cold-start speeds, and is relatively cheap in -# terms of I/O for the key cache. Row cache saving is much more expensive and -# has limited use. -# -# Default is 0 to disable saving the row cache. -row_cache_save_period: 0 - -# Number of keys from the row cache to save. -# Specify 0 (which is the default), meaning all keys are going to be saved -# row_cache_keys_to_save: 100 - -# Maximum size of the counter cache in memory. -# -# Counter cache helps to reduce counter locks' contention for hot counter cells. -# In case of RF = 1 a counter cache hit will cause Cassandra to skip the read before -# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration -# of the lock hold, helping with hot counter cell updates, but will not allow skipping -# the read entirely. Only the local (clock, count) tuple of a counter cell is kept -# in memory, not the whole counter, so it's relatively cheap. -# -# NOTE: if you reduce the size, you may not get you hottest keys loaded on startup. -# -# Default value is empty to make it "auto" (min(2.5% of Heap (in MB), 50MB)). Set to 0 to disable counter cache. -# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache. -counter_cache_size_in_mb: - -# Duration in seconds after which Cassandra should -# save the counter cache (keys only). Caches are saved to saved_caches_directory as -# specified in this configuration file. -# -# Default is 7200 or 2 hours. -counter_cache_save_period: 7200 - -# Number of keys from the counter cache to save -# Disabled by default, meaning all keys are going to be saved -# counter_cache_keys_to_save: 100 - -# saved caches -# If not set, the default directory is $CASSANDRA_HOME/data/saved_caches. -saved_caches_directory: /cassandra_data/saved_caches - -# commitlog_sync may be either "periodic" or "batch." -# -# When in batch mode, Cassandra won't ack writes until the commit log -# has been fsynced to disk. It will wait -# commitlog_sync_batch_window_in_ms milliseconds between fsyncs. -# This window should be kept short because the writer threads will -# be unable to do extra work while waiting. (You may need to increase -# concurrent_writes for the same reason.) -# -# commitlog_sync: batch -# commitlog_sync_batch_window_in_ms: 2 -# -# the other option is "periodic" where writes may be acked immediately -# and the CommitLog is simply synced every commitlog_sync_period_in_ms -# milliseconds. -commitlog_sync: periodic -commitlog_sync_period_in_ms: 10000 - -# The size of the individual commitlog file segments. A commitlog -# segment may be archived, deleted, or recycled once all the data -# in it (potentially from each columnfamily in the system) has been -# flushed to sstables. -# -# The default size is 32, which is almost always fine, but if you are -# archiving commitlog segments (see commitlog_archiving.properties), -# then you probably want a finer granularity of archiving; 8 or 16 MB -# is reasonable. -# Max mutation size is also configurable via max_mutation_size_in_kb setting in -# cassandra.yaml. The default is half the size commitlog_segment_size_in_mb * 1024. -# -# NOTE: If max_mutation_size_in_kb is set explicitly then commitlog_segment_size_in_mb must -# be set to at least twice the size of max_mutation_size_in_kb / 1024 -# -commitlog_segment_size_in_mb: 32 - -# Compression to apply to the commit log. If omitted, the commit log -# will be written uncompressed. LZ4, Snappy, and Deflate compressors -# are supported. -#commitlog_compression: -# - class_name: LZ4Compressor -# parameters: -# - - -# any class that implements the SeedProvider interface and has a -# constructor that takes a Map of parameters will do. -seed_provider: - # Addresses of hosts that are deemed contact points. - # Cassandra nodes use this list of hosts to find each other and learn - # the topology of the ring. You must change this if you are running - # multiple nodes! - #- class_name: io.k8s.cassandra.KubernetesSeedProvider - - class_name: SEED_PROVIDER - parameters: - # seeds is actually a comma-delimited list of addresses. - # Ex: ",," - - seeds: "127.0.0.1" - -# For workloads with more data than can fit in memory, Cassandra's -# bottleneck will be reads that need to fetch data from -# disk. "concurrent_reads" should be set to (16 * number_of_drives) in -# order to allow the operations to enqueue low enough in the stack -# that the OS and drives can reorder them. Same applies to -# "concurrent_counter_writes", since counter writes read the current -# values before incrementing and writing them back. -# -# On the other hand, since writes are almost never IO bound, the ideal -# number of "concurrent_writes" is dependent on the number of cores in -# your system; (8 * number_of_cores) is a good rule of thumb. -concurrent_reads: 32 -concurrent_writes: 32 -concurrent_counter_writes: 32 - -# For materialized view writes, as there is a read involved, so this should -# be limited by the less of concurrent reads or concurrent writes. -concurrent_materialized_view_writes: 32 - -# Maximum memory to use for pooling sstable buffers. Defaults to the smaller -# of 1/4 of heap or 512MB. This pool is allocated off-heap, so is in addition -# to the memory allocated for heap. Memory is only allocated as needed. -# file_cache_size_in_mb: 512 - -# Flag indicating whether to allocate on or off heap when the sstable buffer -# pool is exhausted, that is when it has exceeded the maximum memory -# file_cache_size_in_mb, beyond which it will not cache buffers but allocate on request. - -# buffer_pool_use_heap_if_exhausted: true - -# The strategy for optimizing disk read -# Possible values are: -# ssd (for solid state disks, the default) -# spinning (for spinning disks) -# disk_optimization_strategy: ssd - -# Total permitted memory to use for memtables. Cassandra will stop -# accepting writes when the limit is exceeded until a flush completes, -# and will trigger a flush based on memtable_cleanup_threshold -# If omitted, Cassandra will set both to 1/4 the size of the heap. -# memtable_heap_space_in_mb: 2048 -# memtable_offheap_space_in_mb: 2048 - -# Ratio of occupied non-flushing memtable size to total permitted size -# that will trigger a flush of the largest memtable. Larger mct will -# mean larger flushes and hence less compaction, but also less concurrent -# flush activity which can make it difficult to keep your disks fed -# under heavy write load. -# -# memtable_cleanup_threshold defaults to 1 / (memtable_flush_writers + 1) -# memtable_cleanup_threshold: 0.11 - -# Specify the way Cassandra allocates and manages memtable memory. -# Options are: -# heap_buffers: on heap nio buffers -# offheap_buffers: off heap (direct) nio buffers -# offheap_objects: off heap objects -memtable_allocation_type: heap_buffers - -# Total space to use for commit logs on disk. -# -# If space gets above this value, Cassandra will flush every dirty CF -# in the oldest segment and remove it. So a small total commitlog space -# will tend to cause more flush activity on less-active columnfamilies. -# -# The default value is the smaller of 8192, and 1/4 of the total space -# of the commitlog volume. -# -# commitlog_total_space_in_mb: 8192 - -# This sets the amount of memtable flush writer threads. These will -# be blocked by disk io, and each one will hold a memtable in memory -# while blocked. -# -# memtable_flush_writers defaults to one per data_file_directory. -# -# If your data directories are backed by SSD, you can increase this, but -# avoid having memtable_flush_writers * data_file_directories > number of cores -#memtable_flush_writers: 1 - -# A fixed memory pool size in MB for for SSTable index summaries. If left -# empty, this will default to 5% of the heap size. If the memory usage of -# all index summaries exceeds this limit, SSTables with low read rates will -# shrink their index summaries in order to meet this limit. However, this -# is a best-effort process. In extreme conditions Cassandra may need to use -# more than this amount of memory. -index_summary_capacity_in_mb: - -# How frequently index summaries should be resampled. This is done -# periodically to redistribute memory from the fixed-size pool to sstables -# proportional their recent read rates. Setting to -1 will disable this -# process, leaving existing index summaries at their current sampling level. -index_summary_resize_interval_in_minutes: 60 - -# Whether to, when doing sequential writing, fsync() at intervals in -# order to force the operating system to flush the dirty -# buffers. Enable this to avoid sudden dirty buffer flushing from -# impacting read latencies. Almost always a good idea on SSDs; not -# necessarily on platters. -trickle_fsync: false -trickle_fsync_interval_in_kb: 10240 - -# TCP port, for commands and data -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -storage_port: 7000 - -# SSL port, for encrypted communication. Unused unless enabled in -# encryption_options -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -ssl_storage_port: 7001 - -# Address or interface to bind to and tell other Cassandra nodes to connect to. -# You _must_ change this if you want multiple nodes to be able to communicate! -# -# Set listen_address OR listen_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving it blank leaves it up to InetAddress.getLocalHost(). This -# will always do the Right Thing _if_ the node is properly configured -# (hostname, name resolution, etc), and the Right Thing is to use the -# address associated with the hostname (it might not be). -# -# Setting listen_address to 0.0.0.0 is always wrong. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using listen_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -listen_address: localhost -# listen_interface: eth0 -# listen_interface_prefer_ipv6: false - -# Address to broadcast to other Cassandra nodes -# Leaving this blank will set it to the same value as listen_address -# broadcast_address: 1.2.3.4 - -# When using multiple physical network interfaces, set this -# to true to listen on broadcast_address in addition to -# the listen_address, allowing nodes to communicate in both -# interfaces. -# Ignore this property if the network configuration automatically -# routes between the public and private networks such as EC2. -# listen_on_broadcast_address: false - -# Internode authentication backend, implementing IInternodeAuthenticator; -# used to allow/disallow connections from peer nodes. -# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator - -# Whether to start the native transport server. -# Please note that the address on which the native transport is bound is the -# same as the rpc_address. The port however is different and specified below. -start_native_transport: true -# port for the CQL native transport to listen for clients on -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -native_transport_port: 9042 -# Enabling native transport encryption in client_encryption_options allows you to either use -# encryption for the standard port or to use a dedicated, additional port along with the unencrypted -# standard native_transport_port. -# Enabling client encryption and keeping native_transport_port_ssl disabled will use encryption -# for native_transport_port. Setting native_transport_port_ssl to a different value -# from native_transport_port will use encryption for native_transport_port_ssl while -# keeping native_transport_port unencrypted. -# native_transport_port_ssl: 9142 -# The maximum threads for handling requests when the native transport is used. -# This is similar to rpc_max_threads though the default differs slightly (and -# there is no native_transport_min_threads, idle threads will always be stopped -# after 30 seconds). -# native_transport_max_threads: 128 -# -# The maximum size of allowed frame. Frame (requests) larger than this will -# be rejected as invalid. The default is 256MB. -# native_transport_max_frame_size_in_mb: 256 - -# The maximum number of concurrent client connections. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections: -1 - -# The maximum number of concurrent client connections per source ip. -# The default is -1, which means unlimited. -# native_transport_max_concurrent_connections_per_ip: -1 - -# Whether to start the thrift rpc server. -start_rpc: false - -# The address or interface to bind the Thrift RPC service and native transport -# server to. -# -# Set rpc_address OR rpc_interface, not both. Interfaces must correspond -# to a single address, IP aliasing is not supported. -# -# Leaving rpc_address blank has the same effect as on listen_address -# (i.e. it will be based on the configured hostname of the node). -# -# Note that unlike listen_address, you can specify 0.0.0.0, but you must also -# set broadcast_rpc_address to a value other than 0.0.0.0. -# -# For security reasons, you should not expose this port to the internet. Firewall it if needed. -# -# If you choose to specify the interface by name and the interface has an ipv4 and an ipv6 address -# you can specify which should be chosen using rpc_interface_prefer_ipv6. If false the first ipv4 -# address will be used. If true the first ipv6 address will be used. Defaults to false preferring -# ipv4. If there is only one address it will be selected regardless of ipv4/ipv6. -rpc_address: localhost -# rpc_interface: eth1 -# rpc_interface_prefer_ipv6: false - -# port for Thrift to listen for clients on -rpc_port: 9160 - -# RPC address to broadcast to drivers and other Cassandra nodes. This cannot -# be set to 0.0.0.0. If left blank, this will be set to the value of -# rpc_address. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must -# be set. -# broadcast_rpc_address: 1.2.3.4 - -# enable or disable keepalive on rpc/native connections -rpc_keepalive: true - -# Cassandra provides two out-of-the-box options for the RPC Server: -# -# sync -> One thread per thrift connection. For a very large number of clients, memory -# will be your limiting factor. On a 64 bit JVM, 180KB is the minimum stack size -# per thread, and that will correspond to your use of virtual memory (but physical memory -# may be limited depending on use of stack space). -# -# hsha -> Stands for "half synchronous, half asynchronous." All thrift clients are handled -# asynchronously using a small number of threads that does not vary with the amount -# of thrift clients (and thus scales well to many clients). The rpc requests are still -# synchronous (one thread per active request). If hsha is selected then it is essential -# that rpc_max_threads is changed from the default value of unlimited. -# -# The default is sync because on Windows hsha is about 30% slower. On Linux, -# sync/hsha performance is about the same, with hsha of course using less memory. -# -# Alternatively, can provide your own RPC server by providing the fully-qualified class name -# of an o.a.c.t.TServerFactory that can create an instance of it. -rpc_server_type: sync - -# Uncomment rpc_min|max_thread to set request pool size limits. -# -# Regardless of your choice of RPC server (see above), the number of maximum requests in the -# RPC thread pool dictates how many concurrent requests are possible (but if you are using the sync -# RPC server, it also dictates the number of clients that can be connected at all). -# -# The default is unlimited and thus provides no protection against clients overwhelming the server. You are -# encouraged to set a maximum that makes sense for you in production, but do keep in mind that -# rpc_max_threads represents the maximum number of client requests this server may execute concurrently. -# -# rpc_min_threads: 16 -# rpc_max_threads: 2048 - -# uncomment to set socket buffer sizes on rpc connections -# rpc_send_buff_size_in_bytes: -# rpc_recv_buff_size_in_bytes: - -# Uncomment to set socket buffer size for internode communication -# Note that when setting this, the buffer size is limited by net.core.wmem_max -# and when not setting it it is defined by net.ipv4.tcp_wmem -# See: -# /proc/sys/net/core/wmem_max -# /proc/sys/net/core/rmem_max -# /proc/sys/net/ipv4/tcp_wmem -# /proc/sys/net/ipv4/tcp_wmem -# and: man tcp -# internode_send_buff_size_in_bytes: -# internode_recv_buff_size_in_bytes: - -# Frame size for thrift (maximum message length). -thrift_framed_transport_size_in_mb: 15 - -# Set to true to have Cassandra create a hard link to each sstable -# flushed or streamed locally in a backups/ subdirectory of the -# keyspace data. Removing these links is the operator's -# responsibility. -incremental_backups: false - -# Whether or not to take a snapshot before each compaction. Be -# careful using this option, since Cassandra won't clean up the -# snapshots for you. Mostly useful if you're paranoid when there -# is a data format change. -snapshot_before_compaction: false - -# Whether or not a snapshot is taken of the data before keyspace truncation -# or dropping of column families. The STRONGLY advised default of true -# should be used to provide data safety. If you set this flag to false, you will -# lose data on truncation or drop. -auto_snapshot: true - -# When executing a scan, within or across a partition, we need to keep the -# tombstones seen in memory so we can return them to the coordinator, which -# will use them to make sure other replicas also know about the deleted rows. -# With workloads that generate a lot of tombstones, this can cause performance -# problems and even exaust the server heap. -# (http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets) -# Adjust the thresholds here if you understand the dangers and want to -# scan more tombstones anyway. These thresholds may also be adjusted at runtime -# using the StorageService mbean. -tombstone_warn_threshold: 1000 -tombstone_failure_threshold: 100000 - -# Granularity of the collation index of rows within a partition. -# Increase if your rows are large, or if you have a very large -# number of rows per partition. The competing goals are these: -# 1) a smaller granularity means more index entries are generated -# and looking up rows within the partition by collation column -# is faster -# 2) but, Cassandra will keep the collation index in memory for hot -# rows (as part of the key cache), so a larger granularity means -# you can cache more hot rows -column_index_size_in_kb: 64 - - -# Log WARN on any batch size exceeding this value. 5kb per batch by default. -# Caution should be taken on increasing the size of this threshold as it can lead to node instability. -batch_size_warn_threshold_in_kb: 5 - -# Fail any batch exceeding this value. 50kb (10x warn threshold) by default. -batch_size_fail_threshold_in_kb: 50 - -# Number of simultaneous compactions to allow, NOT including -# validation "compactions" for anti-entropy repair. Simultaneous -# compactions can help preserve read performance in a mixed read/write -# workload, by mitigating the tendency of small sstables to accumulate -# during a single long running compactions. The default is usually -# fine and if you experience problems with compaction running too -# slowly or too fast, you should look at -# compaction_throughput_mb_per_sec first. -# -# concurrent_compactors defaults to the smaller of (number of disks, -# number of cores), with a minimum of 2 and a maximum of 8. -# -# If your data directories are backed by SSD, you should increase this -# to the number of cores. -#concurrent_compactors: 1 - -# Throttles compaction to the given total throughput across the entire -# system. The faster you insert data, the faster you need to compact in -# order to keep the sstable count down, but in general, setting this to -# 16 to 32 times the rate you are inserting data is more than sufficient. -# Setting this to 0 disables throttling. Note that this account for all types -# of compaction, including validation compaction. -compaction_throughput_mb_per_sec: 16 - -# Log a warning when compacting partitions larger than this value -compaction_large_partition_warning_threshold_mb: 100 - -# When compacting, the replacement sstable(s) can be opened before they -# are completely written, and used in place of the prior sstables for -# any range that has been written. This helps to smoothly transfer reads -# between the sstables, reducing page cache churn and keeping hot rows hot -sstable_preemptive_open_interval_in_mb: 50 - -# Throttles all outbound streaming file transfers on this node to the -# given total throughput in Mbps. This is necessary because Cassandra does -# mostly sequential IO when streaming data during bootstrap or repair, which -# can lead to saturating the network connection and degrading rpc performance. -# When unset, the default is 200 Mbps or 25 MB/s. -# stream_throughput_outbound_megabits_per_sec: 200 - -# Throttles all streaming file transfer between the datacenters, -# this setting allows users to throttle inter dc stream throughput in addition -# to throttling all network stream traffic as configured with -# stream_throughput_outbound_megabits_per_sec -# When unset, the default is 200 Mbps or 25 MB/s -# inter_dc_stream_throughput_outbound_megabits_per_sec: 200 - -# How long the coordinator should wait for read operations to complete -read_request_timeout_in_ms: 5000 -# How long the coordinator should wait for seq or index scans to complete -range_request_timeout_in_ms: 10000 -# How long the coordinator should wait for writes to complete -write_request_timeout_in_ms: 2000 -# How long the coordinator should wait for counter writes to complete -counter_write_request_timeout_in_ms: 5000 -# How long a coordinator should continue to retry a CAS operation -# that contends with other proposals for the same row -cas_contention_timeout_in_ms: 1000 -# How long the coordinator should wait for truncates to complete -# (This can be much longer, because unless auto_snapshot is disabled -# we need to flush first so we can snapshot before removing the data.) -truncate_request_timeout_in_ms: 60000 -# The default timeout for other, miscellaneous operations -request_timeout_in_ms: 10000 - -# Enable operation timeout information exchange between nodes to accurately -# measure request timeouts. If disabled, replicas will assume that requests -# were forwarded to them instantly by the coordinator, which means that -# under overload conditions we will waste that much extra time processing -# already-timed-out requests. -# -# Warning: before enabling this property make sure to ntp is installed -# and the times are synchronized between the nodes. -cross_node_timeout: false - -# Set socket timeout for streaming operation. -# The stream session is failed if no data is received by any of the -# participants within that period. -# Default value is 3600000, which means streams timeout after an hour. -# streaming_socket_timeout_in_ms: 3600000 - -# phi value that must be reached for a host to be marked down. -# most users should never need to adjust this. -# phi_convict_threshold: 8 - -# endpoint_snitch -- Set this to a class that implements -# IEndpointSnitch. The snitch has two functions: -# - it teaches Cassandra enough about your network topology to route -# requests efficiently -# - it allows Cassandra to spread replicas around your cluster to avoid -# correlated failures. It does this by grouping machines into -# "datacenters" and "racks." Cassandra will do its best not to have -# more than one replica on the same "rack" (which may not actually -# be a physical location) -# -# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER, -# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS -# ARE PLACED. -# -# IF THE RACK A REPLICA IS PLACED IN CHANGES AFTER THE REPLICA HAS BEEN -# ADDED TO A RING, THE NODE MUST BE DECOMMISSIONED AND REBOOTSTRAPPED. -# -# Out of the box, Cassandra provides -# - SimpleSnitch: -# Treats Strategy order as proximity. This can improve cache -# locality when disabling read repair. Only appropriate for -# single-datacenter deployments. -# - GossipingPropertyFileSnitch -# This should be your go-to snitch for production use. The rack -# and datacenter for the local node are defined in -# cassandra-rackdc.properties and propagated to other nodes via -# gossip. If cassandra-topology.properties exists, it is used as a -# fallback, allowing migration from the PropertyFileSnitch. -# - PropertyFileSnitch: -# Proximity is determined by rack and data center, which are -# explicitly configured in cassandra-topology.properties. -# - Ec2Snitch: -# Appropriate for EC2 deployments in a single Region. Loads Region -# and Availability Zone information from the EC2 API. The Region is -# treated as the datacenter, and the Availability Zone as the rack. -# Only private IPs are used, so this will not work across multiple -# Regions. -# - Ec2MultiRegionSnitch: -# Uses public IPs as broadcast_address to allow cross-region -# connectivity. (Thus, you should set seed addresses to the public -# IP as well.) You will need to open the storage_port or -# ssl_storage_port on the public IP firewall. (For intra-Region -# traffic, Cassandra will switch to the private IP after -# establishing a connection.) -# - RackInferringSnitch: -# Proximity is determined by rack and data center, which are -# assumed to correspond to the 3rd and 2nd octet of each node's IP -# address, respectively. Unless this happens to match your -# deployment conventions, this is best used as an example of -# writing a custom Snitch class and is provided in that spirit. -# -# You can use a custom Snitch by setting this to the full class name -# of the snitch, which will be assumed to be on your classpath. -endpoint_snitch: SimpleSnitch - -# controls how often to perform the more expensive part of host score -# calculation -dynamic_snitch_update_interval_in_ms: 100 -# controls how often to reset all host scores, allowing a bad host to -# possibly recover -dynamic_snitch_reset_interval_in_ms: 600000 -# if set greater than zero and read_repair_chance is < 1.0, this will allow -# 'pinning' of replicas to hosts in order to increase cache capacity. -# The badness threshold will control how much worse the pinned host has to be -# before the dynamic snitch will prefer other replicas over it. This is -# expressed as a double which represents a percentage. Thus, a value of -# 0.2 means Cassandra would continue to prefer the static snitch values -# until the pinned host was 20% worse than the fastest. -dynamic_snitch_badness_threshold: 0.1 - -# request_scheduler -- Set this to a class that implements -# RequestScheduler, which will schedule incoming client requests -# according to the specific policy. This is useful for multi-tenancy -# with a single Cassandra cluster. -# NOTE: This is specifically for requests from the client and does -# not affect inter node communication. -# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place -# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of -# client requests to a node with a separate queue for each -# request_scheduler_id. The scheduler is further customized by -# request_scheduler_options as described below. -request_scheduler: org.apache.cassandra.scheduler.NoScheduler - -# Scheduler Options vary based on the type of scheduler -# NoScheduler - Has no options -# RoundRobin -# - throttle_limit -- The throttle_limit is the number of in-flight -# requests per client. Requests beyond -# that limit are queued up until -# running requests can complete. -# The value of 80 here is twice the number of -# concurrent_reads + concurrent_writes. -# - default_weight -- default_weight is optional and allows for -# overriding the default which is 1. -# - weights -- Weights are optional and will default to 1 or the -# overridden default_weight. The weight translates into how -# many requests are handled during each turn of the -# RoundRobin, based on the scheduler id. -# -# request_scheduler_options: -# throttle_limit: 80 -# default_weight: 5 -# weights: -# Keyspace1: 1 -# Keyspace2: 5 - -# request_scheduler_id -- An identifier based on which to perform -# the request scheduling. Currently the only valid option is keyspace. -# request_scheduler_id: keyspace - -# Enable or disable inter-node encryption -# Default settings are TLS v1, RSA 1024-bit keys (it is imperative that -# users generate their own keys) TLS_RSA_WITH_AES_128_CBC_SHA as the cipher -# suite for authentication, key exchange and encryption of the actual data transfers. -# Use the DHE/ECDHE ciphers if running in FIPS 140 compliant mode. -# NOTE: No custom encryption options are enabled at the moment -# The available internode options are : all, none, dc, rack -# -# If set to dc cassandra will encrypt the traffic between the DCs -# If set to rack cassandra will encrypt the traffic between the racks -# -# The passwords used in these options must match the passwords used when generating -# the keystore and truststore. For instructions on generating these files, see: -# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore -# -server_encryption_options: - internode_encryption: none - keystore: conf/.keystore - keystore_password: cassandra - truststore: conf/.truststore - truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - # require_client_auth: false - -# enable or disable client/server encryption. -client_encryption_options: - enabled: false - # If enabled and optional is set to true encrypted and unencrypted connections are handled. - optional: false - keystore: conf/.keystore - keystore_password: cassandra - # require_client_auth: false - # Set trustore and truststore_password if require_client_auth is true - # truststore: conf/.truststore - # truststore_password: cassandra - # More advanced defaults below: - # protocol: TLS - # algorithm: SunX509 - # store_type: JKS - # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA] - -# internode_compression controls whether traffic between nodes is -# compressed. -# can be: all - all traffic is compressed -# dc - traffic between different datacenters is compressed -# none - nothing is compressed. -internode_compression: all - -# Enable or disable tcp_nodelay for inter-dc communication. -# Disabling it will result in larger (but fewer) network packets being sent, -# reducing overhead from the TCP protocol itself, at the cost of increasing -# latency if you block for cross-datacenter responses. -inter_dc_tcp_nodelay: false - -# TTL for different trace types used during logging of the repair process. -tracetype_query_ttl: 86400 -tracetype_repair_ttl: 604800 - -# GC Pauses greater than gc_warn_threshold_in_ms will be logged at WARN level -# Adjust the threshold based on your application throughput requirement -# By default, Cassandra logs GC Pauses greater than 200 ms at INFO level -gc_warn_threshold_in_ms: 1000 - -# UDFs (user defined functions) are disabled by default. -# As of Cassandra 3.0 there is a sandbox in place that should prevent execution of evil code. -enable_user_defined_functions: false - -# Enables scripted UDFs (JavaScript UDFs). -# Java UDFs are always enabled, if enable_user_defined_functions is true. -# Enable this option to be able to use UDFs with "language javascript" or any custom JSR-223 provider. -# This option has no effect, if enable_user_defined_functions is false. -enable_scripted_user_defined_functions: false - -# The default Windows kernel timer and scheduling resolution is 15.6ms for power conservation. -# Lowering this value on Windows can provide much tighter latency and better throughput, however -# some virtualized environments may see a negative performance impact from changing this setting -# below their system default. The sysinternals 'clockres' tool can confirm your system's default -# setting. -windows_timer_interval: 1 - - -# Enables encrypting data at-rest (on disk). Different key providers can be plugged in, but the default reads from -# a JCE-style keystore. A single keystore can hold multiple keys, but the one referenced by -# the "key_alias" is the only key that will be used for encrypt opertaions; previously used keys -# can still (and should!) be in the keystore and will be used on decrypt operations -# (to handle the case of key rotation). -# -# It is strongly recommended to download and install Java Cryptography Extension (JCE) -# Unlimited Strength Jurisdiction Policy Files for your version of the JDK. -# (current link: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html) -# -# Currently, only the following file types are supported for transparent data encryption, although -# more are coming in future cassandra releases: commitlog, hints -transparent_data_encryption_options: - enabled: false - chunk_length_kb: 64 - cipher: AES/CBC/PKCS5Padding - key_alias: testing:1 - # CBC IV length for AES needs to be 16 bytes (which is also the default size) - # iv_length: 16 - key_provider: - - class_name: org.apache.cassandra.security.JKSKeyProvider - parameters: - - keystore: conf/.keystore - keystore_password: cassandra - store_type: JCEKS - key_password: cassandra - diff --git a/examples/storage/cassandra/image/files/jvm.options b/examples/storage/cassandra/image/files/jvm.options deleted file mode 100644 index 6568dc0d0f..0000000000 --- a/examples/storage/cassandra/image/files/jvm.options +++ /dev/null @@ -1,240 +0,0 @@ -########################################################################### -# jvm.options # -# # -# - all flags defined here will be used by cassandra to startup the JVM # -# - one flag should be specified per line # -# - lines that do not start with '-' will be ignored # -# - only static flags are accepted (no variables or parameters) # -# - dynamic flags will be appended to these on cassandra-env # -########################################################################### - -###################### -# STARTUP PARAMETERS # -###################### - -# Uncomment any of the following properties to enable specific startup parameters - -# In a multi-instance deployment, multiple Cassandra instances will independently assume that all -# CPU processors are available to it. This setting allows you to specify a smaller set of processors -# and perhaps have affinity. -#-Dcassandra.available_processors=number_of_processors - -# The directory location of the cassandra.yaml file. -#-Dcassandra.config=directory - -# Sets the initial partitioner token for a node the first time the node is started. -#-Dcassandra.initial_token=token - -# Set to false to start Cassandra on a node but not have the node join the cluster. -#-Dcassandra.join_ring=true|false - -# Set to false to clear all gossip state for the node on restart. Use when you have changed node -# information in cassandra.yaml (such as listen_address). -#-Dcassandra.load_ring_state=true|false - -# Enable pluggable metrics reporter. See Pluggable metrics reporting in Cassandra 2.0.2. -#-Dcassandra.metricsReporterConfigFile=file - -# Set the port on which the CQL native transport listens for clients. (Default: 9042) -#-Dcassandra.native_transport_port=port - -# Overrides the partitioner. (Default: org.apache.cassandra.dht.Murmur3Partitioner) -#-Dcassandra.partitioner=partitioner - -# To replace a node that has died, restart a new node in its place specifying the address of the -# dead node. The new node must not have any data in its data directory, that is, it must be in the -# same state as before bootstrapping. -#-Dcassandra.replace_address=listen_address or broadcast_address of dead node - -# Allow restoring specific tables from an archived commit log. -#-Dcassandra.replayList=table - -# Allows overriding of the default RING_DELAY (1000ms), which is the amount of time a node waits -# before joining the ring. -#-Dcassandra.ring_delay_ms=ms - -# Set the port for the Thrift RPC service, which is used for client connections. (Default: 9160) -#-Dcassandra.rpc_port=port - -# Set the SSL port for encrypted communication. (Default: 7001) -#-Dcassandra.ssl_storage_port=port - -# Enable or disable the native transport server. See start_native_transport in cassandra.yaml. -# cassandra.start_native_transport=true|false - -# Enable or disable the Thrift RPC server. (Default: true) -#-Dcassandra.start_rpc=true/false - -# Set the port for inter-node communication. (Default: 7000) -#-Dcassandra.storage_port=port - -# Set the default location for the trigger JARs. (Default: conf/triggers) -#-Dcassandra.triggers_dir=directory - -# For testing new compaction and compression strategies. It allows you to experiment with different -# strategies and benchmark write performance differences without affecting the production workload. -#-Dcassandra.write_survey=true - -# To disable configuration via JMX of auth caches (such as those for credentials, permissions and -# roles). This will mean those config options can only be set (persistently) in cassandra.yaml -# and will require a restart for new values to take effect. -#-Dcassandra.disable_auth_caches_remote_configuration=true - -######################## -# GENERAL JVM SETTINGS # -######################## - -# enable assertions. disabling this in production will give a modest -# performance benefit (around 5%). --ea - -# enable thread priorities, primarily so we can give periodic tasks -# a lower priority to avoid interfering with client workload --XX:+UseThreadPriorities - -# allows lowering thread priority without being root on linux - probably -# not necessary on Windows but doesn't harm anything. -# see http://tech.stolsvik.com/2010/01/linux-java-thread-priorities-workar --XX:ThreadPriorityPolicy=42 - -# Enable heap-dump if there's an OOM --XX:+HeapDumpOnOutOfMemoryError - -# Per-thread stack size. --Xss256k - -# Larger interned string table, for gossip's benefit (CASSANDRA-6410) --XX:StringTableSize=1000003 - -# Make sure all memory is faulted and zeroed on startup. -# This helps prevent soft faults in containers and makes -# transparent hugepage allocation more effective. --XX:+AlwaysPreTouch - -# Disable biased locking as it does not benefit Cassandra. --XX:-UseBiasedLocking - -# Enable thread-local allocation blocks and allow the JVM to automatically -# resize them at runtime. --XX:+UseTLAB --XX:+ResizeTLAB - -# http://www.evanjones.ca/jvm-mmap-pause.html --XX:+PerfDisableSharedMem - -# Prefer binding to IPv4 network intefaces (when net.ipv6.bindv6only=1). See -# http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6342561 (short version: -# comment out this entry to enable IPv6 support). --Djava.net.preferIPv4Stack=true - -### Debug options - -# uncomment to enable flight recorder -#-XX:+UnlockCommercialFeatures -#-XX:+FlightRecorder - -# uncomment to have Cassandra JVM listen for remote debuggers/profilers on port 1414 -#-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1414 - -# uncomment to have Cassandra JVM log internal method compilation (developers only) -#-XX:+UnlockDiagnosticVMOptions -#-XX:+LogCompilation - -################# -# HEAP SETTINGS # -################# - -# Heap size is automatically calculated by cassandra-env based on this -# formula: max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB)) -# That is: -# - calculate 1/2 ram and cap to 1024MB -# - calculate 1/4 ram and cap to 8192MB -# - pick the max -# -# For production use you may wish to adjust this for your environment. -# If that's the case, uncomment the -Xmx and Xms options below to override the -# automatic calculation of JVM heap memory. -# -# It is recommended to set min (-Xms) and max (-Xmx) heap sizes to -# the same value to avoid stop-the-world GC pauses during resize, and -# so that we can lock the heap in memory on startup to prevent any -# of it from being swapped out. -#-Xms4G -#-Xmx4G - -# Young generation size is automatically calculated by cassandra-env -# based on this formula: min(100 * num_cores, 1/4 * heap size) -# -# The main trade-off for the young generation is that the larger it -# is, the longer GC pause times will be. The shorter it is, the more -# expensive GC will be (usually). -# -# It is not recommended to set the young generation size if using the -# G1 GC, since that will override the target pause-time goal. -# More info: http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html -# -# The example below assumes a modern 8-core+ machine for decent -# times. If in doubt, and if you do not particularly want to tweak, go -# 100 MB per physical CPU core. -#-Xmn800M - -################# -# GC SETTINGS # -################# - -### CMS Settings - -#-XX:+UseParNewGC -#-XX:+UseConcMarkSweepGC -#-XX:+CMSParallelRemarkEnabled -#-XX:SurvivorRatio=8 -#-XX:MaxTenuringThreshold=1 -#-XX:CMSInitiatingOccupancyFraction=75 -#-XX:+UseCMSInitiatingOccupancyOnly -#-XX:CMSWaitDuration=10000 -#-XX:+CMSParallelInitialMarkEnabled -#-XX:+CMSEdenChunksRecordAlways -# some JVMs will fill up their heap when accessed via JMX, see CASSANDRA-6541 -#-XX:+CMSClassUnloadingEnabled - -### G1 Settings (experimental, comment previous section and uncomment section below to enable) - -## Use the Hotspot garbage-first collector. --XX:+UseG1GC -# -## Have the JVM do less remembered set work during STW, instead -## preferring concurrent GC. Reduces p99.9 latency. --XX:G1RSetUpdatingPauseTimePercent=5 -# -## Main G1GC tunable: lowering the pause target will lower throughput and vise versa. -## 200ms is the JVM default and lowest viable setting -## 1000ms increases throughput. Keep it smaller than the timeouts in cassandra.yaml. -#-XX:MaxGCPauseMillis=500 - -## Optional G1 Settings - -# Save CPU time on large (>= 16GB) heaps by delaying region scanning -# until the heap is 70% full. The default in Hotspot 8u40 is 40%. -#-XX:InitiatingHeapOccupancyPercent=70 - -# For systems with > 8 cores, the default ParallelGCThreads is 5/8 the number of logical cores. -# Otherwise equal to the number of cores when 8 or less. -# Machines with > 10 cores should try setting these to <= full cores. -#-XX:ParallelGCThreads=16 -# By default, ConcGCThreads is 1/4 of ParallelGCThreads. -# Setting both to the same value can reduce STW durations. -#-XX:ConcGCThreads=16 - -### GC logging options -- uncomment to enable - --XX:+PrintGCDetails --XX:+PrintGCDateStamps --XX:+PrintHeapAtGC --XX:+PrintTenuringDistribution --XX:+PrintGCApplicationStoppedTime --XX:+PrintPromotionFailure -#-XX:PrintFLSStatistics=1 -#-Xloggc:/var/log/cassandra/gc.log --XX:+UseGCLogFileRotation --XX:NumberOfGCLogFiles=10 --XX:GCLogFileSize=10M diff --git a/examples/storage/cassandra/image/files/kubernetes-cassandra.jar b/examples/storage/cassandra/image/files/kubernetes-cassandra.jar deleted file mode 100644 index ed2621975a..0000000000 Binary files a/examples/storage/cassandra/image/files/kubernetes-cassandra.jar and /dev/null differ diff --git a/examples/storage/cassandra/image/files/logback.xml b/examples/storage/cassandra/image/files/logback.xml deleted file mode 100644 index 2bb893e542..0000000000 --- a/examples/storage/cassandra/image/files/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - %-5level %date{HH:mm:ss,SSS} %msg%n - - - - - - - \ No newline at end of file diff --git a/examples/storage/cassandra/image/files/ready-probe.sh b/examples/storage/cassandra/image/files/ready-probe.sh deleted file mode 100644 index 6601b1a495..0000000000 --- a/examples/storage/cassandra/image/files/ready-probe.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -# Copyright 2016 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -if [[ $(nodetool status | grep $POD_IP) == *"UN"* ]]; then - if [[ $DEBUG ]]; then - echo "UN"; - fi - exit 0; -else - if [[ $DEBUG ]]; then - echo "Not Up"; - fi - exit 1; -fi diff --git a/examples/storage/cassandra/image/files/run.sh b/examples/storage/cassandra/image/files/run.sh deleted file mode 100755 index 4f7ae651de..0000000000 --- a/examples/storage/cassandra/image/files/run.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/bash - -# Copyright 2016 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -e -CASSANDRA_CONF_DIR=/etc/cassandra -CASSANDRA_CFG=$CASSANDRA_CONF_DIR/cassandra.yaml - -# we are doing StatefulSet or just setting our seeds -if [ -z "$CASSANDRA_SEEDS" ]; then - HOSTNAME=$(hostname -f) - CASSANDRA_SEEDS=$(hostname -f) -fi - -# The following vars relate to there counter parts in $CASSANDRA_CFG -# for instance rpc_address -CASSANDRA_RPC_ADDRESS="${CASSANDRA_RPC_ADDRESS:-0.0.0.0}" -CASSANDRA_NUM_TOKENS="${CASSANDRA_NUM_TOKENS:-32}" -CASSANDRA_CLUSTER_NAME="${CASSANDRA_CLUSTER_NAME:='Test Cluster'}" -CASSANDRA_LISTEN_ADDRESS=${POD_IP:-$HOSTNAME} -CASSANDRA_BROADCAST_ADDRESS=${POD_IP:-$HOSTNAME} -CASSANDRA_BROADCAST_RPC_ADDRESS=${POD_IP:-$HOSTNAME} -CASSANDRA_DISK_OPTIMIZATION_STRATEGY="${CASSANDRA_DISK_OPTIMIZATION_STRATEGY:-ssd}" -CASSANDRA_MIGRATION_WAIT="${CASSANDRA_MIGRATION_WAIT:-1}" -CASSANDRA_ENDPOINT_SNITCH="${CASSANDRA_ENDPOINT_SNITCH:-SimpleSnitch}" -CASSANDRA_DC="${CASSANDRA_DC}" -CASSANDRA_RACK="${CASSANDRA_RACK}" -CASSANDRA_RING_DELAY="${CASSANDRA_RING_DELAY:-30000}" -CASSANDRA_AUTO_BOOTSTRAP="${CASSANDRA_AUTO_BOOTSTRAP:-true}" -CASSANDRA_SEEDS="${CASSANDRA_SEEDS:false}" -CASSANDRA_SEED_PROVIDER="${CASSANDRA_SEED_PROVIDER:-org.apache.cassandra.locator.SimpleSeedProvider}" -CASSANDRA_AUTO_BOOTSTRAP="${CASSANDRA_AUTO_BOOTSTRAP:false}" - -# Turn off JMX auth -CASSANDRA_OPEN_JMX="${CASSANDRA_OPEN_JMX:-false}" -# send GC to STDOUT -CASSANDRA_GC_STDOUT="${CASSANDRA_GC_STDOUT:-false}" - -echo Starting Cassandra on ${CASSANDRA_LISTEN_ADDRESS} -echo CASSANDRA_CONF_DIR ${CASSANDRA_CONF_DIR} -echo CASSANDRA_CFG ${CASSANDRA_CFG} -echo CASSANDRA_AUTO_BOOTSTRAP ${CASSANDRA_AUTO_BOOTSTRAP} -echo CASSANDRA_BROADCAST_ADDRESS ${CASSANDRA_BROADCAST_ADDRESS} -echo CASSANDRA_BROADCAST_RPC_ADDRESS ${CASSANDRA_BROADCAST_RPC_ADDRESS} -echo CASSANDRA_CLUSTER_NAME ${CASSANDRA_CLUSTER_NAME} -echo CASSANDRA_COMPACTION_THROUGHPUT_MB_PER_SEC ${CASSANDRA_COMPACTION_THROUGHPUT_MB_PER_SEC} -echo CASSANDRA_CONCURRENT_COMPACTORS ${CASSANDRA_CONCURRENT_COMPACTORS} -echo CASSANDRA_CONCURRENT_READS ${CASSANDRA_CONCURRENT_READS} -echo CASSANDRA_CONCURRENT_WRITES ${CASSANDRA_CONCURRENT_WRITES} -echo CASSANDRA_COUNTER_CACHE_SIZE_IN_MB ${CASSANDRA_COUNTER_CACHE_SIZE_IN_MB} -echo CASSANDRA_DC ${CASSANDRA_DC} -echo CASSANDRA_DISK_OPTIMIZATION_STRATEGY ${CASSANDRA_DISK_OPTIMIZATION_STRATEGY} -echo CASSANDRA_ENDPOINT_SNITCH ${CASSANDRA_ENDPOINT_SNITCH} -echo CASSANDRA_GC_WARN_THRESHOLD_IN_MS ${CASSANDRA_GC_WARN_THRESHOLD_IN_MS} -echo CASSANDRA_INTERNODE_COMPRESSION ${CASSANDRA_INTERNODE_COMPRESSION} -echo CASSANDRA_KEY_CACHE_SIZE_IN_MB ${CASSANDRA_KEY_CACHE_SIZE_IN_MB} -echo CASSANDRA_LISTEN_ADDRESS ${CASSANDRA_LISTEN_ADDRESS} -echo CASSANDRA_LISTEN_INTERFACE ${CASSANDRA_LISTEN_INTERFACE} -echo CASSANDRA_MEMTABLE_ALLOCATION_TYPE ${CASSANDRA_MEMTABLE_ALLOCATION_TYPE} -echo CASSANDRA_MEMTABLE_CLEANUP_THRESHOLD ${CASSANDRA_MEMTABLE_CLEANUP_THRESHOLD} -echo CASSANDRA_MEMTABLE_FLUSH_WRITERS ${CASSANDRA_MEMTABLE_FLUSH_WRITERS} -echo CASSANDRA_MIGRATION_WAIT ${CASSANDRA_MIGRATION_WAIT} -echo CASSANDRA_NUM_TOKENS ${CASSANDRA_NUM_TOKENS} -echo CASSANDRA_RACK ${CASSANDRA_RACK} -echo CASSANDRA_RING_DELAY ${CASSANDRA_RING_DELAY} -echo CASSANDRA_RPC_ADDRESS ${CASSANDRA_RPC_ADDRESS} -echo CASSANDRA_RPC_INTERFACE ${CASSANDRA_RPC_INTERFACE} -echo CASSANDRA_SEEDS ${CASSANDRA_SEEDS} -echo CASSANDRA_SEED_PROVIDER ${CASSANDRA_SEED_PROVIDER} - - -# if DC and RACK are set, use GossipingPropertyFileSnitch -if [[ $CASSANDRA_DC && $CASSANDRA_RACK ]]; then - echo "dc=$CASSANDRA_DC" > $CASSANDRA_CONF_DIR/cassandra-rackdc.properties - echo "rack=$CASSANDRA_RACK" >> $CASSANDRA_CONF_DIR/cassandra-rackdc.properties - CASSANDRA_ENDPOINT_SNITCH="GossipingPropertyFileSnitch" -fi - -if [ -n "$CASSANDRA_MAX_HEAP" ]; then - sed -ri "s/^(#)?-Xmx[0-9]+.*/-Xmx$CASSANDRA_MAX_HEAP/" "$CASSANDRA_CONF_DIR/jvm.options" - sed -ri "s/^(#)?-Xms[0-9]+.*/-Xms$CASSANDRA_MAX_HEAP/" "$CASSANDRA_CONF_DIR/jvm.options" -fi - -if [ -n "$CASSANDRA_REPLACE_NODE" ]; then - echo "-Dcassandra.replace_address=$CASSANDRA_REPLACE_NODE/" >> "$CASSANDRA_CONF_DIR/jvm.options" -fi - -for rackdc in dc rack; do - var="CASSANDRA_${rackdc^^}" - val="${!var}" - if [ "$val" ]; then - sed -ri 's/^('"$rackdc"'=).*/\1 '"$val"'/' "$CASSANDRA_CONF_DIR/cassandra-rackdc.properties" - fi -done - -# TODO what else needs to be modified -for yaml in \ - broadcast_address \ - broadcast_rpc_address \ - cluster_name \ - disk_optimization_strategy \ - endpoint_snitch \ - listen_address \ - num_tokens \ - rpc_address \ - start_rpc \ - key_cache_size_in_mb \ - concurrent_reads \ - concurrent_writes \ - memtable_cleanup_threshold \ - memtable_allocation_type \ - memtable_flush_writers \ - concurrent_compactors \ - compaction_throughput_mb_per_sec \ - counter_cache_size_in_mb \ - internode_compression \ - endpoint_snitch \ - gc_warn_threshold_in_ms \ - listen_interface \ - rpc_interface \ - ; do - var="CASSANDRA_${yaml^^}" - val="${!var}" - if [ "$val" ]; then - sed -ri 's/^(# )?('"$yaml"':).*/\2 '"$val"'/' "$CASSANDRA_CFG" - fi -done - -echo "auto_bootstrap: ${CASSANDRA_AUTO_BOOTSTRAP}" >> $CASSANDRA_CFG - -# set the seed to itself. This is only for the first pod, otherwise -# it will be able to get seeds from the seed provider -if [[ $CASSANDRA_SEEDS == 'false' ]]; then - sed -ri 's/- seeds:.*/- seeds: "'"$POD_IP"'"/' $CASSANDRA_CFG -else # if we have seeds set them. Probably StatefulSet - sed -ri 's/- seeds:.*/- seeds: "'"$CASSANDRA_SEEDS"'"/' $CASSANDRA_CFG -fi - -sed -ri 's/- class_name: SEED_PROVIDER/- class_name: '"$CASSANDRA_SEED_PROVIDER"'/' $CASSANDRA_CFG - -# send gc to stdout -if [[ $CASSANDRA_GC_STDOUT == 'true' ]]; then - sed -ri 's/ -Xloggc:\/var\/log\/cassandra\/gc\.log//' $CASSANDRA_CONF_DIR/cassandra-env.sh -fi - -# enable RMI and JMX to work on one port -echo "JVM_OPTS=\"\$JVM_OPTS -Djava.rmi.server.hostname=$POD_IP\"" >> $CASSANDRA_CONF_DIR/cassandra-env.sh - -# getting WARNING messages with Migration Service -echo "-Dcassandra.migration_task_wait_in_seconds=${CASSANDRA_MIGRATION_WAIT}" >> $CASSANDRA_CONF_DIR/jvm.options -echo "-Dcassandra.ring_delay_ms=${CASSANDRA_RING_DELAY}" >> $CASSANDRA_CONF_DIR/jvm.options - -if [[ $CASSANDRA_OPEN_JMX == 'true' ]]; then - export LOCAL_JMX=no - sed -ri 's/ -Dcom\.sun\.management\.jmxremote\.authenticate=true/ -Dcom\.sun\.management\.jmxremote\.authenticate=false/' $CASSANDRA_CONF_DIR/cassandra-env.sh - sed -ri 's/ -Dcom\.sun\.management\.jmxremote\.password\.file=\/etc\/cassandra\/jmxremote\.password//' $CASSANDRA_CONF_DIR/cassandra-env.sh -fi - -chmod 700 "${CASSANDRA_DATA}" -chown -c -R cassandra "${CASSANDRA_DATA}" "${CASSANDRA_CONF_DIR}" - -export CLASSPATH=/kubernetes-cassandra.jar - -su cassandra -c "$CASSANDRA_HOME/bin/cassandra -f" diff --git a/examples/storage/cassandra/java/.gitignore b/examples/storage/cassandra/java/.gitignore deleted file mode 100644 index eb5a316cbd..0000000000 --- a/examples/storage/cassandra/java/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target diff --git a/examples/storage/cassandra/java/README.md b/examples/storage/cassandra/java/README.md deleted file mode 100644 index 37894f98e0..0000000000 --- a/examples/storage/cassandra/java/README.md +++ /dev/null @@ -1 +0,0 @@ -This file has moved to [https://github.com/kubernetes/examples/blob/master/staging/storage/cassandra/java/README.md](https://github.com/kubernetes/examples/blob/master/staging/storage/cassandra/java/README.md) diff --git a/examples/storage/cassandra/java/pom.xml b/examples/storage/cassandra/java/pom.xml deleted file mode 100644 index 2a2d21f230..0000000000 --- a/examples/storage/cassandra/java/pom.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - 4.0.0 - io.k8s.cassandra - kubernetes-cassandra - 1.0.2 - - - - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - - - - 1.1.3 - 3.9 - - - - - junit - junit - 4.11 - test - - - org.hamcrest - hamcrest-all - 1.3 - test - - - org.slf4j - slf4j-api - 1.7.5 - provided - - - ch.qos.logback - logback-classic - ${logback.version} - provided - - - - ch.qos.logback - logback-core - ${logback.version} - provided - - - - org.codehaus.jackson - jackson-core-asl - 1.6.3 - provided - - - - org.codehaus.jackson - jackson-mapper-asl - 1.6.3 - provided - - - - org.apache.cassandra - cassandra-all - ${cassandra.version} - provided - - - - diff --git a/examples/storage/cassandra/java/src/main/java/io/k8s/cassandra/KubernetesSeedProvider.java b/examples/storage/cassandra/java/src/main/java/io/k8s/cassandra/KubernetesSeedProvider.java deleted file mode 100644 index 830e9e17dc..0000000000 --- a/examples/storage/cassandra/java/src/main/java/io/k8s/cassandra/KubernetesSeedProvider.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (C) 2015 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package io.k8s.cassandra; - -import org.apache.cassandra.config.Config; -import org.apache.cassandra.config.ConfigurationLoader; -import org.apache.cassandra.config.YamlConfigurationLoader; -import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.cassandra.locator.SeedProvider; -import org.apache.cassandra.locator.SimpleSeedProvider; -import org.apache.cassandra.utils.FBUtilities; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.map.ObjectMapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.net.ssl.*; -import java.io.IOException; -import java.net.InetAddress; -import java.net.URL; -import java.net.UnknownHostException; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -/** - * Self discovery {@link SeedProvider} that creates a list of Cassandra Seeds by - * communicating with the Kubernetes API. - *

Various System Variable can be used to configure this provider: - *

    - *
  • KUBERNETES_PORT_443_TCP_ADDR defaults to kubernetes.default.svc.cluster.local
  • - *
  • KUBERNETES_PORT_443_TCP_PORT defaults to 443
  • - *
  • CASSANDRA_SERVICE defaults to cassandra
  • - *
  • POD_NAMESPACE defaults to 'default'
  • - *
  • CASSANDRA_SERVICE_NUM_SEEDS defaults to 8 seeds
  • - *
  • K8S_ACCOUNT_TOKEN defaults to the path for the default token
  • - *
- */ -public class KubernetesSeedProvider implements SeedProvider { - - private static final Logger logger = LoggerFactory.getLogger(KubernetesSeedProvider.class); - - /** - * default seeds to fall back on - */ - private List defaultSeeds; - - private TrustManager[] trustAll; - - private HostnameVerifier trustAllHosts; - - /** - * Create new Seeds - * @param params - */ - public KubernetesSeedProvider(Map params) { - - // Create default seeds - defaultSeeds = createDefaultSeeds(); - - // TODO: Load the CA cert when it is available on all platforms. - trustAll = new TrustManager[] { - new X509TrustManager() { - public void checkServerTrusted(X509Certificate[] certs, String authType) {} - public void checkClientTrusted(X509Certificate[] certs, String authType) {} - public X509Certificate[] getAcceptedIssuers() { return null; } - } - }; - - trustAllHosts = new HostnameVerifier() { - public boolean verify(String hostname, SSLSession session) { - return true; - } - }; - } - - /** - * Call kubernetes API to collect a list of seed providers - * @return list of seed providers - */ - public List getSeeds() { - - String host = getEnvOrDefault("KUBERNETES_PORT_443_TCP_ADDR", "kubernetes.default.svc.cluster.local"); - String port = getEnvOrDefault("KUBERNETES_PORT_443_TCP_PORT", "443"); - String serviceName = getEnvOrDefault("CASSANDRA_SERVICE", "cassandra"); - String podNamespace = getEnvOrDefault("POD_NAMESPACE", "default"); - String path = String.format("/api/v1/namespaces/%s/endpoints/", podNamespace); - String seedSizeVar = getEnvOrDefault("CASSANDRA_SERVICE_NUM_SEEDS", "8"); - Integer seedSize = Integer.valueOf(seedSizeVar); - String accountToken = getEnvOrDefault("K8S_ACCOUNT_TOKEN", "/var/run/secrets/kubernetes.io/serviceaccount/token"); - - List seeds = new ArrayList(); - try { - String token = getServiceAccountToken(accountToken); - - SSLContext ctx = SSLContext.getInstance("SSL"); - ctx.init(null, trustAll, new SecureRandom()); - - String PROTO = "https://"; - URL url = new URL(PROTO + host + ":" + port + path + serviceName); - logger.info("Getting endpoints from " + url); - HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); - - // TODO: Remove this once the CA cert is propagated everywhere, and replace - // with loading the CA cert. - conn.setHostnameVerifier(trustAllHosts); - - conn.setSSLSocketFactory(ctx.getSocketFactory()); - conn.addRequestProperty("Authorization", "Bearer " + token); - ObjectMapper mapper = new ObjectMapper(); - Endpoints endpoints = mapper.readValue(conn.getInputStream(), Endpoints.class); - - if (endpoints != null) { - // Here is a problem point, endpoints.subsets can be null in first node cases. - if (endpoints.subsets != null && !endpoints.subsets.isEmpty()){ - for (Subset subset : endpoints.subsets) { - if (subset.addresses != null && !subset.addresses.isEmpty()) { - for (Address address : subset.addresses) { - seeds.add(InetAddress.getByName(address.ip)); - - if(seeds.size() >= seedSize) { - logger.info("Available num endpoints: " + seeds.size()); - return Collections.unmodifiableList(seeds); - } - } - } - } - } - logger.info("Available num endpoints: " + seeds.size()); - } else { - logger.warn("Endpoints are not available using default seeds in cassandra.yaml"); - return Collections.unmodifiableList(defaultSeeds); - } - } catch (Exception ex) { - logger.warn("Request to kubernetes apiserver failed, using default seeds in cassandra.yaml", ex); - return Collections.unmodifiableList(defaultSeeds); - } - - if (seeds.size() == 0) { - // If we got nothing, we might be the first instance, in that case - // fall back on the seeds that were passed in cassandra.yaml. - logger.warn("Seeds are not available using default seeds in cassandra.yaml"); - return Collections.unmodifiableList(defaultSeeds); - } - - return Collections.unmodifiableList(seeds); - } - - /** - * Code taken from {@link SimpleSeedProvider}. This is used as a fall back - * incase we don't find seeds - * @return - */ - protected List createDefaultSeeds() - { - Config conf; - try { - conf = loadConfig(); - } - catch (Exception e) { - throw new AssertionError(e); - } - String[] hosts = conf.seed_provider.parameters.get("seeds").split(",", -1); - List seeds = new ArrayList(); - for (String host : hosts) { - try { - seeds.add(InetAddress.getByName(host.trim())); - } - catch (UnknownHostException ex) { - // not fatal... DD will bark if there end up being zero seeds. - logger.warn("Seed provider couldn't lookup host {}", host); - } - } - - if(seeds.size() == 0) { - try { - seeds.add(InetAddress.getLocalHost()); - } catch (UnknownHostException e) { - logger.warn("Seed provider couldn't lookup localhost"); - } - } - return Collections.unmodifiableList(seeds); - } - - /** - * Code taken from {@link SimpleSeedProvider} - * @return - */ - protected static Config loadConfig() throws ConfigurationException - { - String loaderClass = System.getProperty("cassandra.config.loader"); - ConfigurationLoader loader = loaderClass == null - ? new YamlConfigurationLoader() - : FBUtilities.construct(loaderClass, "configuration loading"); - return loader.loadConfig(); - } - - private static String getEnvOrDefault(String var, String def) { - String val = System.getenv(var); - if (val == null) { - val = def; - } - return val; - } - - private static String getServiceAccountToken(String file) { - try { - return new String(Files.readAllBytes(Paths.get(file))); - } catch (IOException e) { - logger.warn("unable to load service account token" + file); - throw new RuntimeException("Unable to load services account token " + file); - } - } - - protected List getDefaultSeeds() { - return defaultSeeds; - } - - @JsonIgnoreProperties(ignoreUnknown = true) - static class Address { - public String ip; - } - - @JsonIgnoreProperties(ignoreUnknown = true) - static class Subset { - public List
addresses; - } - - @JsonIgnoreProperties(ignoreUnknown = true) - static class Endpoints { - public List subsets; - } -} diff --git a/examples/storage/cassandra/java/src/test/java/io/k8s/cassandra/KubernetesSeedProviderTest.java b/examples/storage/cassandra/java/src/test/java/io/k8s/cassandra/KubernetesSeedProviderTest.java deleted file mode 100644 index 987622f665..0000000000 --- a/examples/storage/cassandra/java/src/test/java/io/k8s/cassandra/KubernetesSeedProviderTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2015 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ - -package io.k8s.cassandra; - -import com.google.common.collect.ImmutableMap; -import org.apache.cassandra.locator.SeedProvider; -import org.junit.Ignore; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import static org.hamcrest.Matchers.*; - -import java.net.InetAddress; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import static org.junit.Assert.*; - -public class KubernetesSeedProviderTest { - - private static final Logger logger = LoggerFactory.getLogger(KubernetesSeedProviderTest.class); - - @Test - @Ignore("has to be run inside of a kube cluster") - public void getSeeds() throws Exception { - SeedProvider provider = new KubernetesSeedProvider(new HashMap()); - List seeds = provider.getSeeds(); - - assertThat(seeds, is(not(empty()))); - - } - - @Test - public void testDefaultSeeds() throws Exception { - - KubernetesSeedProvider provider = new KubernetesSeedProvider(new HashMap()); - List seeds = provider.getDefaultSeeds(); - List seedsTest = new ArrayList<>(); - seedsTest.add(InetAddress.getByName("8.4.4.4")); - seedsTest.add(InetAddress.getByName("8.8.8.8")); - assertThat(seeds, is(not(empty()))); - assertThat(seeds, is(seedsTest)); - logger.debug("seeds loaded {}", seeds); - - } - - -} \ No newline at end of file diff --git a/examples/storage/cassandra/java/src/test/resources/cassandra.yaml b/examples/storage/cassandra/java/src/test/resources/cassandra.yaml deleted file mode 100644 index 791d310364..0000000000 --- a/examples/storage/cassandra/java/src/test/resources/cassandra.yaml +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (C) 2015 Google Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. -# -# Warning! -# Consider the effects on 'o.a.c.i.s.LegacySSTableTest' before changing schemas in this file. -# -cluster_name: Test Cluster -# memtable_allocation_type: heap_buffers -memtable_allocation_type: offheap_objects -commitlog_sync: batch -commitlog_sync_batch_window_in_ms: 1.0 -commitlog_segment_size_in_mb: 5 -commitlog_directory: target/cassandra/commitlog -hints_directory: target/cassandra/hints -partitioner: org.apache.cassandra.dht.ByteOrderedPartitioner -listen_address: 127.0.0.1 -storage_port: 7010 -rpc_port: 9170 -start_native_transport: true -native_transport_port: 9042 -column_index_size_in_kb: 4 -saved_caches_directory: target/cassandra/saved_caches -data_file_directories: - - target/cassandra/data -disk_access_mode: mmap -seed_provider: - - class_name: io.k8s.cassandra.KubernetesSeedProvider - parameters: - - seeds: "8.4.4.4,8.8.8.8" -endpoint_snitch: org.apache.cassandra.locator.SimpleSnitch -dynamic_snitch: true -request_scheduler: org.apache.cassandra.scheduler.RoundRobinScheduler -request_scheduler_id: keyspace -server_encryption_options: - internode_encryption: none - keystore: conf/.keystore - keystore_password: cassandra - truststore: conf/.truststore - truststore_password: cassandra -incremental_backups: true -concurrent_compactors: 4 -compaction_throughput_mb_per_sec: 0 -row_cache_class_name: org.apache.cassandra.cache.OHCProvider -row_cache_size_in_mb: 16 -enable_user_defined_functions: true -enable_scripted_user_defined_functions: true diff --git a/examples/storage/cassandra/java/src/test/resources/logback-test.xml b/examples/storage/cassandra/java/src/test/resources/logback-test.xml deleted file mode 100644 index 893b2d3910..0000000000 --- a/examples/storage/cassandra/java/src/test/resources/logback-test.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - %-5level %date{HH:mm:ss,SSS} %msg%n - - - DEBUG - - - - - - - - - - diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 4eb9d7ad62..34fcbfefcc 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -4281,8 +4281,8 @@ run_resource_aliasing_tests() { create_and_use_new_namespace kube::log::status "Testing resource aliasing" - kubectl create -f examples/storage/cassandra/cassandra-controller.yaml "${kube_flags[@]}" - kubectl create -f examples/storage/cassandra/cassandra-service.yaml "${kube_flags[@]}" + kubectl create -f test/e2e/testing-manifests/statefulset/cassandra/controller.yaml "${kube_flags[@]}" + kubectl create -f test/e2e/testing-manifests/statefulset/cassandra/service.yaml "${kube_flags[@]}" object="all -l'app=cassandra'" request="{{range.items}}{{range .metadata.labels}}{{.}}:{{end}}{{end}}" diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD index d25b6af46e..45707367c4 100644 --- a/pkg/kubectl/cmd/BUILD +++ b/pkg/kubectl/cmd/BUILD @@ -207,6 +207,7 @@ go_test( "testdata", "//api/openapi-spec:swagger-spec", "//examples:config", + "//test/e2e/testing-manifests:all-srcs", "//test/fixtures", ], embed = [":go_default_library"], diff --git a/pkg/kubectl/cmd/annotate_test.go b/pkg/kubectl/cmd/annotate_test.go index 7fff598ca0..7c9bdc6278 100644 --- a/pkg/kubectl/cmd/annotate_test.go +++ b/pkg/kubectl/cmd/annotate_test.go @@ -535,7 +535,7 @@ func TestAnnotateObjectFromFile(t *testing.T) { cmd := NewCmdAnnotate(tf, buf) cmd.SetOutput(buf) options := &AnnotateOptions{} - options.Filenames = []string{"../../../examples/storage/cassandra/cassandra-controller.yaml"} + options.Filenames = []string{"../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"} args := []string{"a=b", "c-"} if err := options.Complete(buf, cmd, args); err != nil { t.Fatalf("unexpected error: %v", err) @@ -564,7 +564,7 @@ func TestAnnotateLocal(t *testing.T) { buf := bytes.NewBuffer([]byte{}) cmd := NewCmdAnnotate(tf, buf) options := &AnnotateOptions{local: true} - options.Filenames = []string{"../../../examples/storage/cassandra/cassandra-controller.yaml"} + options.Filenames = []string{"../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"} args := []string{"a=b"} if err := options.Complete(buf, cmd, args); err != nil { t.Fatalf("unexpected error: %v", err) diff --git a/pkg/kubectl/cmd/label_test.go b/pkg/kubectl/cmd/label_test.go index 14d6ec97e8..cde525f2b1 100644 --- a/pkg/kubectl/cmd/label_test.go +++ b/pkg/kubectl/cmd/label_test.go @@ -387,7 +387,7 @@ func TestLabelForResourceFromFile(t *testing.T) { buf := bytes.NewBuffer([]byte{}) cmd := NewCmdLabel(tf, buf) opts := LabelOptions{FilenameOptions: resource.FilenameOptions{ - Filenames: []string{"../../../examples/storage/cassandra/cassandra-controller.yaml"}}} + Filenames: []string{"../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"}}} err := opts.Complete(buf, cmd, []string{"a=b"}) if err == nil { err = opts.Validate() @@ -418,7 +418,7 @@ func TestLabelLocal(t *testing.T) { buf := bytes.NewBuffer([]byte{}) cmd := NewCmdLabel(tf, buf) opts := LabelOptions{FilenameOptions: resource.FilenameOptions{ - Filenames: []string{"../../../examples/storage/cassandra/cassandra-controller.yaml"}}, + Filenames: []string{"../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"}}, local: true} err := opts.Complete(buf, cmd, []string{"a=b"}) if err == nil { diff --git a/pkg/kubectl/cmd/resource/BUILD b/pkg/kubectl/cmd/resource/BUILD index 122924b970..0f65660c25 100644 --- a/pkg/kubectl/cmd/resource/BUILD +++ b/pkg/kubectl/cmd/resource/BUILD @@ -37,6 +37,7 @@ go_test( data = [ "//api/openapi-spec:swagger-spec", "//examples:config", + "//test/e2e/testing-manifests:all-srcs", "//test/fixtures", ], embed = [":go_default_library"], diff --git a/pkg/kubectl/cmd/resource/get_test.go b/pkg/kubectl/cmd/resource/get_test.go index 8696ae1e34..8f6a03cb0a 100644 --- a/pkg/kubectl/cmd/resource/get_test.go +++ b/pkg/kubectl/cmd/resource/get_test.go @@ -401,7 +401,7 @@ func TestGetObjectsFiltered(t *testing.T) { {args: []string{"pods"}, flags: map[string]string{"show-all": "false", "output": "name"}, resp: pods, expect: "pod/foo\npod/bar\n"}, - {args: []string{}, flags: map[string]string{"show-all": "false", "filename": "../../../../examples/storage/cassandra/cassandra-controller.yaml"}, resp: pods, + {args: []string{}, flags: map[string]string{"show-all": "false", "filename": "../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"}, resp: pods, expect: "NAME READY STATUS RESTARTS AGE\nfoo 0/0 Failed 0 \nbar 0/0 0 \n"}, {args: []string{"pods"}, resp: pods, flags: map[string]string{"show-all": "false"}, @@ -556,7 +556,7 @@ func TestGetObjectsIdentifiedByFile(t *testing.T) { cmd := NewCmdGet(tf, buf, errBuf) cmd.SetOutput(buf) - cmd.Flags().Set("filename", "../../../../examples/storage/cassandra/cassandra-controller.yaml") + cmd.Flags().Set("filename", "../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml") cmd.Run(cmd, []string{}) expected := `NAME READY STATUS RESTARTS AGE @@ -1265,7 +1265,7 @@ func TestWatchResourceIdentifiedByFile(t *testing.T) { cmd.SetOutput(buf) cmd.Flags().Set("watch", "true") - cmd.Flags().Set("filename", "../../../../examples/storage/cassandra/cassandra-controller.yaml") + cmd.Flags().Set("filename", "../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml") cmd.Run(cmd, []string{}) expected := `NAME READY STATUS RESTARTS AGE diff --git a/pkg/kubectl/cmd/set/BUILD b/pkg/kubectl/cmd/set/BUILD index d7251dbc68..e3af3fd55d 100644 --- a/pkg/kubectl/cmd/set/BUILD +++ b/pkg/kubectl/cmd/set/BUILD @@ -54,6 +54,7 @@ go_test( ], data = [ "//examples:config", + "//test/e2e/testing-manifests:all-srcs", "//test/fixtures", ], embed = [":go_default_library"], diff --git a/pkg/kubectl/cmd/set/set_env_test.go b/pkg/kubectl/cmd/set/set_env_test.go index 5ab5d32c3f..44ed988797 100644 --- a/pkg/kubectl/cmd/set/set_env_test.go +++ b/pkg/kubectl/cmd/set/set_env_test.go @@ -66,7 +66,7 @@ func TestSetEnvLocal(t *testing.T) { cmd.Flags().Set("local", "true") opts := EnvOptions{FilenameOptions: resource.FilenameOptions{ - Filenames: []string{"../../../../examples/storage/cassandra/cassandra-controller.yaml"}}, + Filenames: []string{"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"}}, Out: buf, Local: true} err := opts.Complete(tf, cmd, []string{"env=prod"}) diff --git a/pkg/kubectl/cmd/set/set_image_test.go b/pkg/kubectl/cmd/set/set_image_test.go index 93003f0182..71de566d19 100644 --- a/pkg/kubectl/cmd/set/set_image_test.go +++ b/pkg/kubectl/cmd/set/set_image_test.go @@ -66,7 +66,7 @@ func TestImageLocal(t *testing.T) { cmd.Flags().Set("local", "true") opts := ImageOptions{FilenameOptions: resource.FilenameOptions{ - Filenames: []string{"../../../../examples/storage/cassandra/cassandra-controller.yaml"}}, + Filenames: []string{"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"}}, Out: buf, Local: true} err := opts.Complete(tf, cmd, []string{"cassandra=thingy"}) diff --git a/pkg/kubectl/cmd/set/set_resources_test.go b/pkg/kubectl/cmd/set/set_resources_test.go index 7d285e02c1..e2a6525766 100644 --- a/pkg/kubectl/cmd/set/set_resources_test.go +++ b/pkg/kubectl/cmd/set/set_resources_test.go @@ -66,7 +66,7 @@ func TestResourcesLocal(t *testing.T) { cmd.Flags().Set("local", "true") opts := ResourcesOptions{FilenameOptions: resource.FilenameOptions{ - Filenames: []string{"../../../../examples/storage/cassandra/cassandra-controller.yaml"}}, + Filenames: []string{"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"}}, Out: buf, Local: true, Limits: "cpu=200m,memory=512Mi", diff --git a/pkg/kubectl/cmd/set/set_selector_test.go b/pkg/kubectl/cmd/set/set_selector_test.go index 1b832240be..8b8aca5a67 100644 --- a/pkg/kubectl/cmd/set/set_selector_test.go +++ b/pkg/kubectl/cmd/set/set_selector_test.go @@ -334,7 +334,7 @@ func TestSelectorTest(t *testing.T) { cmd.SetOutput(buf) cmd.Flags().Set("output", "name") cmd.Flags().Set("local", "true") - cmd.Flags().Set("filename", "../../../../examples/storage/cassandra/cassandra-service.yaml") + cmd.Flags().Set("filename", "../../../../test/e2e/testing-manifests/statefulset/cassandra/service.yaml") cmd.Run(cmd, []string{"environment=qa"}) diff --git a/examples/storage/cassandra/cassandra-controller.yaml b/test/e2e/testing-manifests/statefulset/cassandra/controller.yaml similarity index 96% rename from examples/storage/cassandra/cassandra-controller.yaml rename to test/e2e/testing-manifests/statefulset/cassandra/controller.yaml index f2344df12a..f11aeb3ce6 100644 --- a/examples/storage/cassandra/cassandra-controller.yaml +++ b/test/e2e/testing-manifests/statefulset/cassandra/controller.yaml @@ -38,7 +38,7 @@ spec: valueFrom: fieldRef: fieldPath: status.podIP - image: gcr.io/google-samples/cassandra:v12 + image: gcr.io/google-samples/cassandra:v13 name: cassandra ports: - containerPort: 7000 @@ -55,3 +55,4 @@ spec: volumes: - name: data emptyDir: {} + diff --git a/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml b/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml index e0455d6d1a..26d68d1fae 100644 --- a/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml @@ -12,7 +12,7 @@ spec: spec: containers: - name: cassandra - image: gcr.io/google-samples/cassandra:v12 + image: gcr.io/google-samples/cassandra:v13 imagePullPolicy: Always ports: - containerPort: 7000 @@ -34,7 +34,10 @@ spec: lifecycle: preStop: exec: - command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"] + command: + - /bin/sh + - -c + - nodetool drain env: - name: MAX_HEAP_SIZE value: 512M @@ -52,8 +55,6 @@ spec: value: "DC1-K8Demo" - name: CASSANDRA_RACK value: "Rack1-K8Demo" - - name: CASSANDRA_AUTO_BOOTSTRAP - value: "false" - name: POD_IP valueFrom: fieldRef: