Helm Charts の入門 (ScalarDL Ledger と Auditor / Auditor モード)
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このドキュメントでは、Kubernetes クラスター上の Helm Chart をテスト環境として使用して、ScalarDL Ledger および Auditor を開始する方法について説明します。 ここでは、テスト用の Mac または Linux 環境がすでにあることを前提としています。 このドキュメントでは Minikube を使用しますが、これから説明する手順はどの Kubernetes クラスターでも機能するはずです。
要件
以下のコンテナイメージを取得するには、AWS Marketplace または Azure Marketplace でScalarDL Ledger および ScalarDL Auditor をサブスクライブする必要があります。
- AWS Marketplace
- scalar-ledger
- scalar-ledger-envoy
- scalardl-schema-loader-ledger
- scalar-auditor
- scalar-auditor-envoy
- scalardl-schema-loader-auditor
- Azure Marketplace
- scalar-ledger
- scalar-auditor
- scalardl-envoy
- scalardl-schema-loader
詳細については、以下のドキュメントを参照してください。
- How to install Scalar products through AWS Marketplace
- How to install Scalar products through Azure Marketplace
注記
監査によるビザンチン障害検出を適切に機能させるには、Ledger と Auditor を異なる管理ドメインに展開して管理する必要があります。 ただし、このガイドでは、テストを 容易にするために、Ledger と Auditor を同じ Kubernetes クラスターにデプロイします。
私たちが作るもの
次のように、次のコンポーネントを Kubernetes クラスターにデプロイします。
+-----------------------------------------------------------------------------------------------------------------------------+
| [Kubernetes クラスター] |
| [ポッド] [ポッド] [ポッド] |
| |
| +-------+ +---------+ |
| +---> | Envoy | ---+ +---> | Ledger | ---+ |
| | +-------+ | | +---------+ | |
| | | | | |
| +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ |
| +---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | Ledger | ---+---> | PostgreSQL | |
| | | (Envoy) | | +-------+ | | (Ledger) | | +---------+ | | (Ledger 用) | |
| | +---------+ | | +-----------+ | | +---------------+ |
| | | +-------+ | | +---------+ | |
| | +---> | Envoy | ---+ +---> | Ledger | ---+ |
| +--------+ | +-------+ +---------+ |
| | クライアント | ---+ |
| +--------+ | +-------+ +---------+ |
| | +---> | Envoy | ---+ +---> | Auditor | ---+ |
| | | +-------+ | | +---------+ | |
| | | | | | |
| | +---------+ | +-------+ | +-----------+ | +---------+ | +---------------+ |
| +---> | サービス | ---+---> | Envoy | ---+---> | サービス | ---+---> | Auditor | ---+---> | PostgreSQL | |
| | (Envoy) | | +-------+ | | (Auditor) | | +---------+ | | (Auditor 用) | |
| +---------+ | | +-----------+ | | +---------------+ |
| | +-------+ | | +---------+ | |
| +---> | Envoy | ---+ +---> | Auditor | ---+ |
| +-------+ +---------+ |
| |
+-----------------------------------------------------------------------------------------------------------------------------+
ステップ 1. Kubernetes クラスターを開始する
まず、Kubernetes クラスターを準備する必要があります。 minikube 環境を使用する場合は、[Scalar Helm Charts の入門] (./getting-started-scalar-helm-charts.mdx)を参照してください。 すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。
ステップ 2. PostgreSQL コンテナーを開始する
ScalarDL Ledger と Auditor は、バックエンド データベースとして何らかのデータベース システムを使用します。 このドキュメントでは PostgreSQL を使用します。
次のようにして、Kubernetes クラスターに PostgreSQL をデプロイできます。
-
Bitnami Helm リポジトリを追加します。
helm repo add bitnami https://charts.bitnami.com/bitnami
-
Ledger 用に PostgreSQL をデプロイします。
helm install postgresql-ledger bitnami/postgresql \
--set auth.postgresPassword=postgres \
--set primary.persistence.enabled=false -
Auditor 用に PostgreSQL をデプロイします。
helm install postgresql-auditor bitnami/postgresql \
--set auth.postgresPassword=postgres \
--set primary.persistence.enabled=false -
PostgreSQL コンテナが実行されているかどうかを確認します。
kubectl get pod
【コマンド実行結果】
NAME READY STATUS RESTARTS AGE
postgresql-auditor-0 1/1 Running 0 11s
postgresql-ledger-0 1/1 Running 0 16s
ステップ 3. 作業ディレクトリを作成する
いくつかの構成ファイルとキー/証明書ファイルをローカルに作成します。 したがって、それらの作業ディレクトリを作成します。
- 作業ディレクトリを作成します。
mkdir -p ~/scalardl-test/certs/
Step 4. Create key/certificate files
注記:このガイドでは、テストに自己署名証明書を使用します。 ただし、これらの証明書を運用環境では使用しな いことを強くお勧めします。
-
作業ディレクトリを
~/scalardl-test/certs/
ディレクトリに変更します。cd ~/scalardl-test/certs/
-
Ledger 情報を含む JSON ファイルを作成します。
cat << 'EOF' > ~/scalardl-test/certs/ledger.json
{
"CN": "ledger",
"hosts": ["example.com","*.example.com"],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"O": "ledger",
"OU": "test team",
"L": "Shinjuku",
"ST": "Tokyo",
"C": "JP"
}
]
}
EOF -
Auditor 情報を含む JSON ファイルを作成します。
cat << 'EOF' > ~/scalardl-test/certs/auditor.json
{
"CN": "auditor",
"hosts": ["example.com","*.example.com"],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"O": "auditor",
"OU": "test team",
"L": "Shinjuku",
"ST": "Tokyo",
"C": "JP"
}
]
}
EOF -
クライアント情報を含む JSON ファイルを作成します。
cat << 'EOF' > ~/scalardl-test/certs/client.json
{
"CN": "client",
"hosts": ["example.com","*.example.com"],
"key": {
"algo": "ecdsa",
"size": 256
},
"names": [
{
"O": "client",
"OU": "test team",
"L": "Shinjuku",
"ST": "Tokyo",
"C": "JP"
}
]
}
EOF -
Ledger のキー/証明書ファイルを作成します。
cfssl selfsign "" ./ledger.json | cfssljson -bare ledger
-
Auditor のキー/証明書ファイルを作成します。
cfssl selfsign "" ./auditor.json | cfssljson -bare auditor
-
クライアントのキー/証明書ファイルを作成します。
cfssl selfsign "" ./client.json | cfssljson -bare client
-
キー/証明書ファイルが作成されたことを確認します。
ls -1
【コマンド実行結果】
auditor-key.pem
auditor.csr
auditor.json
auditor.pem
client-key.pem
client.csr
client.json
client.pem
ledger-key.pem
ledger.csr
ledger.json
ledger.pem
ステップ 5. Helm Charts を使用して ScalarDL Ledger の DB スキーマを作成する
Helm Chart を使用して、Kubernetes クラスターに 2 つの ScalarDL Schema Loader ポッドをデプロイします。 ScalarDL Schema Loader は、PostgreSQL で ScalarDL Ledger と Auditor の DB スキーマを作成します。
-
作業ディレクトリを
~/scalardl-test/
に変更します。cd ~/scalardl-test/
-
Scalar helm リポジトリを追加します。
helm repo add scalar-labs https://scalar-labs.github.io/helm-charts
-
AWS/Azure Marketplace から ScalarDL コンテナー イメージをプルするためのシークレット リソースを作成します。
- AWS Marketplace
kubectl create secret docker-registry reg-ecr-mp-secrets \
--docker-server=709825985650.dkr.ecr.us-east-1.amazonaws.com \
--docker-username=AWS \
--docker-password=$(aws ecr get-login-password --region us-east-1) - Azure Marketplace
kubectl create secret docker-registry reg-acr-secrets \
--docker-server=<your private container registry login server> \
--docker-username=<Service principal ID> \
--docker-password=<Service principal password>
詳細については、以下のドキュメントを参照してください。
- AWS Marketplace
-
ScalarDL Schema Loader for Ledger のカスタム値ファイル (schema-loader-ledger-custom-values.yaml) を作成します。
-
AWS Marketplace
cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml
schemaLoading:
schemaType: "ledger"
image:
repository: "709825985650.dkr.ecr.us-east-1.amazonaws.com/scalar/scalardl-schema-loader-ledger"
version: "3.6.0"
imagePullSecrets:
- name: "reg-ecr-mp-secrets"
databaseProperties: |
scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres
scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }}
scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }}
scalar.db.storage=jdbc
secretName: "ledger-credentials-secret"
EOF -
Azure Marketplace
cat << 'EOF' > ~/scalardl-test/schema-loader-ledger-custom-values.yaml
schemaLoading:
schemaType: "ledger"
image:
repository: "<your private container registry>/scalarinc/scalardl-schema-loader"
version: "3.6.0"
imagePullSecrets:
- name: "reg-acr-secrets"
databaseProperties: |
scalar.db.contact_points=jdbc:postgresql://postgresql-ledger.default.svc.cluster.local:5432/postgres
scalar.db.username={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_USERNAME "" }}
scalar.db.password={{ default .Env.SCALAR_DL_LEDGER_POSTGRES_PASSWORD "" }}
scalar.db.storage=jdbc
secretName: "ledger-credentials-secret"
EOF
-