Практическое руководство: развертывание CockroachDB в одном кластере Kubernetes с помощью Minikube

В этом руководстве мы рассмотрим процесс развертывания CockroachDB, распределенной базы данных SQL, в одном кластере Kubernetes с помощью Minikube. Мы рассмотрим различные методы и примеры кода, которые помогут вам настроить CockroachDB и управлять им в среде Kubernetes.

Предварительные условия:
Прежде чем мы начнем, убедитесь, что у вас установлены следующие необходимые компоненты:

  1. Minikube: Minikube — это инструмент, который локально настраивает одноузловой кластер Kubernetes. Вы можете установить Minikube, следуя инструкциям в официальной документации.

  2. kubectl: kubectl — это инструмент командной строки для взаимодействия с кластерами Kubernetes. Установите kubectl, следуя инструкциям в официальной документации.

  3. Хелм-диаграмма 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. Эти методы обеспечивают гибкость и позволяют выбрать тот, который лучше всего соответствует вашим требованиям.