spec を使用して AlloyDB Omni でロードバランサを構成する方法について説明します。Google Kubernetes Engine(GKE)では、デフォルトで作成されるロードバランサは外部タイプで、外部 IP アドレスにバインドされ、インターネットからの接続を許可します。ただし、ロードバランサ マニフェストの metadata.annotations[] フィールドに networking.gke.io/load-balancer-type: "internal" アノテーションが含まれている場合、GKE は内部ロードバランサを作成します。
プラットフォームでは、特定のタイプのロードバランサを作成するための独自のアノテーションが用意されています。AlloyDB Omni では、データベース クラスタ マニフェストの spec セクションを使用してロードバランサ アノテーションを指定できます。データベース コントローラは、データベース クラスタを作成するときに、これらのアノテーションをロードバランサ spec に追加します。
データベース仕様を使用して内部ロードバランサを作成する
内部ロードバランサを作成するには、DBCluster マニフェストの spec セクションで dbLoadBalancerOptions フィールドを構成します。
Kubernetes
アノテーションでは、ロードバランサのタイプとプロパティを定義します。内部ロードバランサには、次のアノテーションが必要です。
networking.gke.io/load-balancer-type: "internal"
同じプロジェクト内の GKE クラスタ外からの接続を許可する内部ロードバランサを作成するには、次のマニフェストを適用します。
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: databaseVersion: "15.5.0" primarySpec: adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: memory: 5Gi cpu: 1 disks: - name: DataDisk size: 10Gi dbLoadBalancerOptions: annotations: networking.gke.io/load-balancer-type: "internal" allowExternalIncomingTraffic: true EOF
次のように置き換えます。
DB_CLUSTER_NAME: データベース クラスタの名前。これは、作成時に宣言したデータベース クラスタ名と同じです。
このマニフェストの内容:
- networking.gke.io/load-balancer-type: "internal": データベース クラスタに対する GKE 内部ロードバランサのアノテーション
- allowExternalIncomingTraffic: true:
allowExternalIncomingTrafficフィールドがtrueに設定され、Kubernetes クラスタ外からの受信トラフィックが許可されます。
データベース クラスタと接続の詳細を取得する
Kubernetes
データベース クラスタ リソースが Ready ステータスであることを確認するには、次のコマンドを使用します。
kubectl get dbclusters.alloydbomni.dbadmin.goog -n NAMESPACE -w出力は次のようになります。
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE
DB_CLUSTER_NAME 10.95.0.84 Ready DBClusterReady
次のように、内部ロードバランサのアノテーションと IP アドレスがロードバランサ サービスに存在することを確認します。
kubectl get svc LOAD_BALANCER_SERVICE_NAME -n NAMESPACE -o yaml次のように置き換えます。
LOAD_BALANCER_SERVICE_NAME: 外部ネットワークからアクセス可能な一意の IP アドレスを作成するロードバランサ サービスの名前。NAMESPACE: ロードバランサ サービスの Kubernetes Namespace の名前。
出力は次のようになります。
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/neg: '{"ingress":true}'
networking.gke.io/load-balancer-type: internal
creationTimestamp: "2024-02-22T15:26:18Z"
finalizers:
− gke.networking.io/l4-ilb-v1
− service.kubernetes.io/load-balancer-cleanup
labels:
alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME
alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE
alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo
alloydbomni.internal.dbadmin.gdc.goog/task-type: database
egress.networking.gke.io/enabled: "true"
name: LOAD_BALANCER_SERVICE_NAME
namespace: NAMESPACE
ownerReferences:
− apiVersion: alloydbomni.dbadmin.goog/v1
blockOwnerDeletion: true
controller: true
kind: DBCluster
name: DB_CLUSTER_NAME
uid: 2dd76c9f-7698-4210-be41-6d2259840a85
resourceVersion: "33628320"
uid: 1f45362b-6d6f-484d-ad35-11c14e91933e
spec:
allocateLoadBalancerNodePorts: true
clusterIP: 10.60.4.76
clusterIPs:
− 10.60.4.76
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
− IPv4
ipFamilyPolicy: SingleStack
loadBalancerSourceRanges:
− 0.0.0.0/0
ports:
− name: db
nodePort: 31453
port: 5432
protocol: TCP
targetPort: 5432
selector:
alloydbomni.internal.dbadmin.gdc.goog/dbcluster: DB_CLUSTER_NAME
alloydbomni.internal.dbadmin.gdc.goog/dbcluster-ns: NAMESPACE
alloydbomni.internal.dbadmin.gdc.goog/instance: ad98-foo
alloydbomni.internal.dbadmin.gdc.goog/task-type: database
egress.networking.gke.io/enabled: "true"
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
− ip: 10.95.0.84出力には次の属性が含まれます。
networking.gke.io/load-balancer-type: internal: ロードバランサ サービスに内部ロードバランサが存在している必要があります。ip: データベース クラスタの検証出力内のプライマリ エンドポイントの値が、ロードバランサの Ingress コントローラの値と一致している必要があります。