mirror of https://github.com/k3s-io/k3s
97 lines
3.2 KiB
YAML
97 lines
3.2 KiB
YAML
![]() |
apiVersion: v1
|
||
|
kind: Service
|
||
|
metadata:
|
||
|
annotations:
|
||
|
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
|
||
|
name: cockroachdb
|
||
|
labels:
|
||
|
app: cockroachdb
|
||
|
spec:
|
||
|
ports:
|
||
|
# The main port, served by gRPC, serves Postgres-flavor SQL, internode
|
||
|
# traffic and the cli.
|
||
|
- port: 26257
|
||
|
targetPort: 26257
|
||
|
name: grpc
|
||
|
# The secondary port serves the UI as well as health and debug endpoints.
|
||
|
- port: 8080
|
||
|
targetPort: 8080
|
||
|
name: http
|
||
|
clusterIP: None
|
||
|
selector:
|
||
|
app: cockroachdb
|
||
|
---
|
||
|
apiVersion: apps/v1alpha1
|
||
|
kind: PetSet
|
||
|
metadata:
|
||
|
name: cockroachdb
|
||
|
spec:
|
||
|
serviceName: "cockroachdb"
|
||
|
replicas: 5
|
||
|
template:
|
||
|
metadata:
|
||
|
labels:
|
||
|
app: cockroachdb
|
||
|
annotations:
|
||
|
pod.alpha.kubernetes.io/initialized: "true"
|
||
|
spec:
|
||
|
containers:
|
||
|
- name: cockroachdb
|
||
|
# Runs the master branch. Not recommended for production, but since
|
||
|
# CockroachDB is in Beta, you don't want to run it in production
|
||
|
# anyway. See
|
||
|
# https://hub.docker.com/r/cockroachdb/cockroach/tags/
|
||
|
# if you prefer to run a beta release.
|
||
|
image: cockroachdb/cockroach
|
||
|
imagePullPolicy: IfNotPresent
|
||
|
ports:
|
||
|
- containerPort: 26257
|
||
|
name: grpc
|
||
|
- containerPort: 8080
|
||
|
name: http
|
||
|
volumeMounts:
|
||
|
- name: datadir
|
||
|
mountPath: /cockroach/cockroach-data
|
||
|
command:
|
||
|
- "/bin/bash"
|
||
|
- "-ecx"
|
||
|
- |
|
||
|
# The use of qualified `hostname -f` is crucial:
|
||
|
# Other nodes aren't able to look up the unqualified hostname.
|
||
|
CRARGS=("start" "--logtostderr" "--insecure" "--host" "$(hostname -f)")
|
||
|
# TODO(tschottdorf): really want to use an init container to do
|
||
|
# the bootstrapping. The idea is that the container would know
|
||
|
# whether it's on the first node and could check whether there's
|
||
|
# already a data directory. If not, it would bootstrap the cluster.
|
||
|
# We will need some version of `cockroach init` back for this to
|
||
|
# work. For now, just do the same in a shell snippet.
|
||
|
# Of course this isn't without danger - if node0 loses its data,
|
||
|
# upon restarting it will simply bootstrap a new cluster and smack
|
||
|
# it into our existing cluster.
|
||
|
# There are likely ways out. For example, the init container could
|
||
|
# query the kubernetes API and see whether any other nodes are
|
||
|
# around, etc. Or, of course, the admin can pre-seed the lost
|
||
|
# volume somehow (and in that case we should provide a better way,
|
||
|
# for example a marker file).
|
||
|
if [ ! "$(hostname)" == "cockroachdb-0" ] || \
|
||
|
[ -e "/cockroach/cockroach-data/COCKROACHDB_VERSION" ]
|
||
|
then
|
||
|
CRARGS+=("--join" "cockroachdb")
|
||
|
fi
|
||
|
/cockroach/cockroach ${CRARGS[*]}
|
||
|
volumes:
|
||
|
- name: datadir
|
||
|
persistentVolumeClaim:
|
||
|
claimName: datadir
|
||
|
volumeClaimTemplates:
|
||
|
- metadata:
|
||
|
name: datadir
|
||
|
annotations:
|
||
|
volume.alpha.kubernetes.io/storage-class: anything
|
||
|
spec:
|
||
|
accessModes:
|
||
|
- "ReadWriteOnce"
|
||
|
resources:
|
||
|
requests:
|
||
|
storage: 1Gi
|