В этом руководстве мы рассмотрим процесс развертывания CockroachDB, распределенной базы данных SQL, в одном кластере Kubernetes с помощью Minikube. Мы рассмотрим различные методы и примеры кода, которые помогут вам настроить CockroachDB и управлять им в среде Kubernetes.
Предварительные условия:
Прежде чем мы начнем, убедитесь, что у вас установлены следующие необходимые компоненты:
-
Minikube: Minikube — это инструмент, который локально настраивает одноузловой кластер Kubernetes. Вы можете установить Minikube, следуя инструкциям в официальной документации.
-
kubectl: kubectl — это инструмент командной строки для взаимодействия с кластерами Kubernetes. Установите kubectl, следуя инструкциям в официальной документации.
-
Хелм-диаграмма CockroachDB. Мы будем использовать Хелм-диаграмму CockroachDB для развертывания CockroachDB в кластере Kubernetes. Установите Helm и добавьте репозиторий CockroachDB Helm, выполнив следующие команды:
$ helm repo add cockroachdb https://charts.cockroachdb.com/
$ helm repo update
Методы:
Метод 1: развертывание CockroachDB с помощью Helm
Helm — это менеджер пакетов для Kubernetes, который позволяет определять, устанавливать и управлять приложениями в кластере Kubernetes. Чтобы развернуть CockroachDB с помощью Helm, выполните следующие действия:
Шаг 1. Создайте новое пространство имен для CockroachDB:
$ kubectl create namespace cockroachdb
Шаг 2. Установите CockroachDB с помощью Helm:
$ helm install cockroachdb --namespace cockroachdb cockroachdb/cockroachdb
Метод 2. Развертывание CockroachDB с использованием манифестов YAML
Если вы предпочитаете работать с манифестами YAML напрямую, вы можете развернуть CockroachDB, выполнив следующие действия:
Шаг 1. Создайте новое пространство имен для CockroachDB:
$ kubectl create namespace cockroachdb
Шаг 2. Развертывание службы CockroachDB:
Сохраните следующий контент YAML в файле с именем cockroachdb-service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: cockroachdb-public
namespace: cockroachdb
spec:
ports:
- port: 26257
targetPort: 26257
name: grpc
- port: 8080
targetPort: 8080
name: http
selector:
app: cockroachdb
cluster: cockroachdb
type: LoadBalancer
Разверните службу с помощью следующей команды:
$ kubectl apply -f cockroachdb-service.yaml
Шаг 3. Разверните набор состояний CockroachDB:
Сохраните следующий контент YAML в файле с именем cockroachdb-statefulset.yaml
:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: cockroachdb
namespace: cockroachdb
spec:
serviceName: "cockroachdb-public"
replicas: 3
selector:
matchLabels:
app: cockroachdb
cluster: cockroachdb
template:
metadata:
labels:
app: cockroachdb
cluster: cockroachdb
spec:
containers:
- name: cockroachdb
image: cockroachdb/cockroach:v21.1.9
command:
- "/cockroach/cockroach"
args:
- "start"
- "--insecure"
- "--advertise-host=$(POD_IP)"
ports:
- containerPort: 26257
name: grpc
- containerPort: 8080
name: http
volumeMounts:
- name: datadir
mountPath: /cockroach/cockroach-data
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 1Gi
Разверните набор состояний с помощью следующей команды:
$ kubectl apply -f cockroachdb-statefulset.yaml
В этом руководстве мы рассмотрели два разных метода развертывания CockroachDB в одном кластере Kubernetes с помощью Minikube. Мы рассмотрели развертывание CockroachDB с помощью Helm и его развертывание с использованием манифестов YAML. Эти методы обеспечивают гибкость и позволяют выбрать тот, который лучше всего соответствует вашим требованиям.