0804-EKS

hyejin·2022년 8월 4일
0

인스턴스 생성

  • 이름 : eks-server
  • 키 : docker-key
  • VPC : MY-VPC
  • 서브넷 : MY-PUBLIC-SUBNET-2C
  • 보안그룹 : dev-sg
  • 사용자데이터
#!/bin/bash
timedatectl set-timezone Asia/Seoul
hostnamectl set-hostname eks-server
cd /tmp
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin
echo "source <(kubectl completion bash)" >> /home/ec2-user/.bashrc
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
mv /tmp/eksctl /usr/local/bin

eks.hyejin36.shop (mobaxterm)

[ec2-user@eks-server ~]$ sudo passwd ec2-user
sudo vi /etc/ssh/sshd_config
PasswordAuthentication yes
#PermitEmptyPasswords no
#PasswordAuthentication no

IAM

역할만들기

  • AWS 서비스
  • EC2 선택
  • 역할 선택
    AmazonEC2FullAccess
    IAMFullAccess
    AdministratorAccess
    AWSCloudFormationFullAccess
  • 역할이름 : eksctl_role
  • IAM 역할 업데이트
    -> ec2 > eks-server > 작업 > 보안 > IAM 역할 수정 > eksctl_role 선택

eks.hyejin36.shop (mobaxterm)

  • 클러스터 생성
$ eksctl create cluster --name EKS-CLUSTER --region ap-northeast-2 --version 1.21 --vpc-public-subnets subnet-025da2c754a6dd49b,subnet-082ffc23ff8d32265 --without-nodegroup

  • 노드그룹 생성
$ eksctl create nodegroup \
    --cluster EKS-CLUSTER \
    --region ap-northeast-2 \
    --name NODEGROUP \
    --node-type t2.micro \
    --nodes 4 \
    --nodes-min 4 \
    --nodes-max 8 \
    --ssh-access \
    --ssh-public-key docker-key

ansible.hyejin36.shop (mobaxterm)

sudo vi /etc/ansible/hosts
[eks-server]
10.24.47.232

$ ssh-copy-id 10.24.47.232 //eks ip에 키 전달
  • playbook
vi build.yaml
- hosts: ansible-server

  tasks:
  - name: remove docker image
    command: docker rmi -f halilinux/mytomcat:latest

  - name: create docker image
    command: docker build -t halilinux/mytomcat:latest .
    args:
      chdir: /opt/docker

  - name: push docker image
    command: docker push halilinux/mytomcat:latest
   
 $ ansible-playbook build.yml

  • 배포와 서비스를 동시에
vi kube-deploy-svc.yml
- hosts: eks-server

  tasks:
  - name: remove deploy
    command: kubectl delete -f /home/ec2-user/test/deployment.yaml
    ignore_errors: yes
  - name: kube deploy
    command: kubectl apply -f /home/ec2-user/test/deployment.yaml
  - name: kube svc
    command: kubectl apply -f /home/ec2-user/test/svc.yaml
  - name: update
    command: kubectl rollout restart deployment/web-site-deployment

eks.hyejin36.shop (mobaxterm)

vi deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-site-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web-site-deployment
  template:
    metadata:
      name: web-site-deployment
      labels:
        app: web-site-deployment
    spec:
      containers:
      - name: web-site-deployment-container
        image: seozzang3/mytomcat:latest
        imagePullPolicy: Always
        
vi svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: loadbalancer-service-deployment
spec:
  type: LoadBalancer
  selector:
    app: web-site-deployment
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

[ec2-user@eks-server test]$ kubectl apply -f deployment.yaml
deployment.apps/web-site-deployment created
[ec2-user@eks-server test]$ kubectl apply -f svc.yaml
service/loadbalancer-service-deployment created

-> 실행하면

ansible.hyejin36.shop (mobaxterm)

[ec2-user@ansible-server docker]$ ansible-playbook kube-deploy-svc.yml

-> 빨간 부분은 지울게 없어서 오류난 것
-> ignore를 안썼으면 저기서 멈춤

  • 확인

jenkins

새 아이템 생성

  • name : Deploy_On_Kube_Ansible
  • Copy from : Copy_Artifacts_onto_Ansible
  • exec command
cd /opt/docker;
ansible-playbook build.yml;
sleep 10;
ansible-playbook kube-deploy-svc.yml

-> 지금 빌드

AWS

레코드 생성

  • www.hyejin36.shop
  • 별칭 : 로드밸런서

Git Bash(코드 수정)

$ rm -rf hello_world/
$ git clone https://github.com/seo369/hello-world.git
$ cd hello_world/
$ cd webapp/src/main/webapp/
$ vi index.jsp -> 내용 변경
$ git add .
$ git commit -, "test1"
$ git push origin master

-> 빌드유발 해놔서 자동 빌드

-> 변경내용 잘 나옴

delete

$ kubectl delete all -all
$ eksctl delete cluster EKS-CLUSTER --region ap-northeast-2

엔드포인트

s3 버킷 생성

  • 이름 : s3.hyejin36.shop
  • 정적 웹호스팅 활성화
    • index.jsp

route53 생성

  • s3.hyejin36.shop
  • 별칭 : s3 웹 사이트 엔드포인트에 대한 별칭

0개의 댓글

관련 채용 정보