# Developer for EKS GitOps & Blueprint ### EKS blueprint: https://catalog.us-east-1.prod.workshops.aws/workshops/67bc4d75-6f22-4480-9fb1-30161069e6ff/ko-KR/eks/argocd git : https://github.com/sykang808/my-eks-blueprints.git ```bash= cd ~/environment git clone https://github.com/sykang808/my-eks-blueprints.git cd my-eks-blueprints npm i cdk deploy cluster-stack ``` ### 필요한 툴 설치 ```bash= wget https://gist.githubusercontent.com/didhd/66ddcc71610f98a2b159b5afab650e88/raw/4d7bbb1cc0c5c13f961afe087d1f5ab6ee04e4fa/cloud9-prereq.sh sh cloud9-prereq.sh ``` ### ArgoCD CLI 설치 ```bash= sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo chmod +x /usr/local/bin/argocd ``` ### ArgoCD 로그인 및 클러스터 등록 ArgoCD 서버를 Load Balancer를 이용하여 외부에 노출합니다. ```bash= ## argoCD expose kubectl patch svc blueprints-addon-argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}' ``` 아래 입력을 통해 argocli로 ArgoCD 서버에 로그인합니다. ```bash= ## server env export ARGOCD_SERVER=`kubectl get svc blueprints-addon-argocd-server -n argocd -o json | jq --raw-output '.status.loadBalancer.ingress[0].hostname'` ## password env export ARGO_PWD=`kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d` ## argocd cli login argocd login $ARGOCD_SERVER --username admin --password $ARGO_PWD --insecure ``` 생성한 클러스터를 argocd에 등록합니다. ```bash= ## argocd cluster add CONTEXT_NAME=`kubectl config view -o jsonpath='{.current-context}'` argocd cluster add $CONTEXT_NAME ``` ## CI/CD : github action + eks EKS web application : https://catalog.us-east-1.prod.workshops.aws/workshops/9c0aa9ab-90a9-44a6-abe1-8dff360ae428/ko-KR/110-cicd/100-cicd AWS Code* : https://catalog.us-east-1.prod.workshops.aws/workshops/cbcd960c-a07b-40c2-a01d-1d2e7a52b945/ko-KR ```bash= cd ~/environment/my-eks-blueprints cdk init app --language typescript export ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account) cdk bootstrap --trust=$ACCOUNT_ID \ --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess \ aws://$ACCOUNT_ID/ap-northeast-2 aws://$ACCOUNT_ID/us-west-2 ``` ```typescript= #!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import ClusterConstruct from '../lib/my-eks-blueprints-stack'; const app = new cdk.App(); const account = process.env.CDK_DEFAULT_ACCOUNT!; const region = process.env.CDK_DEFAULT_REGION; const env = { account, region } new ClusterConstruct(app, 'cluster', { env }); ``` ```typescript= // lib/pipeline.ts import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as blueprints from '@aws-quickstart/eks-blueprints'; export 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.VpcCniAddOn(), new blueprints.CoreDnsAddOn(), new blueprints.KubeProxyAddOn(), // Self-managed Add-ons new blueprints.addons.AwsForFluentBitAddOn(), new blueprints.addons.AwsLoadBalancerControllerAddOn(), new blueprints.addons.ClusterAutoScalerAddOn(), new blueprints.addons.EfsCsiDriverAddOn(), new blueprints.addons.MetricsServerAddOn() ) .teams(); blueprints.CodePipelineStack.builder() .name("eks-blueprints-workshop-pipeline") .owner("sykang808") .repository({ repoUrl: 'my-eks-blueprints', credentialsSecretName: 'github-token', targetRevision: 'main' }).wave({ id: "envs", stages: [ { id: "dev", stackBuilder: blueprint.clone('us-west-2')}, ] }) .build(scope, id+'-stack', { env:{ account:props?.env?.account, region:props?.env?.region}}); } } ``` ## AWS Observability https://catalog.workshops.aws/observability/ko-KR https://catalog.workshops.aws/observability/ko-KR/rum https://catalog.workshops.aws/observability/ko-KR/containerinsights/eks https://catalog.workshops.aws/observability/ko-KR/amp https://catalog.workshops.aws/observability/ko-KR/amg ### 참고자료 AWS CI/CD workshop : https://catalog.us-east-1.prod.workshops.aws/workshops/cbcd960c-a07b-40c2-a01d-1d2e7a52b945/ko-KR survay : https://forms.gle/PTNV8eKcbYyC5qcu8