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

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

현재와 비교 View Version History

« 이전 버전 3 다음 »


1. Infrastructure as Code (IaC)

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

1.1 Ansible 기능

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

(1) 프로비저닝(Provisioning)

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

(2) 구성 관리(Configuration Management)

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

(3) 배포(Deployment)

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

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

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

Ubuntu Repo 이슈

apt-get clean
rm -rf /var/lib/apt/lists/*
apt-get update -o Acquire::CompressionTypes::Order::=gz

python 설치

root@cp-k8s:~/ansible# apt install -y python3.10 python3.10-venv
root@cp-k8s:~/ansible# python3.10 -m venv /opt/python3.10-venv
root@cp-k8s:~/ansible# source /opt/python3.10-venv/bin/activate
(python3.10-venv) root@cp-k8s:/opt# pip install ansible

1.2 파일 생성 예제

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

#cat /etc/hosts
192.168.2.10 cp-k8s
192.168.2.101 w1-k8s
192.168.2.102 w2-k8s
192.168.2.103 w3-k8s

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)

#cat ~/hosts
[all]
cp-k8s ansible_host=192.168.2.10    
w1-k8s ansible_host=192.168.2.101   
w2-k8s ansible_host=192.168.2.102  
w3-k8s ansible_host=192.168.2.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) 실행

apt install ansible 
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 /opt/kubespray-2.25-venv/bin/activate
pip install -U pip


2.2 Kubespray 구성

  • kubespray 소스 다운로드

    git clone https://github.com/kubernetes-sigs/kubespray.git -b release-2.25
    cd ~/kubespray
    pip install -r requirements.txt
  • 디렉토리 이동

    cd ~/kubespray
  • inventory

    cp -R ~/kubespray/inventory/sample ~/kubespray/inventory/k8s
    cd ~/kubespray/inventory/k8s
    
    vi inventory.ini 
    [all]
    cp-k8s ansible_host=192.168.2.10
    w1-k8s ansible_host=192.168.2.101
    w2-k8s ansible_host=192.168.2.102
    w2-k8s ansible_host=192.168.2.103
    
    [kube_control_plane]
    cp-k8s
    
    [etcd]
    cp-k8s
    
    [kube_node]
    w1-k8s
    w2-k8s
    w3-k8s
    
    [calico_rr]
    
    [k8s_cluster:children]
    kube_control_plane
    kube_node
    calico_rr


2.3 Kuberntes 배포

  • ssh 접속 확인

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

    ansible-playbook -i ~/kubespray/inventory/k8s/inventory.ini ~/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/

  • 레이블 없음