پرش به مطلب اصلی

CockroachDB

CockroachDB یک پایگاه‌داده توزیع شده و متن‌باز است که با هدف ارایه‌ی سازگاری قوی، مقیاس‌پذیری افقی و تحمل خطا طراحی شده است. این پایگاه‌داده به طور ویژه برای مدیریت داده‌ها در محیط‌های چندمنطقه‌ای و چندرسانه‌ای مناسب است و به کاربران این امکان را می‌دهد تا داده‌های خود را بدون نگرانی از خرابی‌ها و اختلالات سیستم، به‌شکل پیوسته و با کارایی بالا ذخیره و بازیابی کنند. CockroachDB با پشتیبانی از SQL و ویژگی‌های پیشرفته، انتخابی مناسب برای سرویس‌های حیاتی و توزیع‌شده به‌شمار می‌رود.

در کانتینر ابری آروان‌کلاد می‌توانید با استفاده از اپراتورها، کلاستری از CockroachDB و یا کلاینت آن راه‌اندازی کنید. برای این اپراتور از نسخه‌ی ۲.۱۴.۰ پروژه‌ی CockroachDB استفاده شده است.

راه‌اندازی کلاستر CockroachDB

فایل زیر را با یک نام دل‌خواه مانند cockroachdb-cluster.yaml ذخیره کنید:

# Copyright 2024 The Cockroach 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
#
# https://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.

apiVersion: crdb.cockroachlabs.com/v1alpha1
kind: CrdbCluster
metadata:
name: crdb-no-topo
spec:
dataStore:
pvc:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "10Gi"
volumeMode: Filesystem
image:
name: cockroachdb/cockroach:v23.2.4
nodes: 3

سپس برای استقرار دستور زیر را اجرا کنید:

kubectl apply -f cockroachdb-cluster.yaml -n [namespace]

به‌جای [namespace] نام پروژه‌ی خود در کانتینر ابری آروان‌کلاد را قرار دهید.

راه‌اندازی کلاستر امن CockroachDB

فایل زیر را با یک نام دل‌خواه مانند secure-cockroachdb-cluster.yaml ذخیره کنید:

# Copyright 2024 The Cockroach 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
#
# https://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.
#
# Generated, do not edit. Please edit this file instead: config/templates/example.yaml.in
#

apiVersion: crdb.cockroachlabs.com/v1alpha1
kind: CrdbCluster
metadata:
# this translates to the name of the statefulset that is created
name: cockroachdb
spec:
dataStore:
pvc:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "10Gi"
volumeMode: Filesystem
resources:
requests:
# This is intentionally low to make it work on local k3d clusters.
cpu: 500m
memory: 2Gi
limits:
cpu: 2
memory: 8Gi
tlsEnabled: true
# You can set either a version of the db or a specific image name
# cockroachDBVersion: v23.2.3
image:
name: cockroachdb/cockroach:v23.2.3
# nodes refers to the number of crdb pods that are created
# via the statefulset
nodes: 3
additionalLabels:
crdb: is-cool
# affinity is a new API field that is behind a feature gate that is
# disabled by default. To enable please see the operator.yaml file.

# The affinity field will accept any podSpec affinity rule.
# affinity:
# podAntiAffinity:
# preferredDuringSchedulingIgnoredDuringExecution:
# - weight: 100
# podAffinityTerm:
# labelSelector:
# matchExpressions:
# - key: app.kubernetes.io/instance
# operator: In
# values:
# - cockroachdb
# topologyKey: kubernetes.io/hostname

# nodeSelectors used to match against
# nodeSelector:
# worker-pool-name: crdb-workers

سپس برای استقرار دستور زیر را اجرا کنید:

kubectl apply -f secure-cockroachdb-cluster.yaml -n [namespace]

به‌جای [namespace] نام پروژه‌ی خود در کانتینر ابری آروان‌کلاد را قرار دهید.

راه‌اندازی کلاینت CockroachDB

فایل زیر را با یک نام دل‌خواه مانند cockroachdb-client.yaml ذخیره کنید:

# Copyright 2024 The Cockroach 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
#
# https://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.
#
# Generated, do not edit. Please edit this file instead: config/templates/client-secure-operator.yaml.in
#

apiVersion: v1
kind: Pod
metadata:
name: cockroachdb-client-secure
spec:
serviceAccountName: cockroachdb-sa
containers:
- name: cockroachdb-client-secure
image: cockroachdb/cockroach:v23.2.3
imagePullPolicy: IfNotPresent
volumeMounts:
- name: client-certs
mountPath: /cockroach/cockroach-certs/
command:
- sleep
- "2147483648" # 2^31
terminationGracePeriodSeconds: 0
volumes:
- name: client-certs
projected:
sources:
- secret:
name: cockroachdb-node
items:
- key: ca.crt
path: ca.crt
- secret:
name: cockroachdb-root
items:
- key: tls.crt
path: client.root.crt
- key: tls.key
path: client.root.key
defaultMode: 256

سپس برای استقرار دستور زیر را اجرا کنید:

kubectl apply -f cockroachdb-client.yaml -n [namespace]

به‌جای [namespace] نام پروژه‌ی خود در کانتینر ابری آروان‌کلاد را قرار دهید.

برای بررسی جزییات و نمونه‌های بیش‌تر به مستندات اپراتور CockroachDB مراجعه کنید.