نحوه ایجاد یک خوشه EKS در سراسر مناطق محلی AWS با استفاده از AWS CDK
AWS Local Zones نوع جدیدی از زیرساخت است که به شما امکان میدهد برنامهها را نزدیکتر به کاربران نهایی بسازید و اجرا کنید و تأخیر کم و عملکرد بهبود یافته را ارائه دهید.
آنها به گونه ای طراحی شده اند که همان دسترسی و قابلیت اطمینان بالایی را به عنوان منطقه AWS ارائه دهند، اما با مزایای اضافی اتصالات کم تاخیر برای برنامه هایی که به آن نیاز دارند.
اگر کاربران نهایی در مناطق جغرافیایی خاصی قرار دارند و میخواهید دسترسی کم تاخیر به برنامههایشان را برای آنها فراهم کنید، استفاده از Local Zones میتواند مفید باشد. این امر می تواند به ویژه برای برنامه هایی که نیاز به پردازش داده ها در زمان واقعی دارند یا الزامات عملکرد سختگیرانه دارند مهم باشد.
Local Zones همچنین می تواند هزینه های شبکه را به حداقل برساند که یک مزیت اضافی است. با اجرای برنامهها در یک منطقه محلی نزدیکتر به کاربران نهایی، میتوانید مقدار دادههایی را که باید در فواصل طولانی منتقل شوند، محدود کنید، که هزینههای شبکه را کاهش میدهد.
در این آموزش، نحوه ساخت یک خوشه EKS لبه هیبریدی را خواهیم دید که در سراسر مناطق AWS و مناطق محلی AWS با استفاده از کنسول مدیریت AWS و کیت توسعه ابری AWS (CDK) گسترش می یابد.
قبل از شروع، مهم است که توجه داشته باشید که AWS Local Zones از نظر فیزیکی مکانهایی مجزا هستند که از طریق پیوندهای پرسرعت به منطقه اصلی AWS متصل میشوند. آنها به شما این امکان را می دهند که خدمات خاصی را به مشتریان خود نزدیکتر کنید و تاخیر را کاهش دهید.
برای ایجاد خوشه EKS خود در مناطق محلی، باید:
یک خوشه EKS در منطقه اصلی ایجاد کنید
یک VPC و منابع مرتبط در مناطق محلی ایجاد کنید
VPC های Local Zone را به VPC منطقه اصلی وصل کنید
گره های کارگر را در VPC های منطقه محلی راه اندازی کنید
ما این مراحل را در این راهنما طی خواهیم کرد.
پیش نیازها
قبل از شروع، شما باید موارد زیر را داشته باشید:
یک حساب AWS با مجوز برای ایجاد منابع در طول موج AWS و مناطق محلی AWS.
AWS CDK روی دستگاه محلی شما نصب شده است. اگر آن را نصب نکردهاید، میتوانید دستورالعملهای موجود در اسناد AWS CDK را برای نصب آن دنبال کنید.
AWS CLI روی دستگاه محلی شما نصب شده است. اگر آن را نصب نکردهاید، میتوانید دستورالعملهای موجود در مستندات AWS CLI را برای نصب آن دنبال کنید.
در نهایت بیایید شروع کنیم.
مرحله 1: یک منطقه محلی AWS ایجاد کنید
اولین قدم این است که در منطقه مورد نظر خود در AWS Local Zones شرکت کنید. میتوانید دستورالعملهای موجود در مستندات AWS Local Zones را برای شرکت در این مناطق دنبال کنید.
مرحله 2: یک پروژه CDK ایجاد کنید
برای شروع، باید یک پروژه CDK جدید با استفاده از دستور زیر ایجاد کنیم:
cdk init --language=javascript
این یک دایرکتوری جدید با فایل ها و دایرکتوری های مورد نیاز برای یک پروژه CDK ایجاد می کند.
سپس با استفاده از دستور زیر، وابستگی های مورد نیاز را نصب کنید:
npm install
حالا بیایید یک فایل جدید به نام local-zone-eks.js در دایرکتوری lib ایجاد کنیم و کد زیر را اضافه کنیم:
const cdk = require('aws-cdk-lib'); const ec2 = require('aws-cdk-lib/aws-ec2'); import * as autoscaling from '@aws-cdk/aws-autoscaling'; import * as ecs from '@aws-cdk/aws-eks'; require('dotenv').config(); const config = { env: { account: process.env.AWS_ACCOUNT_NUMBER, region: process.env.AWS_REGION, }, }; class VPCStack extends cdk.Stack { constructor(scope, id, props) { super(scope, id, props); // Create a VPC const vpc = new ec2.Vpc(this, 'VPC', { cidr: '10.0.0.0/16', maxAzs: 2, subnetConfiguration: [ { cidrMask: 24, name: 'Public', subnetType: ec2.SubnetType.PRIVATE, }, { cidrMask: 24, name: 'Private', subnetType: ec2.SubnetType.PRIVATE, }, ], }); } } module.exports = { VPCStack };
این کد یک VPC جدید با بلوک CIDR 10.0.0.0/16 ایجاد می کند که در دو زیرشبکه خصوصی قرار دارد.
سپس، اجازه دهید متغیر محیطی را برای منطقه محلی AWS خود صادر کنیم، که از آن برای ایجاد تنها زیر شبکه عمومی در VPC خود استفاده خواهیم کرد. در این مثال، منطقه محلی لاس وگاس را انتخاب کرده ایم و زیرشبکه را بر اساس آن پیکربندی کرده ایم.
const localZone: string = 'us-west-2-las-1a' // Create Local Zone Public Subnet const LocalZoneSubnet = new ec2.PublicSubnet(this, 'localzone-public-subnet', { availabilityZone: localZone, cidrBlock: '10.0.3.0/26', vpcId: vpc.vpcId, mapPublicIpOnLaunch: true, }); // Add Local Zone Subnet to VPC vpc.publicSubnets.push(LocalZoneSubnet);
مرحله 3: یک آمازون EKS Cluster ایجاد کنید
اکنون که یک VPC داریم، میتوانیم یک سرویس کانتینر الاستیک آمازون برای خوشه Kubernetes (Amazon EKS) ایجاد کنیم.
کد زیر را به فایل local-zone-eks.js اضافه کنید:
const eks = require('aws-cdk-lib/aws-eks'); class EKSStack extends cdk.Stack { constructor(scope, id, props) { super(scope, id, props); // Create the EKS cluster const cluster = new eks.Cluster(this, 'EKSCluster', { vpc: vpc, defaultCapacity: 0, version: '1.21', clusterName: 'local-zone-eks-demo-cluster', }); } } module.exports = { EKSStack };
این کد با استفاده از VPC که قبلا ایجاد کردیم یک خوشه EKS جدید ایجاد می کند. همچنین نسخه Kubernetes مورد استفاده و نام خوشه را مشخص می کند.
مرحله 4: گره های کارگر را ایجاد کنید
در مرحله بعد، ما باید گره های کارگر را ایجاد کنیم تا برنامه های خود را در خوشه EKS اجرا کنیم.
کد زیر را به فایل local-zone-eks.js اضافه کنید:
// Define EKS-optimized image for Launch Template const image = new ecs.EksOptimizedAmi(); // Create Launch Template for Auto Scaling group to reference const lzLaunchTemplate = new ec2.CfnLaunchTemplate( this, 'eks-launch-template', { launchTemplateName: 'lz-launch-template', launchTemplateData: { networkInterfaces: [ { deviceIndex: 0, associatePublicIpAddress: true, deleteOnTermination: true, subnetId: LocalZoneSubnet.subnetId!, }, ], imageId: image.getImage(this).imageId, instanceType: 't3.medium', userData: cdk.Fn.base64( `#!/bin/bash -xe set -o xtrace /etc/eks/bootstrap.sh 'local-zone-eks-demo-cluster'} ) }, } ); // Create Auto Scaling Group const lz_asg = new autoscaling.AutoScalingGroup(this, 'LocalZoneWorkerNodes', { instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MEDIUM), machineImage: new ecs.EksOptimizedAmi(), updateType: autoscaling.UpdateType.REPLACING_UPDATE, desiredCapacity: 1, vpc: vpc, launchTemplate: lzLaunchTemplate });
این کد یک گروه مقیاس خودکار جدید برای مدیریت گره های کارگر ایجاد می کند و گره های کارگر را با استفاده از اسکریپت بوت استرپ نمونه به خوشه EKS اضافه می کند.
مرحله 5: برنامه CDK را مستقر کنید
اکنون که همه کدهای مورد نیاز را داریم، می توانیم با استفاده از دستور زیر آن را مستقر کنیم:
cdk deploy
با راهاندازی و اجرای کلاستر EKS، میتوانید برنامههای کاربردی خود را گسترش دهید. می توانید از مانیفست های Kubernetes یا نمودارهای Helm برای استقرار برنامه های خود در خوشه استفاده کنید.
نتیجه
AWS Local Zones مکانیزمی قوی برای ارائه برنامه های کاربردی با کارایی بالا برای کاربران نهایی، مستقل از موقعیت مکانی آنها ارائه می دهد. آنها همچنین به کاربران نهایی تجربه بهتری می دهند و عملکرد عالی ارائه می دهند.
من همیشه آماده پیشنهادات و بحث در لینکدین هستم. با پیام های مستقیم به من سر بزنید
بیشتر بخوانید
سارا چوی از Wing Venture در مرحله اولیه TechCrunch در سال 2024 به بررسی VCها خواهد پرداخت.
اگر از نوشتن من لذت برده اید و می خواهید انگیزه ام را حفظ کنید، ستاره ها را در GitHub بگذارید و از من برای مهارت های مرتبط در LinkedIn حمایت کنید.
تا مرحله بعدی، ایمن بمانید و به یادگیری ادامه دهید.
ارسال نظر