このガイドでは、エアギャップされた Google Distributed Cloud(GDC)環境に Apigee Edge for Private Cloud と API プロキシをインストールしてデプロイする方法について説明します。Apigee Edge for Private Cloud などの GDC エアギャップ オファリングでは、インフラストラクチャとサービスを管理するために Google Cloud への接続は必要ありません。すべてのオペレーションに、オンプレミスでホストされているローカル コントロール プレーンを使用できます。GDC エアギャップの概要については、概要をご覧ください。
このガイドは、Apigee Edge for Private Cloud に精通し、Kubernetes の基本的な知識がある Apigee オペレーターを対象としています。
必要な手順の概要
エアギャップ GDC 環境に Apigee Edge for Private Cloud をインストールしてデプロイするには、オペレーターが次の手順を完了する必要があります。
- Apigee Edge for Private Cloud のインストール ファイルを取得します。
- ストレージ バケットを設定します。
- リポジトリ ノードを設定します。
- Apigee ノードをデプロイします。
- コントロール ノードを設定します。
- Ansible を構成します。
- Apigee コンポーネントをインストールします。
- Pod とサービスをデプロイします。
- アップローダと Fluent Bit フォワーダーの IP を更新します。
- Apigee 組織をオンボーディングします。
- HTTP 接続をテストします。
- TLS を構成し、HTTPS をテストします。
始める前に
インストール プロセスを開始する前に、次の手順を完了してください。
- まだ作成していない場合は、インストールに使用する GDC プロジェクトを作成します。詳細については、プロジェクトを作成するをご覧ください。
- GDC 接続ワークステーションまたは組織の継続的デプロイ環境で、
gdcloud
CLI をダウンロード、インストール、構成します。 gdcloud
CLI とkubectl
API の使用に必要な認証情報を取得します。必要な手順については、アクセス用にアカウントを認証するをご覧ください。- Apigee アカウント マネージャーから受け取った Apigee のユーザー名とパスワードを確認します。
- GKE 管理クラスタの名前と GKE ユーザー クラスタの名前を確認します。
容量要件
GDC に Apigee Edge for Private Cloud をインストールするには、特定のリソース割り当てを持つ複数の仮想マシン(VM)が必要です。これらの VM には、コンピューティング リソース(RAM、vCPU コア)とローカル ディスク ストレージに基づいて料金が発生します。詳細については、料金をご覧ください。
次の表に、各 VM のリソース要件を示します。
VM の種類 | RAM | vCPU コア数 | ディスク ストレージ |
---|---|---|---|
Repo ノード | 8 GB | 2 個の vCPU コア | 64 GB |
コントロール ノード | 8 GB | 2 個の vCPU コア | 64 GB |
Apigee API 管理ノード 1、2、3 | 16 GB RAM | 8 個の vCPU コア | 670 GB |
Apigee API 管理ノード 4 と 5 | 16 GB RAM | 8 個の vCPU コア | 500 GB ~ 1 TB |
ロールと権限
エアギャップ GDC 環境に Apigee Edge for Private Cloud をデプロイするには、次のロールと権限が必要です。
- プラットフォーム管理者(PA):
IAM Admin
ロールを割り当てます。 - アプリケーション オペレーター(AO): 次のロールを割り当てます。
Harbor Instance Admin
: プロジェクト内の Harbor インスタンスを管理するためのフルアクセス権があります。LoggingTarget Creator
: プロジェクト Namespace にLoggingTarget
カスタム リソースを作成します。LoggingTarget Editor
: プロジェクト Namespace のLoggingTarget
カスタム リソースを編集します。Project Bucket Admin
: バケット内のストレージ バケットとオブジェクトを管理しますProject Grafana Viewer
: プロジェクト Namespace のモニタリング インスタンスにアクセスします。Project NetworkPolicy Admin
: プロジェクト名前空間のプロジェクト ネットワーク ポリシーを管理します。Project VirtualMachine Admin
: プロジェクト Namespace の仮想マシンを管理します。Secret Admin
: プロジェクト内の Kubernetes Secret を管理します。Service Configuration Admin
: プロジェクト Namespace 内のサービス構成に対する読み取り / 書き込みアクセス権があります。Namespace Admin
: プロジェクトの名前空間内のすべてのリソースを管理します。
- GDC エアギャップ上の Apigee には DNS サーバーが付属しておらず、回避策としてローカル DNS 解決を使用します。外部 DNS サーバーがある環境に GDC エアギャップ上の Apigee がデプロイされている場合は、ローカル DNS を構成する手順を、DNS サーバーで DNS エントリを構成する手順に置き換えます。
- Apigee on GDC のエアギャップには、スタンドアロンの SMTP サーバーは含まれていません。SMTP サーバーはいつでも構成できます。これにより、Management Server と Management UI からのアカウント作成とパスワード リセットの送信メール通知を有効にできます。管理 API は、Apigee ユーザー アカウントの管理に使用できます。詳細については、Edge SMTP サーバーを構成するをご覧ください。
- GDC のエアギャップ上の Apigee では、侵入検知と防止は実装されていません。Snort などの侵入防止システム(IPS)をインストールして構成し、悪意のあるアクティビティを検出して防止します。
- オペレーティング システム: Rocky Linux 8
- マシンサイズ: 8 GB の RAM、2 個の vCPU コア、64 GB のローカル ディスク ストレージ
- 接続:
- 上り(内向き): TCP 22(SSH)
- 下り(外向き): インターネット
- Edge for Private Cloud 列に記載されているように、GDC でサポートされている最新の公式リリース バージョンについては、Apigee Edge for Private Cloud リリースノートをご覧ください。
- Edge のセットアップ ファイルをダウンロードします。
curl https://software.apigee.com/apigee/tarball/VERSION/rocky8/archive.tar -o /tmp/archive.tar -u 'APIGEE_USER:APIGEE_PASSWORD'
ここで
- APIGEE_USER は、Apigee 組織用に受け取ったユーザー名です。
- APIGEE_PASSWORD は、Apigee 組織用に受け取ったパスワードです。
- VERSION は、インストールする GDC で使用する Apigee Edge for Private Cloud のリリース バージョンです(例: 4.53.01)。
- 最新の Apigee Edge for Private Cloud
bootstrap_VERSION.sh
ファイルを/tmp/bootstrap_VERSION.sh
にダウンロードします。curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
ここで、VERSION は、インストールする GDC で使用する Apigee Edge for Private Cloud の最新リリース バージョンです(例: 4.53.01)。
- Edge
apigee-service
ユーティリティと依存関係をインストールします。sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD
ここで
- APIGEE_USER は、Apigee 組織用に受け取ったユーザー名です。
- APIGEE_PASSWORD は、Apigee 組織用に受け取ったパスワードです。
- VERSION は、インストールする GDC で使用する Apigee Edge for Private Cloud のリリース バージョンです。
- 接続されたノードで設定スクリプトを実行します。
chmod a+x connected-node_setup.sh \ ./connected-node_setup.sh
このステップでは、スクリプトは次の場所に必要なファイルを生成します(たとえば、バージョン 4.53.01 の場合)。
/opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz
/tmp/apigee-nginx/apigee-nginx.tar
/tmp/fluentbit/fluentbit.tar
/tmp/postgresql14/postgresql14.tar
/tmp/ansible-rpms.tar
/tmp/apigee-repos.tar
- SSH を使用して、接続されたノードからローカルマシンに必要なファイルを転送します。
mkdir apigee-files
cd apigee-files
for file in /opt/apigee/data/apigee-mirror/apigee-4.53.01.tar.gz /tmp/ansible-rpms.tar /tmp/apigee-nginx/apigee-nginx.tar /tmp/fluentbit/fluentbit.tar /tmp/postgresql14/postgresql14.tar /tmp/apigee-repos.tar; do scp -i SSH_PRIVATE_KEY_FILE USER@CONNECTED_NODE_IP:$file . done
ここで
- SSH_PRIVATE_KEY_FILE は、SSH 秘密鍵ファイルへのパスです。
- USER は、接続されたノードのユーザー名です。
- CONNECTED_NODE_IP は、接続されたノードの IP アドレスです。
- 組織管理者クラスタで認証します。
gdcloud auth login --login-config-cert WEB_TLS_CERT
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
ここで
- WEB_TLS_CERT は、ウェブ TLS 証明書のパスです。
- ORG_ADMIN_CLUSTER は、組織管理者の GKE クラスタの名前です。
- プロジェクトとバケットの環境変数を設定します。
export PROJECT=PROJECT
export BUCKET=BUCKET_NAME
ここで
- PROJECT は、GDC プロジェクトの名前です。
- BUCKET_NAME は、Apigee Edge for Private Cloud バックアップ ファイルの保存用に作成するバケットの名前です。
- バケット構成を適用します。
kubectl apply -f - <<EOF apiVersion: object.GDC.goog/v1 kind: Bucket metadata: name: $BUCKET namespace:$PROJECT spec: description: bucket for Apigee backup files storageClass: Standard bucketPolicy : lockingPolicy : defaultObjectRetentionDays: 30 EOF
この構成では、保持期間が 30 日間のバケットを作成します。
- プロジェクトにサービス アカウントを作成します。
gdcloud iam service-accounts create $BUCKET-sa \ --project=$PROJECT
- バケットにアクセスするためのシークレットを生成するロールとロール バインディングを作成します。
kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: $BUCKET-role namespace: $PROJECT rules: - apiGroups: - object.gdc.goog resourceNames: - $BUCKET resources: - buckets verbs: - get - read-object - write-object --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: $BUCKETrolebinding namespace: $PROJECT roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: $BUCKET-role subjects: - kind: ServiceAccount name: $BUCKET-sa namespace: $PROJECT EOF
- シークレットからアクセスキー ID とキーを取得します。
export BUCKET_SECRET=$(kubectl get secret -n $PROJECT -o jsonpath="{range .items[*]}{.metadata.name}{':'}{.metadata.annotations['object\.GDC\.goog/subject']}{'\n'}{end}" | grep $BUCKET | tail -1 | cut -f1 -d :)
echo "access-key-id=$(kubectl get secret -n $PROJECT $BUCKET_SECRET -o jsonpath="{.data['access-key-id']}")"
echo "access-key=$(kubectl get secret -n $PROJECT $BUCKET_SECRET -o jsonpath="{.data['secret-access-key']}")"
出力は次のようになります。
access-key-id=RFdJMzRROVdWWjFYNTJFTzJaTk0= access-key=U3dSdm5FRU5WdDhMckRMRW1QRGV0bE9MRHpCZ0Ntc0cxVFJQdktqdg==
- ユーザー GKE クラスタでアップローダーが使用する Secret を作成します。
- ユーザー GKE クラスタで認証します。
gdcloud clusters get-credentials USER_CLUSTER
ここで、USER_CLUSTER はユーザー GKE クラスタの名前です。
- シークレット構成を適用します。
kubectl apply -f - <<EOF apiVersion: v1 kind: Secret metadata: namespace: $PROJECT name: $BUCKET-secret type: Opaque data: access-key-id: ACCESS_KEY_ID access-key: ACCESS_KEY EOF
ここで
- ACCESS_KEY_ID は、前の手順で取得したアクセスキー ID です。
- ACCESS_KEY は、前の手順で取得したアクセスキーです。
- ユーザー GKE クラスタで認証します。
- バケットのストレージ エンドポイント、完全修飾ドメイン名(FQDN)、リージョンを取得します。
- 組織管理者クラスタで認証します。
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
ここで、ORG_ADMIN_CLUSTER は組織管理者 GKE クラスタの名前です。
- バケットのストレージ エンドポイント、完全修飾ドメイン名(FQDN)、リージョンを取得します。
kubectl get buckets ${BUCKET} -n $PROJECT -o jsonpath="{'endpoint: '}{.status.endpoint}{'\n'}{'bucket: '}{.status.fullyQualifiedName}{'\n'}{'region: '}{.status.region}{'\n'}"
出力は次のようになります。
endpoint: https://objectstorage.gpu-org.cookie.sesame.street bucket: ez9wo-apigee-backup-bucket region: cookie
- 組織管理者クラスタで認証します。
apigee/helm_user_cluster/values-cookie-air-gapped.yaml
ファイルで次の値を更新します。objectstorekeyname: "apigee-backup-bucket-secret" objectstoreurl: "BUCKET_ENDPOINT" objectstorebucket: "BUCKET_FQDN"
ここで
- BUCKET_ENDPOINT は、前のステップで取得したバケットのエンドポイントです。
- BUCKET_FQDN は、前の手順で取得したバケットの完全修飾ドメイン名です。
apigee/helm_user_cluster/values-cookie-air-gapped.yaml
を次のように更新します。repo_node: enabled: true apigee_node: enabled: false control_node: enabled: false
repo_node
が有効になっており、apigee_node
とcontrol_node
の両方が無効になっていることを確認します。これらのノードは、後のステップでデプロイされます。- 組織管理クラスタの認証情報を取得します。
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
ここで、ORG_ADMIN_CLUSTER は組織管理者 GKE クラスタの名前です。
- Python 仮想環境を作成します。
python3 -m venv venv / source venv/bin/activate
- デプロイ スクリプトを実行してリポジトリ ノードを作成します。
python apigee/solution_deploy.py gdc-air-gapped
- リポジトリ ノードの SSH を構成します。
export NODE=repo
kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: $NODE- spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: $NODE EOF
ここで、SSH_PUBLIC_KEY_FILE は公開 SSH 認証鍵を含むファイルの名前です。
- リポジトリ ノードの外部 IP アドレスを取得します。
kubectl get virtualmachineexternalaccess -n $PROJECT $NODE -ojsonpath='{.status.ingressIP}'
- リポジトリ ノードの内部 IP アドレスを取得します。
kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT $NODE -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'
apigee-4.53.01
apigee-nginx.tar
postgresql14.tar
fluentbit.tar
ansible-rpms.tar
apigee-repos.tar
- SSH 秘密鍵ファイルをリポジトリノードにコピーします。
scp -i SSH_PRIVATE_KEY_FILE ~/apigee-files/* admin@REPO_EXTERNAL_IP:/tmp
ここで
- SSH_PRIVATE_KEY_FILE は、秘密 SSH 認証鍵を含むファイルの名前です。
- REPO_EXTERNAL_IP は、前の手順で取得したリポジトリ ノードの外部 IP アドレスです。
- Fluent Bit 構成を含むフォルダをリポジトリノードにアップロードします。
scp -i SSH-PRIVATE-KEY-FILE -r apigee/scripts/fluent-bit admin@REPO_EXTERNAL_IP:/tmp/fluent-bit
ここで
- SSH_PRIVATE_KEY_FILE は、秘密 SSH 認証鍵を含むファイルの名前です。
- REPO_EXTERNAL_IP は、リポジトリ ノードの外部 IP アドレスです。
apigee/scripts/repo_setup.sh
をリポジトリノードにコピーします。- スクリプトで、REPO_USER と REPO_PASSWORD をミラー リポジトリの目的のユーザー名とパスワードに置き換えます。
- スクリプトを実行します。
chmod a+x repo_setup.sh
./repo_setup.sh
No such file or directory
エラーが発生した場合は、スクリプトを再実行します。 - リポジトリ ノードからミラー リポジトリへの接続をローカルでテストします。
curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
curl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/apigee/release/VERSION/repodata/repomd.xml
VERSION は、インストールする Apigee Edge for Private Cloud のバージョンに置き換えます。
apigee/helm/scripts/apigee_setup.sh
のREPO_INTERNAL_IP
、REPO_USER_NAME
、REPO_PASSWORD
を目的の値に置き換えます。- 値を環境変数としてエクスポートします。
export REPO_IP=REPO_INTERNAL_IP
export REPO_USER=REPO_USER_NAME
export REPO_PASSWORD=REPO_PASSWORD
- 次のように、
apigee/helm/values-cookie-air-gapped.yaml
でapigee_node
を有効にします。apigee_node: enabled: true
- デプロイ スクリプトを実行して Apigee ノードを作成します。
source venv/bin/activate
python apigee/solution_deploy.py gdc-air-gapped
- 組織管理者クラスタで認証します。
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
ここで、ORG_ADMIN_CLUSTER は組織管理者 GKE クラスタの名前です。
- 各ノードの SSH 認証鍵を作成します。
for i in 1 2 3 4 5; do kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: node$i spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: node$i EOF done
ここで、SSH_PUBLIC_KEY_FILE は公開 SSH 認証鍵を含むファイルの名前です。
- Apigee ノードの外部 IP アドレスを取得します。
for i in 1 2 3 4 5; do kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}' echo done
- Apigee ノードの内部 IP アドレスを取得します。
for i in 1 2 3 4 5; do kubectl get virtualmachines.virtualmachine.gdc.goog -n $PROJECT node$i -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}' echo done
- (省略可)起動スクリプトが Apigee ノードで正常に実行されたかどうかを確認します。
- ノードに SSH で接続し、次のコマンドを実行します。
sudo journalctl -u cloud-final -f
- 次のようなログを探します。
Aug 29 18:17:00 172.20.128.117 cloud-init[1895]: Complete! Aug 29 18:17:00 172.20.128.117 cloud-init[1895]: Finished running the command: . /var/lib/google/startup-scripts/apigee-setup
- ノードに SSH で接続し、次のコマンドを実行します。
apigee/helm/scripts/control_setup.sh
のREPO_INTERNAL_IP
、REPO_USER_NAME
、REPO_PASSWORD
を目的の値に置き換えます。- 次のように
apigee/helm/values-cookie-air-gapped.yaml
でcontrol_node
を有効にします。control_node: enabled: true
- デプロイ スクリプトを実行してコントロール ノードを作成します。
source venv/bin/activate
python apigee/solution_deploy.py gdc-air-gapped
- コントロール ノードへの SSH アクセスを構成します。
kubectl create -n $PROJECT -f - <<EOF apiVersion: virtualmachine.GDC.goog/v1 kind: VirtualMachineAccessRequest metadata: generateName: control- spec: ssh: key: | "cat SSH_PUBLIC_KEY_FILE" ttl: 24h user: admin vm: control EOF
- コントロール ノードの外部 IP アドレスを取得します。
kubectl get virtualmachineexternalaccess -n $PROJECT control -ojsonpath='{.status.ingressIP}'
- コントロール ノードの内部 IP を取得します。
kubectl get virtualmachines.virtualmachine.GDC.goog -n $PROJECT control -ojsonpath='{.status.network.interfaces[1].ipAddresses[0]}'
- コントロール ノードに SSH で接続し、Ansible 環境を設定します。
cd /home/admin
cp -r /tmp/apigee-repos .
cd apigee-repos/ansible-opdk-accelerator/setup
- リモート Git リポジトリをローカル ファイルに置き換えます。
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.yml
sed -i 's/\.git$//g' requirements.yml
- Install Ansible requirements:
sudo chown -R admin /home/admin/apigee-repos
ansible-galaxy install -r requirements.yml -f
- 設定構成を更新します。
main.yml
ファイルを編集します。vi ~/apigee-repos/ansible-opdk-accelerator/setup/roles/apigee-opdk-setup-ansible-controller/tasks/main.yml
- GitHub アクセスが必要なタスクを削除します。
- 構成リポジトリの Git SSH チェックアウト
- 構成リポジトリの Git HTTPS チェックアウト
- 設定ハンドブックを実行します。
cd ~/apigee-repos/ansible-opdk-accelerator/setup
ansible-playbook setup.yml
- Apigee ノードの SSH 認証鍵をコントロール ノードにアップロードします。
scp -i CONTROL_SSH_PRIVATE_KEY_FILE APIGEE_NODE_SSH_PRIVATE_KEY_FILE admin@CONTROL_EXTERNAL_IP:/home/admin/.ssh/id_rsa
ここで
- CONTROL_SSH_PRIVATE_KEY_FILE は、コントロール ノードの SSH 秘密鍵を含むファイルの名前です。
- APIGEE_NODE_SSH_PRIVATE_KEY_FILE は、Apigee ノードの SSH 秘密鍵を含むファイルの名前です。
- CONTROL_EXTERNAL_IP は、コントロール ノードの外部 IP アドレスです。
- Ansible インベントリ構成ファイルを作成します。
apigee/scripts/ansible/prod.cfg
ファイルの内容をprod.cfg
ファイルにコピーします。vi ~/.ansible/multi-planet-configurations/prod.cfg
edge-dc1
フォルダを作成し、apigee/scripts/ansible/edge-dc1
ファイルの内容をedge-dc1
ファイルにコピーします。mkdir ~/.ansible/inventory/prod
vi ~/.ansible/inventory/prod/edge-dc1
edge-dc1
で Apigee ノードの内部 IP アドレスを更新します。apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IP
apigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IP
apigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IP
apigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IP
apigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IP
ここで、APIGEE_NODE*_INTERNAL_IP の値は、前の手順で取得した Apigee ノードの内部 IP アドレスです。
- 次の値を使用して
~/.apigee-secure/credentials.yml
ファイルを構成します。- apigee_repo_user: 'APIGEE_REPO_USER'
- apigee_repo_password: 'APIGEE_REPO_PASSWORD'
- opdk_qpid_mgmt_username: 'OPDK_QPID_MGMT_USERNAME'
- opdk_qpid_mgmt_password: 'OPDK_QPID_MGMT_PASSWORD'
ここで
- APIGEE_REPO_USER は、Apigee リポジトリのユーザー名です。
- APIGEE_REPO_PASSWORD は、Apigee リポジトリのパスワードです。
- OPDK_QPID_MGMT_USERNAME は、Apigee QPID 管理サーバーのユーザー名です。
- OPDK_QPID_MGMT_PASSWORD は、Apigee QPID 管理サーバーのパスワードです。
- 有効な Apigee Edge for Private Cloud ライセンス ファイルを含むライセンス ファイルを追加します。ファイル名は
license.txt
にする必要があります。 ~/.apigee-secure/license.txt
ファイルの内容を、作成したlicense.txt
にコピーします。~/.apigee/custom-properties.yml
ファイルで次の値を構成します。- opdk_version: 'OPDK_VERSION'
- apigee_repo_url: 'APIGEE_REPO_URL'
ここで
- OPDK_VERSION は、インストールする Apigee Edge for Private Cloud のバージョンです。
- APIGEE_REPO_URL は、Apigee リポジトリの URL です。
- 構成ファイルを環境変数としてエクスポートします。
export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg
- リモート Git リポジトリをローカル ファイルに置き換えます。
cd ~/apigee-repos/ansible-opdk-accelerator/installations/multi-node/
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.yml
sed -i 's/\.git$//g' requirements.yml
- Ansible の要件をインストールします。
ansible-galaxy install -r requirements.yml -f
- Ansible ロールにパッチを適用します。
sed -i 's/private_address/inventory_hostname/g' ~/.ansible/roles/apigee-opdk-settings-cassandra/tasks/main.yml
sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.yml
sed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.yml
cat << EOF >> ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/templates/response-file-template.conf.j2 QPID_MGMT_USERNAME= opdk_qpid_mgmt_username QPID_MGMT_PASSWORD= opdk_qpid_mgmt_password EOF
sed -i 's/mode: 0700/mode: 0700\n recurse: yes/g' ~/.ansible/roles/apigee-opdk-setup-postgres-config/tasks/main.yml
install.yml
ファイルの内容をapigee/scripts/ansible/install.yml
の内容で置き換えます。- プレイブックを実行して、Apigee コンポーネントをインストールします。
ansible-playbook install.yml
- Edge UI でユーザーのパスワード リセットリンクを無効にします。GDC のエアギャップ環境の Apigee には SMTP サーバーが含まれていません。Edge UI でパスワードのリセットリンクを無効にする の手順に沿って操作します。
-
Harbor レジストリ インスタンスを作成するの手順に沿って、GDC プロジェクト
dev-apigee
に Harbor インスタンスを作成します。 -
Harbor プロジェクトを作成するの手順に沿って、
apigee
という名前の Harbor プロジェクトを作成します。 - アクセス制御を構成するの手順に沿って、Harbor プロジェクトのアクセス制御を設定します。
- Docker と Helm にログインするの手順に沿って、Docker 認証を構成します。
- 次のように
apigee/apigee_user_cluster.toml
ファイルの IP アドレスを更新します。mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP" router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP" router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
ここで
- APIGEE_NODE1_EXTERNAL_IP は、前の手順で取得した Apigee node1 の外部 IP アドレスです。
- APIGEE_NODE2_EXTERNAL_IP は、前の手順で取得した Apigee node2 の外部 IP アドレスです。
- APIGEE_NODE3_EXTERNAL_IP は、前の手順で取得した Apigee node3 の外部 IP アドレスです。
- HTTPS を構成するための SSL 証明書ファイル(
server.crt
)と鍵ファイル(server.key
)をapigee/mgmt-server-proxy
フォルダとapigee/router-proxy
フォルダに配置します。自己署名証明書を生成するには、次のコマンドを使用します。
openssl req -newkey rsa:4096 -x509 -nodes -keyout server.key -new -out server.crt -subj "/CN=*.apigeetest.com" -sha256 -days 365
apigee/uploader/Dockerfile
ファイルで、アップローダ コンテナの root ユーザーのSSH-PASSWORD
の値を更新します。RUN echo 'root:SSH_PASSWORD' | chpasswd
- ユーザー クラスタの認証情報を取得します。
gdcloud clusters get-credentials USER_CLUSTER
ここで、USER_CLUSTER はユーザー GKE クラスタの名前です。
- deploy スクリプトを実行して、Pod と Service をデプロイします。
source venv/bin/activate
python apigee/solution_deploy_user_cluster.py gdc-air-gapped
- サービスの外部 IP アドレスを取得します。
kubectl get svc -n $PROJECT_ID
apigee/helm/scripts/backup_setup.sh
でSSH_PASSWORD
、root
、UPLOADER_EXTERNAL_IP
を更新します。sshpass -p SSH_PASSWORD scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null apigee-backup* root@UPLOADER_EXTERNAL_IP:/temp/
ここで
- SSH_PASSWORD は root ユーザーのパスワードです。
- UPLOADER_EXTERNAL_IP は、前の手順で取得したアップローダ サービスの外部 IP アドレスです。
apigee/helm/scripts/apigee_setup.sh
でFLUENTBIT_EXTERNAL_IP
を更新します。export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP
- VM を停止します。
gdcloud clusters get-credentials ORG_ADMIN_CLUSTER
export PROJECT=dev-apigee
for i in 1 2 3 4 5; do gdcloud compute instances stop node$i --project $PROJECT done
- Helm チャートを再デプロイします。
python apigee/solution_deploy.py gdc-air-gapped
- VM を起動します。
for i in 1 2 3 4 5; do GDCloud compute instances start node$i --project $PROJECT done
- 次のように
apigee/scripts/apigee_org_setup.sh
の値を更新します。必要に応じて、他のパラメータを更新します。IP1=APIGEE_NODE1_INTERNAL_IP VHOST_ALIAS="APIGEE_NODE2_EXTERNAL_IP:9001 APIGEE_NODE3_EXTERNAL_IP:9001"
ここで
- APIGEE_NODE1_INTERNAL_IP は、前のステップで取得した Apigee node1 の内部 IP アドレスです。
- APIGEE_NODE2_EXTERNAL_IP は、前の手順で取得した Apigee node2 の外部 IP アドレスです。
- APIGEE_NODE3_EXTERNAL_IP は、前の手順で取得した Apigee node3 の外部 IP アドレスです。
- node1 でスクリプトを実行して、組織をオンボーディングします。
chmod a+x apigee_org_setup.sh
./apigee_org_setup.sh
apigee-elb
サービスの外部 IP アドレスを取得します。gdcloud clusters get-credentials USER_CLUSTER
export PROJECT=dev-apigee
kubectl get svc apigee-elb -n $PROJECT
ここで、USER_CLUSTER はユーザー GKE クラスタの名前です。
このサービスは、Edge UI、Management API、API プロキシのエンドポイントとして機能します。
- APIGEE_ELB_EXTERNAL_IP は、前の手順で取得した
apigee-elb
サービスの外部 IP アドレスです。 - ORG_NAME は、Apigee 組織の名前です。
- ENV_NAME は Apigee 環境の名前です。
- Edge UI にログインします。
- [API プロキシ] ページで、[作成] をクリックして新しい API プロキシを作成します。
- [Proxy details] ページで、次の値を入力します。
- プロキシタイプ: [ターゲットなし] を選択します。
- プロキシ名:
ok
- Base path:
/ok
- ターゲット:
http://APIGEE_ELB_EXTERNAL_IP:9001
- [Create] をクリックして API プロキシを作成します。
/ok
に HTTP リクエストを送信します。curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
- レスポンスが
200 OK
であることを確認します。 - キーストア/トラストストアとエイリアスを作成するの手順に沿って、次の値を使用して自己署名証明書を作成します。
- KeyStore: myTestKeystore
- KeyAlias: myKeyAlias
- 共通名: apigeetest.com
- API 呼び出しを行って、
api.apigeetest.com
という名前の仮想ホストを作成します。curl -v -H "Content-Type:application/xml" \ -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e//virtualhosts" \ -d '<VirtualHost name="secure"> <HostAliases> <HostAlias>api.apigeetest.com</HostAlias> </HostAliases> <Interfaces/> <Port>9005</Port> <OCSPStapling>off</OCSPStapling> <SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>myTestKeystore</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo> </VirtualHost>'
ここで
- APIGEE_ELB_EXTERNAL_IP は、前の手順で取得した
apigee-elb
サービスの外部 IP アドレスです。 - ORG_NAME は、Apigee 組織の名前です。
- ENV_NAME は、仮想ホストを作成する Apigee 環境の名前です。
- APIGEE_ELB_EXTERNAL_IP は、前の手順で取得した
- 安全な仮想ホストを使用して API プロキシを作成します。
- ルーターで、仮想ホストの DNS 解決を構成します。
echo '127.0.0.1 api.apigeetest.com' | sudo tee -a /etc/hosts
- エンドポイントに HTTPS リクエストを送信して、仮想ホストがローカルで機能することを確認します。
curl https://api.apigeetest.com:9005/ok -v -k
- エンドポイントの DNS 解決を構成します。
echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts
ここで、APIGEE_ELB_EXTERNAL_IP は前の手順で取得した
apigee-elb
サービスの外部 IP アドレスです。 - ウェブブラウザで
https://apigeetest.com/ok
に移動し、動作することを確認します。 - SSL 証明書ファイルと鍵ファイルからキーストア ファイルを生成します。
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out keystore.pkcs12
keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
- キーストア ファイルを node1 の Apigee フォルダに配置します。
scp -i SSH_PRIVATE_KEY_FILE keystore.jks admin@APIGEE_NODE1_EXTERNAL_IP:/home/admin/
ここで
- SSH_PRIVATE_KEY_FILE は、Apigee ノードの SSH 秘密鍵を含むファイルの名前です。
- APIGEE_NODE1_EXTERNAL_IP は、前の手順で取得した Apigee node1 の外部 IP アドレスです。
- node1 に SSH 接続し、キーストア ファイルを Apigee フォルダに移動します。
sudo mv keystore.jks /opt/apigee/customer/application/
- SSL 構成ファイルを作成します。
sudo vi /tmp/sslConfigFile
- 次のように
KEY-PASS-PHRASE
の値を更新します。HTTPSPORT=9443 DISABLE_HTTP=n KEY_ALGO=JKS KEY_FILE_PATH=/opt/apigee/customer/application/keystore.jks KEY_PASS=KEY_PASS_PHRASE
- 構成ファイルを使用して SSL を構成します。
sudo chown apigee:apigee /tmp/sslConfigFile
/opt/apigee/apigee-service/bin/apigee-service edge-ui configure-ssl -f /tmp/sslConfigFile
- Edge UI の DNS 解決を構成します。
echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts
ここで、APIGEE_ELB_EXTERNAL_IP は前の手順で取得した
apigee-elb
サービスの外部 IP アドレスです。 - ウェブブラウザで
https://ui.apigeetest.com:9443
にアクセスし、動作することを確認します。詳しくは、ガイドをご覧ください。 - キーストア ファイルのオーナーを構成します(Edge UI と同じものを使用します)。
sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
- プロパティ ファイルを作成します。
sudo vi /opt/apigee/customer/application/management-server.properties
- 変更を反映させるために Management Server を再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- HTTPS がローカルで機能していることを確認します。
curl -u "opdk@apigee.com:Apigee123!" "https://localhost:8443/v1/users" -k
- クライアントから、ブラウザで https://apigeetest.com:8443/v1/users にアクセスします。管理者ユーザー名とパスワードを入力して、認証情報が正しく構成されていることを確認します。
- 他の Apigee デプロイ オプションを確認する。
- 詳しくは、GDC の詳細をご覧ください。
GDC のエアギャップ ロールと権限の付与の詳細については、 アクセス権の付与と取り消しをご覧ください。
制限事項
Apigee on GDC のエアギャップには、次の制限が適用されます。
必要なファイルを入手する
インストール ファイルを取得するには、まず接続されたノードを設定してから、ファイルをダウンロードする必要があります。
接続されたノードを設定する
接続されたノードは、インストール ファイルのダウンロードに使用する GDC 外の単一の VM です。この VM にはインターネット アクセスが必要で、インストール プロセスでのみ使用されます。
接続されたノードには、次の容量と構成が必要です。
接続されたノードを作成するには、 VM インスタンスを作成して起動するの手順に沿って操作します。VM が作成されたら、Linux VM に接続するの手順に沿って操作します。VM に接続します。サポートされているオペレーティング システムの一覧については、 GDC でサポートされているオペレーティング システムをご覧ください。
インストール ファイルをダウンロードする
インストール ファイルをダウンロードするには:
ストレージ バケットを設定する
このステップでは、GDC オペレーターが GDC プロジェクトに Apigee Edge for Private Cloud バックアップ ファイルを保存するストレージ バケットを設定します。
Storage バケットを作成する
GDC プロジェクトにストレージ バケットを作成するには:
バケット アクセスを構成する
ストレージ バケットへのアクセスを構成するには:
リポジトリ ノードを設定する
このステップでは、GDC オペレーターが Apigee Edge for Private Cloud ミラー リポジトリをホストするリポジトリ ノードを設定します。
リポジトリ ノードを作成する
リポジトリ ノードを作成するには:
リポジトリ ノード アクセスを構成する
リポジトリ ノードへのアクセスを構成するには:
インストール ファイルをアップロードする
このステップでは、GDC オペレーターは次のファイルの最新バージョンをリポジトリ ノードにアップロードします。
インストール ファイルをアップロードするには:
ミラー リポジトリを構成する
ミラー リポジトリを構成するには:
Apigee ノードをデプロイする
このステップでは、GDC オペレーターが Apigee API 管理ノードをデプロイします。
Apigee ノードを作成する
Apigee API 管理ノードを作成するには:
Apigee ノード アクセスを構成する
Apigee API 管理ノードへのアクセスを構成します。
コントロール ノードを設定する
この手順では、GDC オペレータが Apigee インストールを管理するコントロール ノードを設定します。
コントロール ノードを作成する
コントロール ノードを作成するには:
コントロール ノードのアクセスを構成する
コントロール ノードのアクセスを構成するには:
Ansible を構成する
このステップでは、GDC オペレーターがコントロール ノードに 環境を設定します。
Ansible 環境を構成するには:
Apigee コンポーネントをインストールする
このステップでは、GDC オペレーターが Ansible を使用して Apigee コンポーネントをインストールします。
Apigee コンポーネントをインストールするには:
Pod とサービスをデプロイする
この手順では、アップローダ、リバース プロキシ、ロードバランサ、ロギングの Pod とサービスをデプロイします。
Pod と Service をデプロイするには:
アップローダーと Fluent Bit フォワーダーの IP を更新する
この手順では、バックアップ スクリプトと Apigee 設定スクリプトでアップローダーと Fluent Bit フォワーダーの IP を更新します。
起動スクリプトを更新するには、Apigee ノードを再起動する必要があります。ノードを再起動するには:
Apigee 組織をオンボーディングする
この手順では、node1 で設定スクリプトを実行して、GDC オペレーターが Apigee 組織をオンボーディングします。
Apigee 組織をオンボーディングするには:
HTTP 接続をテストする
このステップでは、Management API と API プロキシの HTTP 接続をテストします。
HTTP 接続をテストするには:
Management API をテストする
Management API をテストするには、エンドポイントに HTTP リクエストを送信します。
curl -u "opdk@apigee.com:Apigee123!" "http://APIGEE_ELB_EXTERNAL_IP:8080/v1/o/ORG_NAME/e/ENV_NAME/provisioning/axstatus"
ここで
API プロキシをテストする
API プロキシをテストするには:
TLS を構成して HTTPS をテストする
このステップでは、GDC オペレーターが API プロキシ、Edge UI、Management API の Transport Layer Security(TLS)を構成します。
API プロキシの TLS を構成する
Edge UI の TLS を構成する
Edge UI 用に TLS を構成するには:
Management API の TLS を構成する
Management API の TLS を構成する手順は次のとおりです。
次のように、KEY_PASS_PHRASE
の値をキーストアのパスワードに置き換えます。
conf_webserver_ssl.enabled=true # Leave conf_webserver_http.turn.off set to false # because many Edge internal calls use HTTP. conf_webserver_http.turn.off=false conf_webserver_ssl.port=8443 conf_webserver_keystore.path=/opt/apigee/customer/application/keystore.jks # Enter the obfuscated keystore password below. conf_webserver_keystore.password=KEY_PASS_PHRASE