Linux on Power ( ppc64le ) で Cassandra データストアを作成する
Cassandra オペレーターをインストールし、データ・ストアをセットアップすることができます。
準備
外部リポジトリーからイメージをプルするために、オンラインおよびオフラインのホストが準備されていることを確認します。 また、正しい Helm リポジトリーが追加されていることも確認してください。
詳細については、 「データストアのインストール準備」 を参照してください。
Cassandra デプロイ用のオペレーターのバージョンとイメージタグ
ピン留めされた Helm チャートまたはオペレーターのバージョンには、以下のイメージが必要です。
| プラットフォーム | オペレーターのバージョン | Helm チャートのバージョン | タグ付きのイメージ |
|---|---|---|---|
| 0.63.1 | 1.29.0 | 0.63.1 | artifact-public.instana.io/self-hosted-images/3rd-party/operator/cass-operator: 1.29.0_v0.39.0 artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client: 0.8.12_v0.33.0 artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra: 4.1.10_v0.41.0 artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger: 1.26.0_v0.18.0 |
セキュリティコンテキストの制約の作成(オンラインおよびオフライン)
Red Hat® OpenShift® クラスターを使用している場合は、 Cassandra オペレーターをデプロイする前に、Security Context Constraints(SCC)リソースを作成してください。 オンラインとオフラインの両方でSCCリソースが必要です。
SCCリソースを作成するには、以下の手順を実行します:
以下のように、
cassandra-scc.yamlなどのファイルを作成します。apiVersion: security.openshift.io/v1 kind: SecurityContextConstraints metadata: name: cassandra-scc runAsUser: type: MustRunAs uid: 999 seLinuxContext: type: RunAsAny fsGroup: type: RunAsAny allowHostDirVolumePlugin: false allowHostNetwork: true allowHostPorts: true allowPrivilegedContainer: false allowHostIPC: true allowHostPID: true readOnlyRootFilesystem: false users: - system:serviceaccount:instana-cassandra:cass-operator - system:serviceaccount:instana-cassandra:cassandra以下のコマンドを実行して、ファイルを適用します。
kubectl apply -f cassandra-scc.yaml
Cassandra のオンラインインストール
オンライン環境にCassandraデータ・ストアをインストールするには、以下の手順を実行します:
instana-cassandra名前空間を作成します。kubectl create namespace instana-cassandraサービス
cassandraアカウントを作成します。kubectl create serviceaccount cassandra -n instana-cassandraイメージ・プル・シークレットを作成する。
<download_key>の値を、あなた自身のダウンロードキーで更新してください。kubectl create secret docker-registry instana-registry --namespace instana-cassandra \ --docker-username=_ \ --docker-password=<download_key> \ --docker-server=artifact-public.instana.ioCassandra オペレーターをインストールします。
helm install cass-operator instana/cass-operator -n instana-cassandra --version=0.63.1 --set securityContext.runAsGroup=999 --set securityContext.runAsUser=999 --set image.registry=artifact-public.instana.io --set image.repository=self-hosted-images/3rd-party/operator/cass-operator --set image.tag=1.29.0_v0.39.0 --set "imagePullSecrets[0].name=instana-registry" --set global.imageConfig.images.system-logger.repository=self-hosted-images/3rd-party/datastore --set global.imageConfig.images.system-logger.name=system-logger --set global.imageConfig.images.system-logger.tag=1.29.0_v0.39.0 --set global.imageConfig.images.k8ssandra-client.repository=self-hosted-images/3rd-party/datastore --set global.imageConfig.images.k8ssandra-client.name=k8ssandra-client --set global.imageConfig.images.k8ssandra-client.tag=0.8.12_v0.33.0 --set global.imageConfig.defaults.registry=artifact-public.instana.io --set global.imageConfig.defaults.pullSecrets[0]=instana-registryYAML ファイルを作成します。例えば
cassandra.yaml、 Cassandra の設定を記述したファイルを作成します。apiVersion: cassandra.datastax.com/v1beta1 kind: CassandraDatacenter metadata: name: cassandra spec: clusterName: instana serverType: cassandra serverImage: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0 systemLoggerImage: artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.18.0 serverVersion: "4.1.10" imagePullPolicy: IfNotPresent podTemplateSpec: spec: serviceAccountName: cassandra imagePullSecrets: - name: instana-registry containers: - name: cassandra image: 'artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0' imagePullPolicy: IfNotPresent resources: requests: memory: "8Gi" # Adjust based on your available resources cpu: "2" # Adjust as needed limits: memory: "16Gi" # Adjust to your available resources cpu: "4" # Adjust as needed readinessProbe: httpGet: path: /api/v0/probes/readiness port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 15 periodSeconds: 20 successThreshold: 1 failureThreshold: 3 livenessProbe: httpGet: path: /api/v0/probes/liveness port: 8080 scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 15 periodSeconds: 20 successThreshold: 1 failureThreshold: 3 terminationMessagePath: /dev/termination-log lifecycle: preStop: exec: command: - curl - '-X' - POST - '-s' - '-m' - '30' - '-o' - /dev/null - '--show-error' - '--fail' - 'http://localhost:8080/api/v0/ops/node/drain' env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: DS_LICENSE value: accept - name: USE_MGMT_API value: 'true' - name: MGMT_API_NO_KEEP_ALIVE value: 'true' - name: MGMT_API_EXPLICIT_START value: 'true' ports: - name: native containerPort: 9042 protocol: TCP - name: tls-native containerPort: 9142 protocol: TCP - name: internode containerPort: 7000 protocol: TCP - name: tls-internode containerPort: 7001 protocol: TCP - name: jmx containerPort: 7199 protocol: TCP - name: mgmt-api-http containerPort: 8080 protocol: TCP - name: prometheus containerPort: 9103 protocol: TCP - name: metrics containerPort: 9000 protocol: TCP volumeMounts: - name: server-logs mountPath: /var/log/cassandra - name: server-data mountPath: /var/lib/cassandra - name: server-config mountPath: /config terminationMessagePolicy: File - name: server-system-logger image: 'artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.18.0' env: - name: POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: CLUSTER_NAME value: instana - name: DATACENTER_NAME value: cassandra - name: RACK_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: 'metadata.labels[''cassandra.datastax.com/rack'']' - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace resources: limits: memory: 256Mi requests: cpu: 100m memory: 128Mi managementApiAuth: insecure: {} size: 3 allowMultipleNodesPerWorker: false storageConfig: cassandraDataVolumeClaimSpec: accessModes: - ReadWriteOnce resources: requests: storage: 200Gi # Adjust the storage size if necessary config: jvm-server-options: initial_heap_size: "12G" max_heap_size: "12G" additional-jvm-opts: - -Dcassandra.allow_unsafe_aggressive_sstable_expiration=true cassandra-yaml: authenticator: org.apache.cassandra.auth.PasswordAuthenticator authorizer: org.apache.cassandra.auth.CassandraAuthorizer role_manager: org.apache.cassandra.auth.CassandraRoleManager memtable_flush_writers: 8 auto_snapshot: false gc_warn_threshold_in_ms: 10000 otc_coalescing_strategy: DISABLED memtable_allocation_type: offheap_objects num_tokens: 256 drop_compact_storage_enabled: trueCassandra (オンラインおよびオフライン) のデプロイおよび検証のステップを実行します。
Cassandra のオフラインインストール
インストールの準備時に外部レジストリーから Cassandra イメージをまだプルしていない場合は、ここでプルできます。 要塞ホストで以下のコマンドを実行します。 次に、それらの画像を、エアギャップ環境にある Instana のホストにコピーします。
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/operator/cass-operator:1.29.0_v0.39.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client:0.8.12_v0.33.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0
docker pull artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.18.0
Instana ホストで、以下の手順を実行してください。
イメージを内部イメージ・レジストリーに再タグ付けします。
docker tag artifact-public.instana.io/self-hosted-images/3rd-party/operator/cass-operator:1.29.0_v0.39.0 <internal-image-registry>/ppc64le-oss/cass-operator-ppc64le:1.29.0_v0.39.0 docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/k8ssandra-client:0.8.12_v0.33.0 <internal-image-registry>/ppc64le-oss/k8ssandra-client-ppc64le:0.8.12_v0.33.0 docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/cassandra:4.1.10_v0.41.0 <internal-image-registry>/ppc64le-oss/cass-management-api-ppc64le:4.1.10_v0.41.0 docker tag artifact-public.instana.io/self-hosted-images/3rd-party/datastore/system-logger:1.26.0_v0.18.0<internal-image-registry>/ppc64le-oss/system-logger-ppc64le:1.26.0_v0.18.0イメージを要塞ホスト上の内部イメージ・レジストリーにプッシュします。
docker push <internal-image-registry>/ppc64le-oss/cass-operator-ppc64le:1.29.0_v0.39.0 docker push <internal-image-registry>/ppc64le-oss/k8ssandra-client-ppc64le:0.8.12_v0.33.0 docker push <internal-image-registry>/ppc64le-oss/cass-management-api-ppc64le:4.1.10_v0.41.0 docker push <internal-image-registry>/ppc64le-oss/system-logger-ppc64le:1.26.0_v0.18.0instana-cassandra名前空間を作成します。kubectl create namespace instana-cassandraサービス
cassandraアカウントを作成します。kubectl create serviceaccount cassandra -n instana-cassandraオプション:内部イメージ・レジストリの認証が必要な場合は、イメージ・プル・シークレットを作成します。
kubectl create secret docker-registry <secret_name> --namespace instana-cassandra \ --docker-username=<registry_username> \ --docker-password=<registry_password> \ --docker-server=<internal-image-registry>:<internal-image-registry-port> \ --docker-email=<registry_email>Cassandra オペレーターをインストールします。 前のステップでイメージ・プル・シークレットを作成した場合は、次のコマンドに
--set imagePullSecrets[0].name="<internal-image-registry-pull-secret>"を追加する。helm install cass-operator cass-operator-0.63.1.tgz -n instana-cassandra --create-namespace --version=0.63.1 --set securityContext.runAsGroup=999 --set securityContext.runAsUser=999 --set image.registry=<internal-image-registry>--set image.repository=self-hosted-images/3rd-party/operator/cass-operator --set image.tag=1.29.0_v0.39.0 --set "imagePullSecrets[0].name=<secret-name>" --set global.imageConfig.images.system-logger.repository=self-hosted-images/3rd-party/datastore --set global.imageConfig.images.system-logger.name=system-logger --set global.imageConfig.images.system-logger.tag=1.29.0_v0.39.0 --set global.imageConfig.images.k8ssandra-client.repository=self-hosted-images/3rd-party/datastore --set global.imageConfig.images.k8ssandra-client.name=k8ssandra-client --set global.imageConfig.images.k8ssandra-client.tag=0.8.12_v0.33.0 --set global.imageConfig.defaults.registry=<internal-image-registry>--set global.imageConfig.defaults.pullSecrets[0]=<secret-name>YAML ファイルを作成します。例えば
cassandra.yaml、次のような Cassandra の設定を記述します:apiVersion: cassandra.datastax.com/v1beta1 kind: CassandraDatacenter metadata: name: cassandra spec: clusterName: instana serverType: cassandra serverImage: <internal-image-registry>/ppc64le-oss/cass-management-api-ppc64le:4.1.10_v0.41.0 systemLoggerImage: <internal-image-registry>/ppc64le-oss/system-logger-ppc64le:1.26.0_v0.18.0 serverVersion: 4.1.10 imagePullPolicy: IfNotPresent podTemplateSpec: spec: # Optional: if you created an image pull secret for your internal registry, uncomment the following lines and update the image pull secret information. # imagePullSecrets: # - name: <internal-image-registry-pull-secret> serviceAccountName: cassandra containers: - name: cassandra managementApiAuth: insecure: {} size: 3 allowMultipleNodesPerWorker: false storageConfig: cassandraDataVolumeClaimSpec: accessModes: - ReadWriteOnce resources: requests: storage: 200Gi config: jvm-server-options: initial_heap_size: "12G" max_heap_size: "12G" additional-jvm-opts: - -Dcassandra.allow_unsafe_aggressive_sstable_expiration=true cassandra-yaml: authenticator: org.apache.cassandra.auth.PasswordAuthenticator authorizer: org.apache.cassandra.auth.CassandraAuthorizer role_manager: org.apache.cassandra.auth.CassandraRoleManager memtable_flush_writers: 8 auto_snapshot: false gc_warn_threshold_in_ms: 10000 otc_coalescing_strategy: DISABLED memtable_allocation_type: offheap_objects num_tokens: 256 drop_compact_storage_enabled: trueCassandra (オンラインおよびオフライン) のデプロイおよび検証のステップを実行します。
Cassandra の展開と検証(オンラインおよびオフライン)
<clustername>-superuser)。 これは <clustername> 、ファイル cassandra.yaml のセクション .spec.clusterName で指定された値です。 以下のコマンドでは、secret name を例として instana-superuser 使用しています。Cassandra インスタンスをデプロイしてデータ・ストアを作成するには、以下の手順を実行します。
以下のコマンドを実行して、 Cassandra をデプロイします。
kubectl apply -f cassandra.yaml --namespace=instana-cassandrainstana-superuserのパスワードを取得します。kubectl get secret instana-superuser -n instana-cassandra --template='{{index .data.password | base64decode}}' && echoパスワードを
config.yamlファイルに保管します。<RETRIEVED_FROM_SECRET>を、前のステップで取得したパスワードに置き換えます。datastoreConfigs: ... cassandraConfigs: - user: instana-superuser password: <RETRIEVED_FROM_SECRET> adminUser: instana-superuser adminPassword: <RETRIEVED_FROM_SECRET> ...Cassandra データ・ストアのデプロイメントを確認します。
kubectl get all -n instana-cassandraCassandra データ・ストアが正常にデプロイされた場合、コマンドの結果は以下の出力のようになります。
NAME READY STATUS RESTARTS AGE pod/cass-operator-57dcc8884f-92knc 1/1 Running 0 36m pod/instana-cassandra-default-sts-0 2/2 Running 0 26m pod/instana-cassandra-default-sts-1 2/2 Running 0 26m pod/instana-cassandra-default-sts-2 2/2 Running 0 26m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/cass-operator-webhook-service ClusterIP 192.168.1.55 <none> 443/TCP 36m service/instana-cassandra-additional-seed-service ClusterIP None <none> <none> 26m service/instana-cassandra-all-pods-service ClusterIP None <none> 9042/TCP,8080/TCP,9103/TCP,9000/TCP 26m service/instana-cassandra-service ClusterIP None <none> 9042/TCP,9142/TCP,8080/TCP,9103/TCP,9000/TCP 26m service/instana-seed-service ClusterIP None <none> <none> 26m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cass-operator 1/1 1 1 36m NAME DESIRED CURRENT READY AGE replicaset.apps/cass-operator-57dcc8884f 1 1 1 36m NAME READY AGE statefulset.apps/instana-cassandra-default-sts 3/3 26m