Kubernetes3_2024_03_06

kubectl

kubectl은 Kubernetes 클러스터를 제어하기 위한 커맨드 라인 인터페이스(CLI) 도구

kubectl을 사용하여 사용자는 클러스터에 있는 리소스를 생성, 조회, 업데이트 및 삭제

 

kubctl download

https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-windows/

 

윈도우에 kubectl 설치 및 설정

시작하기 전에 클러스터의 마이너(minor) 버전 차이 내에 있는 kubectl 버전을 사용해야 한다. 예를 들어, v1.29 클라이언트는 v1.28, v1.29, v1.30의 컨트롤 플레인과 연동될 수 있다. 호환되는 최신 버전

kubernetes.io

 

왼쪽 사이드바 - 원도우에 kubectl 설치 및 설정

 

스크롤 내려서 winget 선택

PowerShell에 winget install -e --id Kubernetes.kubectl 입력 및 Y입력 후 설치

 

버전 확인


=====클러스터 생성=====

kluster_key_create

 

kluster_보안그룹설정

 

클러스터를 만든계정으로만 접속해야한다.

 

aws eks update-kubeconfig --region ap-northeast-2 --name 6team_cluster

 

node가 없어서 AWS에서 node를 생성해야한다.


=====노드 생성=====

node_group_create

 

노드 생성 확인


Deployment로 pods 생성

Deployment 파일 생성

메모장으로 nginx-depl.yml 파일 다운로드 경로에 저장(파일확장 : 모든 파일)

 

다운로드 경로로 이동

nginx-depl.yml 적용 및 pod 생성 확인

kubectl apply -f .\nginx-depl.yml

kubectl get pods

 

git repo 생성 및 PC에 git clone

vscode연결 및 파일생성

nginx-depl.yml

nginx-service-nodeport.yml

 

nginx-depl.yml

 

nginx-service-nodeport.yml


service 생성

kubectl apply -f .\nginx-service-nodeport.yml

 

service 생성 확인

kubectl get service

 


보안그룹 인바운드 규칙 추가 및 nignx 접속 테스트

EC2가 잡고 있는 보안그룹 인바운드 규칙 수정

6team 30001 ~ 30004 port추가

 

pod 확인해서 NODE 정보 확인

 

ec2 인스턴스에서 검색

 

EC2퍼블릭 IPv4 DNS주소:30002로 nginx 접속 테스트


로드밸런서 적용 - Http Only

로드밸런서 자동으로 생성되게 만들기

로드밸런서가 생성되면서 대상그룹도 자동으로 지정한다.

nodePort: 30002은 없어도 된다. name이 http이기 때문에 port는 80으로 잡히기 때문

type:로드밸런서 => 1)로드밸런서, 2) 보안그룹 생성

 

기존 service delete

 

service LoadBalancer 적용

 

service 동작 확인 및 port 확인

 

EC2 보안그룹 인바운드 규칙 port 추가

 

로드밸런서 DNS이름 확인

 

로드밸런서 리스너

 

로드밸런서 nginx 접속 테스트 확인(로드밸런서 DNS이름)

 

AWS EKS LoadBalancer architecture


⭐Http, Https 접속 설정

기존 service http only delete

 

로드밸런서 리스너에 정보 넣기

route 53 A코드 인증서 적용

httphttps.yml에 인증서 정보 넣기


⭐오늘 수업의 결론

nginx-depl.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jang-nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: jang-nginx
  template:
    metadata:
      labels:
        app: jang-nginx
    spec:
      containers:
      - name: nginx
        image: nginx // docker hub에 올라가는 이미지 greatjang/ ~ 이미지 경로를 넣어준다.
        ports:
        - containerPort: 80

 

nginx-service-httphttps.yml

apiVersion: v1
kind: Service
metadata:
  name: jang-nginx-service
  annotations:
  service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
  service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <인증서arn>
  service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"

spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: 80

  - name: https
    port: 443
    targetPort: 80

  selector:
    app: jang-nginx

 

실제적으로 필요한 yml 파일은 위 두가지

무조건 httphttps를 사용해서 https 접속을 구현해야한다.

 

https 접속하기 위한 설정 무조건 정리해야함

로드밸런서 리스너에 정보 넣기

route 53 A코드 인증서 적용

httphttps.yml에 인증서 정보 넣기

'Cloud > AWS' 카테고리의 다른 글

Kubernetes5_2024_03_08  (0) 2024.03.11
Kubernetes4_2024_03_07  (0) 2024.03.11
Kubernetes2_2024_03_06  (0) 2024.03.06
Kubernetes1_2024_03_05  (0) 2024.03.05
Docker3_2024_03_05  (0) 2024.03.05