{GCP GKE} Deploy CockroachDB in a Single Kubernetes Cluster

 

https://www.cockroachlabs.com/docs/v23.1/deploy-cockroachdb-with-kubernetes-insecure
https://future-architect.github.io/articles/20210318/
https://cloud.google.com/kubernetes-engine/docs/how-to/creating-an-autopilot-cluster?hl=ja


-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999

gcloud components update


-- 2. Google Kubernetes Engine API を有効化

gcloud services list --enabled


gcloud services enable container.googleapis.com \
--project project01-9999999

 

-- 3. kubectlインストール

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

chmod +x ./kubectl

sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

kubectl version --client

 

-- 4. Autopilot GKE クラスターの作成


gcloud container clusters create-auto gke01 \
--region us-central1 \
--project=project01-9999999

 

gcloud container clusters list

gcloud container clusters describe gke01 --region us-central1 | grep -A3 autopilot


-- 5. クラスターに接続する

gcloud container clusters get-credentials gke01 --region=us-central1 --project=project01-9999999


kubectl get node -o wide
kubectl get pods -n kube-system


gcloud info | grep Account

kubectl create clusterrolebinding $USER-cluster-admin-binding \
--clusterrole=cluster-admin \
--user=hoge@example.com

 


-- 6. Start CockroachDB

curl -O https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cockroachdb-statefulset.yaml
kubectl apply -f cockroachdb-statefulset.yaml


下記エラーが出るが無視

error: resource mapping not found for name: "cockroachdb-budget" namespace: "" from "cockroachdb-statefulset.yaml": no matches for kind "PodDisruptionBudget" in version "policy/v1beta1"

 


kubectl get pods
kubectl get persistentvolumes

kubectl apply -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml
kubectl get job cluster-init
kubectl get pods


-- 7. Use the built-in SQL client

kubectl run cockroachdb -it \
--image=cockroachdb/cockroach:v23.1.13 \
--rm \
--restart=Never \
-- sql \
--insecure \
--host=cockroachdb-public


CREATE DATABASE bank;

CREATE TABLE bank.accounts (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
      balance DECIMAL
  );

INSERT INTO bank.accounts (balance)
  VALUES
      (1000.50), (20000), (380), (500), (55000);

SELECT * FROM bank.accounts;

\q

-- 8. Access the DB Console

kubectl port-forward service/cockroachdb-public 8080

Go to http://localhost:8080

 

-- 9. クリーンアップ

kubectl delete -f https://raw.githubusercontent.com/cockroachdb/cockroach/master/cloud/kubernetes/cluster-init.yaml
kubectl delete -f cockroachdb-statefulset.yaml

gcloud container clusters delete gke01 \
--region us-central1 \
--quiet

 


gcloud projects list

gcloud projects delete project01-9999999 \
--quiet