[aws] EKS Hands On — Blueprints

Hayley Shim
techblog-hayleyshim
2 min readOct 5, 2022

--

안녕하세요. AWS Blueprints Hands On 내용을 공유하기 위해 작성한 글입니다.

참고 : https://catalog.workshops.aws/eks-blueprints-for-cdk/en-US

1. Create multiple EKS clusters using Pipelines

2. Implement Blueprints add-ons

3. Deploy your teams’ workloads

GitOps를 쓰는 이유

  • 개발자에게 익숙한 절차
  • 빠른 복구와 자동화
  • 여러 배포 모드 작동 가능
  • 확장성 및 안정성
  • 실행 중인 환경에서 애플리케이션 분리됨

ArgoCD

Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. The Argo CD add-on provisions ArgoCD into an EKS cluster, and can optionally bootstrap your workloads from public and private Git repositories.

Configure and Deploy EKS Clusters

argo addon 참고 : https://aws-quickstart.github.io/cdk-eks-blueprints/getting-started/

// lib/pipeline.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as blueprints from '@aws-quickstart/eks-blueprints';
import * as cpactions from 'aws-cdk-lib/aws-codepipeline-actions';
import { TeamPlatform, TeamApplication } from '../teams'; // HERE WE IMPORT TEAMSexport default class PipelineConstruct extends Construct {
constructor(scope: Construct, id: string, props?: cdk.StackProps){
super(scope, id)
const account = props?.env?.account!;
const region = props?.env?.region!;

const blueprint = blueprints.EksBlueprint.builder()
.account(account)
.region(region)
.addOns(
new blueprints.ClusterAutoScalerAddOn,
new blueprints.ArgoCDAddOn
)
.teams(new TeamPlatform(account), new TeamApplication('burnham',account)); // HERE WE ADD THE TEAMS

blueprints.CodePipelineStack.builder()
.name("eks-blueprints-workshop-pipeline")
.codeBuildPolicies(blueprints.DEFAULT_BUILD_POLICIES)
.repository({
codeCommitRepoName: 'my-eks-blueprints-pipeline',
targetRevision: 'main',
codeCommitOptions:{
trigger: cpactions.CodeCommitTrigger.EVENTS
}
})
// WE ADD THE STAGES IN WAVE FROM THE PREVIOUS CODE
.wave({
id: "envs",
stages: [
{ id: "dev", stackBuilder: blueprint.clone('us-west-2')},
{ id: "test", stackBuilder: blueprint.clone('us-east-2')},
{ id: "prod", stackBuilder: blueprint.clone('us-east-1')}
]
})
.build(scope, id+'-stack', props);
}
}

//new blueprints.ArgoCDAddOn 추가

// lib/pipeline.ts
.addOns(
new blueprints.ClusterAutoScalerAddOn,
new blueprints.ArgoCDAddOn
)

kubectl update

aws eks update-kubeconfig — region us-west-2 — name dev-blueprint — role-arn <arn:aws:iam::XXXXXXXXXXX>

Manage workloads on ArgoCD

Expose argocd-server

kubectl patch svc blueprints-addon-argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'export ARGOCD_SERVER=`kubectl get svc blueprints-addon-argocd-server -n argocd -o json | jq --raw-output '.status.loadBalancer.ingress[0].hostname'`kubectl get svc -n argocd

EKS Blueprints 오픈소스

--

--