1.4.2.2. AWS Security Service を使用したアクセスキーの生成
AWS Security Service を使用してアクセスキーを生成するには、次の手順を実行します。
AWS 環境をセットアップします。以下のコマンドを実行します。
export POLICY_VERSION=$(date +"%m-%d-%y") export TRUST_POLICY_VERSION=$(date +"%m-%d-%y") export CLUSTER_NAME=<my-cluster> export S3_BUCKET=$CLUSTER_NAME-acm-observability export REGION=us-east-2 export NAMESPACE=open-cluster-management-observability export SA=tbd export SCRATCH_DIR=/tmp/scratch export OIDC_PROVIDER=$(oc get authentication.config.openshift.io cluster -o json | jq -r .spec.serviceAccountIssuer| sed -e "s/^https:\/\///") export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) export AWS_PAGER="" rm -rf $SCRATCH_DIR mkdir -p $SCRATCH_DIR次のコマンドで S3 バケットを作成します。
aws s3 mb s3://$S3_BUCKETS3 バケットにアクセスするための
s3-policyJSON ファイルを作成します。以下のコマンドを実行します。{ "Version": "$POLICY_VERSION", "Statement": [ { "Sid": "Statement", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject", "s3:DeleteObject", "s3:PutObject", "s3:PutObjectAcl", "s3:CreateBucket", "s3:DeleteBucket" ], "Resource": [ "arn:aws:s3:::$S3_BUCKET/*", "arn:aws:s3:::$S3_BUCKET" ] } ] }次のコマンドでポリシーを適用します。
S3_POLICY=$(aws iam create-policy --policy-name $CLUSTER_NAME-acm-obs \ --policy-document file://$SCRATCH_DIR/s3-policy.json \ --query 'Policy.Arn' --output text) echo $S3_POLICYTrustPolicyJSON ファイルを作成します。以下のコマンドを実行します。{ "Version": "$TRUST_POLICY_VERSION", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${AWS_ACCOUNT_ID}:oidc-provider/${OIDC_PROVIDER}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_PROVIDER}:sub": [ "system:serviceaccount:${NAMESPACE}:observability-thanos-query", "system:serviceaccount:${NAMESPACE}:observability-thanos-store-shard", "system:serviceaccount:${NAMESPACE}:observability-thanos-compact", "system:serviceaccount:${NAMESPACE}:observability-thanos-rule", "system:serviceaccount:${NAMESPACE}:observability-thanos-receive" ] } } } ] }次のコマンドを使用して、AWS Prometheus と CloudWatch のロールを作成します。
S3_ROLE=$(aws iam create-role \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --assume-role-policy-document file://$SCRATCH_DIR/TrustPolicy.json \ --query "Role.Arn" --output text) echo $S3_ROLEポリシーをロールにアタッチします。以下のコマンドを実行します。
aws iam attach-role-policy \ --role-name "$CLUSTER_NAME-acm-obs-s3" \ --policy-arn $S3_POLICYシークレットは、次のファイルのようになる場合があります。
configセクションではsignature_version2: falseが指定されており、access_keyとsecret_keyは指定されていません。apiVersion: v1 kind: Secret metadata: name: thanos-object-storage namespace: open-cluster-management-observability type: Opaque stringData: thanos.yaml: | type: s3 config: bucket: $S3_BUCKET endpoint: s3.$REGION.amazonaws.com signature_version2: false-
MultiClusterObservability カスタムリソースの作成 セクションの説明に従って、
MultiClusterObservabilityカスタムリソースにサービスアカウントアノテーションを指定します。 以下のコマンドを使用して、クラウドプロバイダーの S3 アクセスキーおよび秘密鍵を取得します。シークレットの
base64文字列のデコード、編集、エンコードが必要です。クラウドプロバイダーの S3 アクセスキーを編集およびデコードするには、次のコマンドを実行します。
YOUR_CLOUD_PROVIDER_ACCESS_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep access_key | awk '{print $2}')クラウドプロバイダーのアクセスキーを表示するには、次のコマンドを実行します。
echo $YOUR_CLOUD_PROVIDER_ACCESS_KEYクラウドプロバイダーの秘密鍵を編集およびデコードするには、次のコマンドを実行します。
YOUR_CLOUD_PROVIDER_SECRET_KEY=$(oc -n open-cluster-management-observability get secret <object-storage-secret> -o jsonpath="{.data.thanos\.yaml}" | base64 --decode | grep secret_key | awk '{print $2}')- クラウドプロバイダーの秘密鍵を表示するには、次のコマンドを実行します。
echo $YOUR_CLOUD_PROVIDER_SECRET_KEY次のデプロイメントとステートフルセットの Pod をチェックして、オブザーバビリティーが有効になっていることを確認します。次の情報が表示される場合があります。
observability-thanos-query (deployment) observability-thanos-compact (statefulset) observability-thanos-receive-default (statefulset) observability-thanos-rule (statefulset) observability-thanos-store-shard-x (statefulsets)