این راهنما نحوه نصب و راهاندازی Apigee Edge برای Private Cloud و پروکسیهای API را در یک محیط Google Distributed Cloud (GDC) که به صورت Air-gapped ارائه میشود، شرح میدهد. سرویسهای Air-gapped GDC ، از جمله Apigee Edge برای Private Cloud، برای مدیریت زیرساختها و خدمات نیازی به اتصال به Google Cloud ندارند. میتوانید از یک صفحه کنترل محلی که در محل شما میزبانی میشود برای همه عملیات استفاده کنید. برای مرور کلی در مورد GDC Air-gapped، به Overview مراجعه کنید.
این راهنما برای اپراتورهای Apigee در نظر گرفته شده است که با Apigee Edge برای Private Cloud آشنا هستند و درک اولیهای از Kubernetes دارند.
مرور کلی مراحل مورد نیاز
برای نصب و راهاندازی Apigee Edge برای ابر خصوصی در یک محیط GDC ایزوله، اپراتور باید مراحل زیر را انجام دهد:
- فایلهای نصب Apigee Edge برای فضای ابری خصوصی را دریافت کنید.
- یک سطل ذخیرهسازی راهاندازی کنید.
- یک گره مخزن راهاندازی کنید.
- گرههای Apigee را مستقر کنید.
- یک گره کنترل ایجاد کنید.
- پیکربندی Ansible
- اجزای Apigee را نصب کنید.
- پادها و سرویسها را مستقر کنید.
- آیپیهای آپلودکننده و Fluent Bit forwarder را بهروزرسانی کنید.
- سوار بر یک سازمان Apigee.
- اتصال HTTP را آزمایش کنید.
- TLS را پیکربندی کنید و HTTPS را آزمایش کنید.
قبل از اینکه شروع کنی
قبل از شروع فرآیند نصب، حتماً مراحل زیر را انجام دهید:
- اگر از قبل یک پروژه GDC ندارید، برای استفاده در نصب، آن را ایجاد کنید. برای اطلاعات بیشتر، به بخش «ایجاد یک پروژه» مراجعه کنید.
- رابط خط فرمان
gdcloudرا روی یک ایستگاه کاری متصل به GDC یا در محیط استقرار مداوم سازمان خود دانلود، نصب و پیکربندی کنید . - اعتبارنامههای مورد نیاز برای استفاده از رابط خط فرمان
gdcloudو رابط برنامهنویسی کاربردیkubectlرا دریافت کنید. برای دسترسی به مراحل مورد نیاز، به بخش «احراز هویت حساب کاربری» مراجعه کنید. - نام کاربری و رمز عبور Apigee را که از مدیر حساب Apigee خود دریافت کردهاید، تأیید کنید.
- نام خوشه مدیریت GKE و نام خوشه کاربر GKE خود را تأیید کنید.
الزامات ظرفیت
نصب Apigee Edge برای ابر خصوصی در GDC به چندین ماشین مجازی (VM) با تخصیص منابع خاص نیاز دارد. این ماشینهای مجازی بر اساس منابع محاسباتی (RAM، هستههای vCPU) و فضای ذخیرهسازی دیسک محلی خود، هزینههایی را متحمل میشوند. برای اطلاعات بیشتر، به قیمتگذاری مراجعه کنید.
جدول زیر منابع مورد نیاز برای هر ماشین مجازی را نشان میدهد:
| نوع ماشین مجازی | رم | هستههای vCPU | ذخیرهسازی دیسک |
|---|---|---|---|
| گره مخزن | ۸ گیگابایت | ۲ هسته vCPU | ۶۴ گیگابایت |
| گره کنترل | ۸ گیگابایت | ۲ هسته vCPU | ۶۴ گیگابایت |
| گرههای مدیریت API آپیجی ۱، ۲ و ۳ | رم ۱۶ گیگابایتی | ۸ هسته vCPU | ۶۷۰ گیگابایت |
| گرههای مدیریت API آپیجی ۴ و ۵ | رم ۱۶ گیگابایتی | ۸ هسته vCPU | ۵۰۰ گیگابایت - ۱ ترابایت |
نقشها و مجوزها
برای استقرار Apigee Edge برای ابر خصوصی در یک محیط GDC ایزوله، نقشها و مجوزهای زیر مورد نیاز است:
- مدیر پلتفرم (PA): نقش
IAM Adminرا تعیین کنید. - اپراتور برنامه (AO): نقشهای زیر را اختصاص دهید:
-
Harbor Instance Admin: دسترسی کامل برای مدیریت نمونههای هاربر در یک پروژه دارد. -
LoggingTarget Creator: منابع سفارشیLoggingTargetرا در فضای نام پروژه ایجاد میکند. -
LoggingTarget Editor: منابع سفارشیLoggingTargetدر فضای نام پروژه ویرایش میکند. -
Project Bucket Admin: سطلهای ذخیرهسازی و اشیاء درون سطلها را مدیریت میکند. -
Project Grafana Viewer: به نمونه نظارت در فضای نام پروژه دسترسی پیدا میکند. -
Project NetworkPolicy Admin: سیاستهای شبکه پروژه را در فضای نام پروژه مدیریت میکند. -
Project VirtualMachine Admin: ماشینهای مجازی موجود در فضای نام پروژه را مدیریت میکند. -
Secret Admin: اسرار Kubernetes را در پروژهها مدیریت میکند. -
Service Configuration Admin: دسترسی خواندن و نوشتن به پیکربندیهای سرویس در فضای نام پروژه را دارد. -
Namespace Admin: تمام منابع درون فضاهای نام پروژه را مدیریت میکند.
-
- Apigee در GDC air-gapped سرورهای DNS ندارد و از DNS resolution محلی به عنوان یک راه حل موقت استفاده میکند. اگر Apigee در GDC air-gapped در محیطی با سرورهای DNS خارجی مستقر شده است، مراحل پیکربندی DNS محلی را با پیکربندی ورودیهای DNS در سرورهای DNS جایگزین کنید.
- Apigee در GDC air-gapped شامل یک سرور SMTP مستقل نیست. شما میتوانید در هر زمانی یک سرور SMTP را پیکربندی کنید تا اعلانهای ایمیل خروجی برای ایجاد حساب کاربری و تنظیم مجدد رمز عبور از سرور مدیریت و رابط کاربری مدیریت فعال شود. APIهای مدیریت برای مدیریت حساب کاربری Apigee در دسترس هستند. برای اطلاعات بیشتر به پیکربندی سرور SMTP Edge مراجعه کنید.
- Apigee روی GDC air-gapped تشخیص و پیشگیری از نفوذ را پیادهسازی نمیکند. یک سیستم پیشگیری از نفوذ (IPS)، مانند Snort ، نصب و پیکربندی کنید تا فعالیتهای مخرب را شناسایی و از آنها جلوگیری کند.
- سیستم عامل: راکی لینوکس ۸
- اندازه دستگاه: ۸ گیگابایت رم؛ ۲ هسته vCPU؛ ۶۴ گیگابایت حافظه دیسک محلی
- اتصال:
- ورودی: TCP 22 (SSH)
- خروجی: اینترنت
- برای اطلاع از آخرین نسخه رسمی منتشر شده که برای GDC پشتیبانی میشود، همانطور که در ستون Edge for Private Cloud ذکر شده است، یادداشتهای انتشار 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 نسخه منتشر شده Apigee Edge برای فضای ابری خصوصی برای استفاده در GDC است که قصد نصب آن را دارید، برای مثال، ۴.۵۳.۰۱ .
- آخرین نسخه Apigee Edge برای Private Cloud را از
/tmp/bootstrap_ VERSION .shbootstrap_ VERSION .sh/ دانلود کنید:curl https://software.apigee.com/bootstrap_VERSION.sh -o /tmp/bootstrap_VERSION.sh
جایی که VERSION آخرین نسخه منتشر شده Apigee Edge برای Private Cloud برای استفاده در GDC است که قصد نصب آن را دارید، مثلاً ۴.۵۳.۰۱ .
- ابزار Edge
apigee-serviceو وابستگیهای آن را نصب کنید:sudo bash /tmp/bootstrap_VERSION.sh apigeeuser=APIGEE_USER apigeepassword=APIGEE_PASSWORD
کجا:
- APIGEE_USER نام کاربری است که برای سازمان Apigee دریافت کردهاید.
- APIGEE_PASSWORD رمز عبوری است که برای سازمان Apigee دریافت کردهاید.
- VERSION نسخه منتشر شده Apigee Edge برای فضای ابری خصوصی است که برای استفاده در GDC که قصد نصب آن را دارید، منتشر شده است.
- اسکریپت راهاندازی را روی گره متصل اجرا کنید:
chmod a+x connected-node_setup.sh \ ./connected-node_setup.sh
در این مرحله، اسکریپت فایلهای مورد نیاز را در مکانهای زیر تولید میکند (برای مثال، برای نسخه ۴.۵۳.۰۱ ):
-
/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-filescd apigee-filesfor 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_CERTgdcloud clusters get-credentials ORG_ADMIN_CLUSTERکجا:
- WEB_TLS_CERT مسیر گواهی TLS وب است.
- ORG_ADMIN_CLUSTER نام کلاستر GKE مربوط به ادمینهای سازمانی است.
- متغیرهای محیطی پروژه و سطل را تنظیم کنید:
export PROJECT=PROJECTexport 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
- شناسه و کلید دسترسی را از راز دریافت کنید:
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 کاربر استفاده شود:
- با استفاده از کلاستر 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 شناسه کلید دسترسی است که در مرحله قبل به دست آمده است.
- 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 مربوط به ادمین سازمان است.
- ایجاد یک محیط مجازی پایتون:
python3 -m venv venv / source venv/bin/activate
- اسکریپت deploy را برای ایجاد گره مخزن اجرا کنید:
python apigee/solution_deploy.py gdc-air-gapped
- پیکربندی SSH برای گره مخزن:
export NODE=repokubectl 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را در مخزن node کپی کنید. - در اسکریپت، REPO_USER و REPO_PASSWORD را با نام کاربری و رمز عبور دلخواه برای مخزن mirror جایگزین کنید.
- اسکریپت را اجرا کنید:
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.shcurl http://REPO_USER:REPO_PASSWORD@REPO_INTERNAL_IP:3939/apigee/release/VERSION/repodata/repomd.xmlVERSION با نسخه Apigee Edge for Private Cloud که میخواهید نصب کنید، جایگزین کنید.
-
REPO_INTERNAL_IP،REPO_USER_NAMEوREPO_PASSWORDرا درapigee/helm/scripts/apigee_setup.shبا مقادیر دلخواه جایگزین کنید. - مقادیر را به عنوان متغیرهای محیطی صادر کنید:
export REPO_IP=REPO_INTERNAL_IPexport REPO_USER=REPO_USER_NAMEexport REPO_PASSWORD=REPO_PASSWORD -
apigee_nodeرا درapigee/helm/values-cookie-air-gapped.yamlمطابق شکل فعال کنید:apigee_node: enabled: true
- اسکریپت deploy را برای ایجاد گرههای Apigee اجرا کنید:
source venv/bin/activatepython 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 شما در آن قرار دارد.
- آدرسهای IP خارجی را برای گرههای Apigee دریافت کنید:
for i in 1 2 3 4 5; do kubectl get virtualmachineexternalaccess -n $PROJECT node$i -ojsonpath='{.status.ingressIP}' echo done - آدرسهای IP داخلی را برای گرههای Apigee دریافت کنید:
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 وصل شوید و دستور زیر را اجرا کنید:
-
REPO_INTERNAL_IP،REPO_USER_NAMEوREPO_PASSWORDرا درapigee/helm/scripts/control_setup.shبا مقادیر دلخواه جایگزین کنید. - همانطور که نشان داده شده است،
control_nodeدرapigee/helm/values-cookie-air-gapped.yamlفعال کنید:control_node: enabled: true
- اسکریپت deploy را برای ایجاد گره کنترل اجرا کنید:
source venv/bin/activatepython 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/admincp -r /tmp/apigee-repos .cd apigee-repos/ansible-opdk-accelerator/setup - مخازن گیت ریموت را با فایل محلی جایگزین کنید:
sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.ymlsed -i 's/\.git$//g' requirements.yml - Install Ansible requirements:
sudo chown -R admin /home/admin/apigee-reposansible-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
- فایل setup playbook را اجرا کنید:
cd ~/apigee-repos/ansible-opdk-accelerator/setupansible-playbook setup.yml
- فایل
- کلید SSH مربوط به گرههای Apigee را در گره کنترل آپلود کنید:
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 نام فایلی است که کلید خصوصی SSH گره Apigee شما در آن قرار دارد.
- 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/prodvi ~/.ansible/inventory/prod/edge-dc1
- محتوای فایل
- آدرسهای IP داخلی گرههای Apigee را در
edge-dc1بهروزرسانی کنید:apigee_000 ansible_host=APIGEE_NODE1_INTERNAL_IPapigee_001 ansible_host=APIGEE_NODE2_INTERNAL_IPapigee_002 ansible_host=APIGEE_NODE3_INTERNAL_IPapigee_003 ansible_host=APIGEE_NODE4_INTERNAL_IPapigee_004 ansible_host=APIGEE_NODE5_INTERNAL_IPکه در آن مقادیر مربوط به APIGEE_NODE*_INTERNAL_IP ، آدرسهای IP داخلی گرههای Apigee هستند که در مرحله قبل به دست آمدهاند.
- فایل
~/.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 برای Private Cloud است که میخواهید نصب کنید.
- APIGEE_REPO_URL آدرس مخزن Apigee است.
- فایل پیکربندی را به عنوان یک متغیر محیطی صادر کنید:
export ANSIBLE_CONFIG=~/.ansible/multi-planet-configurations/prod.cfg
- مخازن گیت ریموت را با فایلهای محلی جایگزین کنید:
cd ~/apigee-repos/ansible-opdk-accelerator/installations/multi-node/sed -i 's/https:\/\/github.com\/carlosfrias/git+file:\/\/\/home\/admin\/apigee-repos/g' requirements.ymlsed -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.ymlsed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-server-self/tasks/main.ymlsed -i 's/include/include_tasks/g' ~/.ansible/roles/apigee-opdk-setup-silent-installation-config/tasks/main.ymlcat << 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 EOFsed -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، playbook را اجرا کنید:
ansible-playbook install.yml
- لینک تنظیم مجدد رمز عبور کاربر را در رابط کاربری Edge غیرفعال کنید. Apigee در GDC air-gapped شامل سرور SMTP نمیشود. مراحل موجود در غیرفعال کردن لینک تنظیم مجدد رمز عبور در رابط کاربری Edge را دنبال کنید.
- برای ایجاد یک نمونه Harbor در پروژه GDC
dev-apigee، دستورالعملهای موجود در Create Harbor registry instances را دنبال کنید. - برای ایجاد یک پروژه Harbor با نام
apigeeدستورالعملهای موجود در بخش «ایجاد پروژههای Harbor» را دنبال کنید. - برای تنظیم کنترل دسترسی برای پروژه Harbor، دستورالعملهای موجود در بخش پیکربندی کنترل دسترسی را دنبال کنید.
- برای پیکربندی احراز هویت داکر، دستورالعملهای موجود در «ورود به داکر» و «هلم» را دنبال کنید.
- آدرسهای IP را در فایل
apigee/apigee_user_cluster.tomlمطابق زیر بهروزرسانی کنید:mgmt-server-proxy = "APIGEE_NODE1_EXTERNAL_IP" router-proxy1 = "APIGEE_NODE2_EXTERNAL_IP" router-proxy2 = "APIGEE_NODE3_EXTERNAL_IP"
کجا:
- APIGEE_NODE1_EXTERNAL_IP آدرس IP خارجی گره Apigee1 است که در مرحله قبل به دست آمده است.
- APIGEE_NODE2_EXTERNAL_IP آدرس IP خارجی گره Apigee2 است که در مرحله قبل به دست آمده است.
- APIGEE_NODE3_EXTERNAL_IP آدرس IP خارجی گره Apigee3 است که در مرحله قبل به دست آمده است.
- فایل گواهی SSL (
server.crt) و فایل کلید (server.key) را برای پیکربندی HTTPS در پوشههای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
- مقدار
SSH-PASSWORDرا برای کاربر root در کانتینر آپلودر در فایلapigee/uploader/Dockerfileبهروزرسانی کنید:RUN echo 'root:SSH_PASSWORD' | chpasswd
- اعتبارنامههای مربوط به خوشه کاربر را دریافت کنید:
gdcloud clusters get-credentials USER_CLUSTER
که در آن USER_CLUSTER نام کلاستر GKE کاربر است.
- اسکریپت deploy را برای استقرار podها و سرویسها اجرا کنید:
source venv/bin/activatepython apigee/solution_deploy_user_cluster.py gdc-air-gapped - آدرسهای IP خارجی سرویسها را دریافت کنید:
kubectl get svc -n $PROJECT_ID
-
SSH_PASSWORD،rootوUPLOADER_EXTERNAL_IPرا درapigee/helm/scripts/backup_setup.shبهروزرسانی کنید: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 خارجی سرویس آپلودکننده است که در مرحله قبل به دست آمده است.
-
FLUENTBIT_EXTERNAL_IPدرapigee/helm/scripts/apigee_setup.shبهروزرسانی کنید:export FLUENTBIT_EXTERNAL_IP=FLUENTBIT_EXTERNAL_IP
- ماشینهای مجازی را متوقف کنید:
gdcloud clusters get-credentials ORG_ADMIN_CLUSTERexport PROJECT=dev-apigeefor 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
- ماشینهای مجازی را شروع کنید:
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 آدرس IP داخلی گره Apigee1 است که در مرحله قبل به دست آمده است.
- APIGEE_NODE2_EXTERNAL_IP آدرس IP خارجی گره Apigee2 است که در مرحله قبل به دست آمده است.
- APIGEE_NODE3_EXTERNAL_IP آدرس IP خارجی گره Apigee3 است که در مرحله قبل به دست آمده است.
- اسکریپت را روی node1 اجرا کنید تا سازمان را به سیستم خود اضافه کنید:
chmod a+x apigee_org_setup.sh./apigee_org_setup.sh - آدرس IP خارجی سرویس
apigee-elbرا دریافت کنید:gdcloud clusters get-credentials USER_CLUSTERexport PROJECT=dev-apigeekubectl get svc apigee-elb -n $PROJECTکه در آن USER_CLUSTER نام کلاستر GKE کاربر است.
این سرویس به عنوان نقطه پایانی برای رابط کاربری Edge، رابط برنامهنویسی کاربردی مدیریت (Management API) و پروکسی رابط برنامهنویسی کاربردی (API proxy) عمل میکند.
- APIGEE_ELB_EXTERNAL_IP آدرس IP خارجی سرویس
apigee-elbاست که در مرحله قبل به دست آمده است. - ORG_NAME نام سازمان Apigee است.
- ENV_NAME نام محیط Apigee است.
- وارد رابط کاربری Edge شوید.
- در صفحه API Proxies ، برای ایجاد یک API Proxies جدید، روی Create کلیک کنید.
- در صفحه جزئیات پروکسی ، مقادیر زیر را وارد کنید:
- نوع پروکسی: بدون هدف را انتخاب کنید.
- نام پروکسی:
ok - مسیر پایه:
/ok - هدف:
http:// APIGEE_ELB_EXTERNAL_IP :9001
- برای ایجاد پروکسی API، روی Create کلیک کنید.
- ارسال یک درخواست HTTP به
/ok:curl -i http://APIGEE_ELB_EXTERNAL_IP:9001/ok
- تأیید کنید که پاسخ
200 OKاست. - برای ایجاد یک گواهی خودامضا با مقادیر زیر، مراحل موجود در بخش «ایجاد یک فروشگاه کلید/فروشگاه اعتماد و نام مستعار» را دنبال کنید:
- فروشگاه کلید: myTestKeystore
- نام مستعار کلید: myKeyAlias
- نام رایج: apigeetest.com
- برای ایجاد میزبان مجازی به نام
api.apigeetest.com، یک فراخوانی API انجام دهید: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 آدرس IP خارجی سرویس
apigee-elbاست که در مرحله قبل به دست آمده است. - ORG_NAME نام سازمان Apigee است.
- ENV_NAME نام محیط Apigee است که میزبان مجازی باید در آن ایجاد شود.
- APIGEE_ELB_EXTERNAL_IP آدرس 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 resolution برای نقطه پایانی:
echo 'APIGEE_ELB_EXTERNAL_IP apigeetest.com' | sudo tee -a /etc/hosts
که در آن APIGEE_ELB_EXTERNAL_IP آدرس IP خارجی سرویس
apigee-elbاست که در مرحله قبل به دست آمده است. - در یک مرورگر وب به
https://apigeetest.com/okبروید و تأیید کنید که کار میکند. - یک فایل keystore از فایل گواهی SSL و فایل key ایجاد کنید:
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out keystore.pkcs12keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks - فایل keystore را در پوشه Apigee در node1 قرار دهید:
scp -i SSH_PRIVATE_KEY_FILE keystore.jks admin@APIGEE_NODE1_EXTERNAL_IP:/home/admin/
کجا:
- SSH_PRIVATE_KEY_FILE نام فایلی است که کلید خصوصی SSH گره Apigee شما در آن قرار دارد.
- APIGEE_NODE1_EXTERNAL_IP آدرس IP خارجی گره Apigee1 است که در مرحله قبل به دست آمده است.
- به node1 از طریق SSH متصل شوید و فایل keystore را به پوشه 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 - پیکربندی وضوح DNS برای رابط کاربری Edge:
echo 'APIGEE_ELB_EXTERNAL_IP ui.apigeetest.com' | sudo tee -a /etc/hosts
که در آن APIGEE_ELB_EXTERNAL_IP آدرس IP خارجی سرویس
apigee-elbاست که در مرحله قبل به دست آمده است. - در یک مرورگر وب
https://ui.apigeetest.com:9443دسترسی پیدا کنید و از کارکرد آن اطمینان حاصل کنید. برای جزئیات بیشتر، به راهنما مراجعه کنید. - مالک فایل keystore را پیکربندی کنید (از همان فایلی که در رابط کاربری Edge استفاده میشود استفاده کنید):
sudo chown apigee:apigee /opt/apigee/customer/application/keystore.jks
- فایل ویژگیها را ایجاد کنید:
sudo vi /opt/apigee/customer/application/management-server.properties
- برای اعمال تغییرات، سرور مدیریت را مجدداً راهاندازی کنید:
/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 دسترسی پیدا کنید. نام کاربری و رمز عبور ادمین را وارد کنید تا تأیید شود که اعتبارنامهها به درستی پیکربندی شدهاند.
برای کسب اطلاعات بیشتر در مورد اعطای نقشها و مجوزهای ایزوله شده GDC، به بخش اعطای و لغو دسترسی مراجعه کنید.
محدودیتها
محدودیتهای زیر برای Apigee در GDC air-gapped اعمال میشود:
دریافت فایلهای مورد نیاز
برای دریافت فایلهای نصب، ابتدا باید یک گره متصل راهاندازی کنید و سپس فایلها را دانلود کنید.
یک گره متصل راهاندازی کنید
گره متصل، یک ماشین مجازی واحد خارج از GDC است که شما برای دانلود فایلهای نصب از آن استفاده میکنید. این ماشین مجازی نیاز به دسترسی به اینترنت دارد و فقط برای فرآیند نصب استفاده میشود.
گره متصل به ظرفیت و پیکربندی زیر نیاز دارد:
برای ایجاد گره متصل، دستورالعملهای موجود در بخش «ایجاد» را دنبال کنید و یک نمونه ماشین مجازی را راهاندازی کنید . پس از ایجاد ماشین مجازی، دستورالعملهای موجود در بخش «اتصال به ماشینهای مجازی لینوکس » را برای اتصال به ماشین مجازی دنبال کنید. برای مشاهده لیست سیستم عاملهای پشتیبانی شده، به بخش «سیستم عاملهای پشتیبانی شده توسط GDC» مراجعه کنید.
دانلود فایلهای نصب
برای دانلود فایلهای نصب:
سطل ذخیرهسازی را تنظیم کنید
در این مرحله، اپراتور GDC یک مخزن ذخیرهسازی در پروژه GDC راهاندازی میکند تا فایلهای پشتیبان Apigee Edge برای Private Cloud را در آن ذخیره کند.
یک سطل ذخیرهسازی ایجاد کنید
برای ایجاد یک مخزن ذخیرهسازی در پروژه GDC:
پیکربندی دسترسی به سطل
برای پیکربندی دسترسی به مخزن ذخیرهسازی:
گره مخزن را تنظیم کنید
در این مرحله، اپراتور GDC یک گره مخزن برای میزبانی مخزن آینه Apigee Edge for Private Cloud راهاندازی میکند.
ایجاد یک گره مخزن
برای ایجاد یک گره مخزن:
پیکربندی دسترسی به گره مخزن
برای پیکربندی دسترسی به گره مخزن:
آپلود فایلهای نصب
در این مرحله، اپراتور GDC آخرین نسخه از فایلهای زیر را در گره مخزن آپلود میکند:
برای آپلود فایلهای نصب:
پیکربندی مخزن آینه
برای پیکربندی مخزن آینه:
استقرار گرههای Apigee
در این مرحله، اپراتور GDC گرههای مدیریتی API مربوط به Apigee را مستقر میکند.
ایجاد گرههای Apigee
برای ایجاد گرههای مدیریت API Apigee:
پیکربندی دسترسی به گره Apigee
پیکربندی دسترسی به گرههای مدیریت API Apigee:
گره کنترل را تنظیم کنید
در این مرحله، اپراتور GDC یک گره کنترل برای مدیریت نصبهای Apigee راهاندازی میکند.
ایجاد یک گره کنترل
برای ایجاد یک گره کنترل:
پیکربندی دسترسی به گره کنترل
برای پیکربندی دسترسی به گره کنترل:
پیکربندی Ansible
در این مرحله، اپراتور GDC تنظیمات را انجام میدهد. محیط روی گره کنترل.
برای پیکربندی محیط Ansible:
اجزای Apigee را نصب کنید
در این مرحله، اپراتور GDC اجزای Apigee را با استفاده از Ansible نصب میکند.
برای نصب اجزای Apigee:
استقرار پادها و سرویسها
در این مرحله، آپلودکننده، پروکسی معکوس، متعادلکننده بار و پادها و سرویسهای ثبت وقایع را مستقر خواهید کرد.
برای استقرار پادها و سرویسها:
بهروزرسانی IPهای آپلودکننده و Fluent Bit forwarder
در این مرحله، آیپیهای آپلودکننده و Fluent Bit forwarder را در اسکریپتهای پشتیبانگیری و راهاندازی Apigee بهروزرسانی خواهید کرد.
بهروزرسانی اسکریپت راهاندازی نیاز به راهاندازی مجدد گرههای Apigee دارد. برای راهاندازی مجدد گرهها:
سوار بر سازمان Apigee
در این مرحله، اپراتور GDC با اجرای یک اسکریپت راهاندازی روی node1 ، سازمان Apigee را راهاندازی میکند.
برای پیوستن به سازمان Apigee:
تست اتصال HTTP
در این مرحله، اتصال HTTP را برای Management API و API proxy آزمایش خواهید کرد.
برای آزمایش اتصال HTTP:
API مدیریت را آزمایش کنید
برای آزمایش 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، امنیت لایه انتقال (TLS) را برای پروکسی API، رابط کاربری Edge و API مدیریتی پیکربندی میکند.
پیکربندی TLS برای پروکسی API
پیکربندی TLS برای رابط کاربری Edge
برای پیکربندی TLS برای رابط کاربری Edge:
پیکربندی TLS برای API مدیریت
برای پیکربندی TLS برای API مدیریت:
مقدار KEY_PASS_PHRASE را با رمز عبور keystore جایگزین کنید، همانطور که نشان داده شده است:
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