Skip to content

Instantly share code, notes, and snippets.

@venkatnsrinivasan
Created June 29, 2020 19:47
Show Gist options
  • Save venkatnsrinivasan/09ecc9a71031940230c669a5e2d4352d to your computer and use it in GitHub Desktop.
Save venkatnsrinivasan/09ecc9a71031940230c669a5e2d4352d to your computer and use it in GitHub Desktop.
---
apiVersion: types.kubefed.io/v1beta1
kind: FederatedService
metadata:
name: cockroachdb-public
spec:
placement:
clusterSelector:
matchLabels:
public-cloud: "true"
template:
metadata:
labels:
app: cockroachdb
spec:
type: LoadBalancer
ports:
- name: grpc
port: 26257
targetPort: 26257
- name: http
port: 8080
targetPort: 8080
selector:
app: cockroachdb
---
apiVersion: types.kubefed.io/v1beta1
kind: FederatedService
metadata:
name: cockroachdb
spec:
placement:
clusterSelector:
matchLabels:
public-cloud: "true"
overrides:
- clusterName: k8s-cluster-us-central-1-gke
clusterOverrides:
- path: "/metadata/annotations"
op: "add"
value:
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
template:
metadata:
labels:
app: cockroachdb
spec:
ports:
- name: grpc
port: 26257
targetPort: 26257
- name: http
port: 8080
targetPort: 8080
publishNotReadyAddresses: true
clusterIP: None
selector:
app: cockroachdb
---
apiVersion: types.kubefed.io/v1beta1
kind: FederatedPodDisruptionBudget
metadata:
name: cockroachdb-budget
spec:
placement:
clusterSelector:
matchLabels:
public-cloud: "true"
template:
metadata:
labels:
app: cockroachdb
spec:
maxUnavailable: 1
selector:
matchLabels:
app: cockroachdb
---
apiVersion: types.kubefed.io/v1beta1
kind: FederatedStatefulSet
metadata:
name: cockroachdb
spec:
placement:
clusterSelector:
matchLabels:
public-cloud: "true"
overrides:
- clusterName: k8s-cluster-us-central-1-gke
clusterOverrides:
- path: "/spec/template/metadata/labels/cloud-region"
op: "add"
value:
us-central1
- clusterName: k8s-cluster-us-west-2-aks
clusterOverrides:
- path: "/spec/template/metadata/labels/cloud-region"
op: "add"
value:
westus
template:
spec:
podManagementPolicy: Parallel
replicas: 3
selector:
matchLabels:
app: cockroachdb
serviceName: cockroachdb
template:
metadata:
labels:
app: cockroachdb
spec:
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- cockroachdb
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- command:
- "/bin/bash"
- "-ecx"
- "exec /cockroach/cockroach start --logtostderr --insecure --advertise-host $(hostname).kubefed-poc.federation.svc.${CLOUD_REGION}.kubefed.fulliautomatix.site --http-addr 0.0.0.0 --join cockroachdb-0.kubefed-poc.federation.svc.us-central1.kubefed.fulliautomatix.site,cockroachdb-1.kubefed-poc.federation.svc.us-central1.kubefed.fulliautomatix.site,cockroachdb-2.kubefed-poc.federation.svc.us-central1.kubefed.fulliautomatix.site,cockroachdb-0.kubefed-poc.federation.svc.westus.kubefed.fulliautomatix.site,cockroachdb-1.kubefed-poc.federation.svc.westus.kubefed.fulliautomatix.site,cockroachdb-2.kubefed-poc.federation.svc.westus.kubefed.fulliautomatix.site --cache 25% --max-sql-memory 25%"
env:
- name: COCKROACH_CHANNEL
value: kubernetes-insecure
- name: CLOUD_REGION
valueFrom:
fieldRef:
fieldPath: metadata.labels['cloud-region']
image: cockroachdb/cockroach:v20.1.1
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 5
name: cockroachdb
ports:
- containerPort: 26257
name: grpc
- containerPort: 8080
name: http
readinessProbe:
failureThreshold: 2
httpGet:
path: /health?ready=1
port: http
initialDelaySeconds: 10
periodSeconds: 5
volumeMounts:
- mountPath: /cockroach/cockroach-data
name: datadir
terminationGracePeriodSeconds: 60
volumes:
- name: datadir
persistentVolumeClaim:
claimName: datadir
updateStrategy:
type: RollingUpdate
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment