메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

You are viewing an old version of this content. View the current version.

현재와 비교 View Version History

버전 1 다음 »


1. Infrastructure as Code (IaC)

  • 인프라의 설정, 프로비저닝, 관리 등을 코드로 작성하여 자동화하는 방법론

1.1 Ansible 기능

  • Ansible은 Red Hat에서 개발한 오픈 소스 자동화 도구로, IaC를 실현하는 데 널리 사용

(1) 프로비저닝(Provisioning)

  • Ansible을 사용하여 서버를 생성하고, 네트워크 설정을 구성하며, 클라우드 리소스를 관리할 수 있습니다.

(2) 구성 관리(Configuration Management)

  • 서버에 소프트웨어 패키지를 설치하고, 설정 파일을 배포하며, 서비스 상태를 관리합니다.

(3) 배포(Deployment)

  • 애플리케이션을 배포하고, 업데이트하며, 롤백할 수 있습니다.

(4) 오케스트레이션(Orchestration)

  • 여러 서비스와 애플리케이션 간의 작업 흐름을 관리합니다.

python 설치

root@cp-k8s:~/ansible# python3.10 -m venv /opt/python3.10-venv
root@cp-k8s:~/ansible# source /opt/python3.10-venv/bin/activate

1.2 파일 생성 예제

  • 이해하기 쉽도록 root 패스워드 및 등록을 진행합니다.

cp-k8s에서 ssh-keygen 생성
# ssh-keygen

모든 노드 root 패스워드 설정
root / vagrant

cp-k8s에서 모든 노드의 root로 접근할 수 있도록 등록
# ssh-copy-id root@cp-k8s
# ssh-copy-id root@w1-k8s
# ssh-copy-id root@w2-k8s
# ssh-copy-id root@w3-k8s

(1) 인벤토리 파일 (hosts)

[all]
cp-k8s ansible_host=192.168.1.10    
w1-k8s ansible_host=192.168.1.101   
w2-k8s ansible_host=192.168.1.102  
w3-k8s ansible_host=192.168.1.103  

(2) Playbook (file_management.yaml)

---
- name: Manage files and directories
  hosts: all
  become: yes   #sudo

  tasks:
    - name: Create a directory
      file:
        path: /opt/myapp
        state: directory
        mode: '0755'

    - name: Create a file with specific content
      copy:
        dest: /opt/myapp/config.txt
        content: |
          [settings]
          setting1 = value1
          setting2 = value2

    - name: Ensure a file is absent
      file:
        path: /opt/myapp/old_config.txt
        state: absent

(3) 실행

ansible-playbook -i hosts file_management.yaml

(4) 확인

# ansible -m shell -a "cat /opt/myapp/config.txt" -i hosts all
w3-k8s | CHANGED | rc=0 >>
[settings]
setting1 = value1
setting2 = value2
w2-k8s | CHANGED | rc=0 >>
[settings]
setting1 = value1
setting2 = value2
cp-k8s | CHANGED | rc=0 >>
[settings]
setting1 = value1
setting2 = value2
w1-k8s | CHANGED | rc=0 >>
[settings]
setting1 = value1

2. kubespray (Ansible을 이용한 kubernetes 배포)

  • Kubernetes 클러스터를 설치하고 관리하기 위한 오픈소스 프로젝트

  • Ansible Playbook과 설정 파일을 사용하여 다양한 환경에서 Kubernetes 클러스터를 자동화하고 쉽게 배포

2.1 python 및 가상환경 설치

apt search python3.9
...
apt install -y python3.10 python3.10-venv
python3.10 -m venv /opt/kubespray-2.25-venv

# source kubespray-2.23-venv/bin/activate
pip install -U pip
pip install -r requirements.txt


2.2 Kubespray 구성

  • 디렉토리 생성 및 이동

    mkdir -p /opt/kubespray-2.23-git
    cd /opt/kubespray-2.23-git
  • kubespray 소스 다운로드

    git clone https://github.com/kubernetes-sigs/kubespray.git -b release-2.23
  • 디렉토리 이동

    cd /opt/kubespray-2.23-git/kubespray
  • kubespray를 위한 python3 가상환경 구성

    python3 -m venv /opt/kubespray-2.23-venv
    source /opt/kubespray-2.23-venv/bin/activate
  • pip 패키지 설치

    pip install -U pip
    pip install -r requirements.txt
  • inventory

    cp -R /opt/kubespray-2.23-git/kubespray/inventory/sample /opt/kubespray-2.23-git/kubespray/inventory/k8s
    cd /opt/kubespray-2.23-git/kubespray/inventory/k8s
    
    vi inventory.ini 
    [all]
    k8s-master01 ansible_host=192.168.110.21
    k8s-master02 ansible_host=192.168.110.22
    k8s-master03 ansible_host=192.168.110.23
    k8s-worker01 ansible_host=192.168.110.24
    k8s-worker02 ansible_host=192.168.110.25
    
    [kube_control_plane]
    k8s-master01
    k8s-master02
    k8s-master03
    
    [etcd]
    k8s-master01
    k8s-master02
    k8s-master03
    
    [kube_node]
    k8s-worker01
    k8s-worker02
    
    [calico_rr]
    
    [k8s_cluster:children]
    kube_control_plane
    kube_node
    calico_rr


2.3 Kuberntes 배포

  • ssh 접속 확인

    ansible -i /opt/kubespray-2.23-git/kubespray/inventory/k8s/inventory.ini -m ping all
  • 클러스터 배포

    ansible-playbook -i /opt/kubespray-2.23-git/kubespray/inventory/k8s/inventory.ini /opt/kubespary-2.23-git/kubespray/cluster.yml
  • node 상태 확인

    kubectl get nodes -o wide

 


3. Rancher Desktop

3.1 Rancher Desktop 특징

  • 단순 설치 macOS 및 Windows 사용자는 단순히 해당 설치 프로그램을 다운로드하여 실행할 수 있습니다. 리눅스 사용자는 인기 있는 패키지 관리자를 통해 설치할 수 있습니다. 자동으로 새로운 버전을 다운로드하고 설치하는 자동 업그레이드 기능(옵션).

  • 구성 옵션

    기본 구성과 함께 사용하거나 필요에 맞게 사용자 지정할 수 있습니다.
    컨테이너 엔진, Kubernetes 버전, 응용 프로그램 기능 사용/사용 안 함을 선택할 수 있습니다. 네트워킹 설정을 구성하고 컨테이너 저장소, 레지스트리 등에 대한 액세스를 제어하는 옵션입니다.

  • 직관적 그래픽 사용자 인터페이스

    사용자 친화적인 GUI 기능, 대시보드
    이미지, 컨테이너, 애플리케이션 구성 등을 관리하기 위해 GUI 기능을 통해 잘 생각했습니다.로컬 쿠버네티스 리소스를 탐색하고 관리하는 데 도움이 되는 풀 블로운 클러스터 대시보드입니다.

  • 컨테이너 공구 체인

    빌드, 풀, 푸시, 스캔 이미지. 컨테이너 실행.
    컨테이너 기반 개발 워크플로우에서 일상적인 작업을 지원하는 CLI 및 GUI 기반 기능. 클라우드 네이티브 에코시스템의 기타 도구인 인기 있는 IDE와 잘 통합됩니다.

  • 원활한 Kubernetes 업그레이드

    Kubernetes 업그레이드가 워크로드에 미치는 영향을 쉽게 테스트합니다.
    Kubernetes 업그레이드를 워크로드에 원활하게 적용할 수 있는 옵션을 제공하여 운영 환경에 영향을 미치기 전에 문제를 탐지할 수 있습니다.

  • 번들 유틸리티

    인기 있는 도구를 즉시 사용할 수 있습니다.
    도커, nerdctl, kubectl, hell 등과 같은 인기 있는 오픈 소스 CLI 도구의 최신 버전이 포함되어 있어 이러한 도구를 별도로 얻고 관리할 필요가 없습니다.

3.2 Rancher Desktop 설치

image-20240516-105705.png

참고) https://rancherdesktop.io/

  • 레이블 없음