Configuring image discovery#
関連するインストールフェーズ Preparing your environment
前提条件#
Syncing images to a local private registry 完了済 - EDBイメージが設定されたプライベートレジストリが必要です。
レジストリコンプライアンス レジストリは OCI compliant である必要があります。
権限 IAMロールAWS / GCPまたはレジストリアクセス制御オンプレミスを構成するためのアクセス。
概要#
イメージ検出 は、 ビーコンエージェント 内で実行されているバックグラウンドプロセスです。 プライベートコンテナレジストリに接続し、利用可能なPostgresバージョンタグをスキャンし、ハイブリッドマネージャーHMに登録します。
イメージ検出により、新しいデータベースバージョンをレジストリに同期すると、ユーザーが手動介入なしでプロビジョニングに自動的に利用できるようになります。
Helmチャートの構成#
この機能を有効にするには、values.yaml
を更新して、ビーコンにどこを見るかを指示する必要があります。
beaconAgent:
provisioning:
imageDiscovery: true
imagesetDiscoveryContainerRegistryURL: "<your-private-registry-uri>"
# Set to true only for self-signed/internal CA scenarios
imagesetDiscoveryAllowInsecureRegistry: false
imageDiscovery#
このブールオプションは、イメージ検出機能を有効または無効にします。
デフォルトはfalse です。
imagesetDiscoveryContainerRegistryURL#
このオプションは、PostgreSQLコンテナイメージを検出するコンテナレジストリのURLを指定します。
Registry provider |
Registry URL |
Example |
|---|---|---|
docker.enterprisedb.com/pgai-platform |
docker.enterprisedb.com/pgai-platform |
|
<registry-name>.azurecr.io |
myregistry.azurecr.io |
|
<aws-account-id>.dkr.ecr.<aws-region-id>.amazonaws.com |
123456079902.dkr.ecr.us-east-1.amazonaws.com |
|
<gcp-region-id>-docker.pkg.dev |
us-east1-docker.pkg.dev |
imagesetDiscoveryAllowInsecureRegistry#
このオプションが有効になっている場合、証明書の検証なしでTLS接続を確立できます。デフォルトはfalse
です。
imagesetDiscoveryAuthenticationType#
レジストリプロバイダーによってサポートされている認証タイプは次のとおりです。
Registry provider |
Supported |
Recommended |
|---|---|---|
token |
token |
|
token, basic |
token |
|
eks_managed_identity |
eks_managed_identity |
|
token, basic |
token |
image_discovery_credentials_secret_name#
この値は、イメージ検出のためのレジストリの資格情報を含むKubernetesシークレットの名前です。 デフォルトは「edb-cred」です。
レジストリ権限の構成#
ビーコンエージェントがレジストリをスキャンするには特定の権限が必要です。
次のことができる必要があります。
リポジトリのリスト
リストタグ
タグマニフェストの読み取り
以下からプラットフォームを選択して、必要な権限を構成します。
汎用/オンプレミスRKE2/OpenShift#
標準のOCIレジストリHarbor、Quay、Artifactoryなどを使用している場合、
**Image Pull Secret*
*の作成時に指定したユーザー名/パスワードに、ターゲットリポジトリでread
およびlist 権限があることを確認します。
レジストリのドキュメント例 Quay.io Permissions を参照して、サービスアカウントを構成します。
AWS Elastic Container Registry ECR#
ECRを使用するEKSで実行されている場合、 EKSマネージドIdentity が必要な認証方法です。
AmazonEC2ContainerRegistryReadOnly
ポリシーでIAMロールを作成し、ビーコンのサービスアカウントに関連付ける必要があります。
このスクリプトを実行して、IAMロールとポッドIDを構成します。
# Configuration Variables
EKS_CLUSTER_NAME="<eks_cluster_name>"
EKS_CLUSTER_REGION="<eks_cluster_region>"
IMAGE_DISCOVERY_IAM_ROLE_NAME="<iam_role_name>"
# 1. Create Trust Policy
cat <<EOF > ./image-discovery-trust.json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowEksAuthToAssumeRoleForPodIdentity",
"Effect": "Allow",
"Principal": {
"Service": "pods.eks.amazonaws.com"
},
"Action": [
"sts:AssumeRole",
"sts:TagSession"
]
}
]
}
EOF
# 2. Create Role & Attach Policy
aws iam create-role --role-name "${IMAGE_DISCOVERY_IAM_ROLE_NAME}" \
--assume-role-policy-document file://image-discovery-trust.json
aws iam attach-role-policy --role-name "${IMAGE_DISCOVERY_IAM_ROLE_NAME}" \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
# 3. Associate with EKS Service Account
IMAGE_DISCOVERY_IAM_ROLE_ARN=$(aws iam get-role --role-name ${IMAGE_DISCOVERY_IAM_ROLE_NAME} | jq -r .Role.Arn)
aws eks create-pod-identity-association --cluster-name "${EKS_CLUSTER_NAME}" \
--namespace upm-beacon \
--service-account upm-beacon-agent-k8s \
--role-arn "${IMAGE_DISCOVERY_IAM_ROLE_ARN}" \
--region "${EKS_CLUSTER_REGION}"
Google Artifact Registry GAR#
GKEで実行されている場合、ビーコンが使用するサービスアカウントには、プロジェクトをリストし、アーティファクトを読み取る権限が必要です。
必要なロール
roles/artifactregistry.reader画像を読み取るためroles/browser特にリポジトリを見つけるためのresourcemanager.projects.list
このスクリプトを実行して、IAMバインディングを適用します。
# Replace with your Project ID and Service Account Name
PROJECT_ID="<your-project-id>"
SERVICE_ACCOUNT_EMAIL="<service-account-name>@${PROJECT_ID}.iam.gserviceaccount.com"
# Grant Reader Role
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \
--role="roles/artifactregistry.reader"
# Grant Browser Role (Required for discovery)
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${SERVICE_ACCOUNT_EMAIL}" \
--role="roles/browser"
Kubernetes Secretの構成#
最後のステップは、Helmチャートが、どのKubernetes Secretに資格情報が含まれているかを確認することですCloud Identityを使用しない場合。
values.yaml で、 image_discovery_secret_name を確認します。
デフォルトでは、これはedb-cred に設定されます。
parameters:
upm-beacon:
image_discovery_secret_name: "edb-cred"
検証
helm upgrade を介してこれらの変更を適用した後、 Beacon Agent
ポッドのログを確認します。
レジストリをスキャンし、イメージタグを検出していることを示すメッセージが表示されます。