[k8s] Rancher hands-on session

Seunghyun Moon·2023년 5월 2일
0

Kubernetes

목록 보기
2/3

rancher hands-on 에서 실습으로 나온 시나리오 내용을 정리합니다.

준비물: 쿠버네티스 클러스터 두개(하나는 랜처용, 하나는 워크로드용)

아래와 같은 실습을 진행합니다.

- 랜처 설치
- 워커 클러스터 등록
- 쿠버네티스 클러스터의 워크로드 라이프사이클 관리
  - kubectl 통한 클러스터 접근,
  - 모니터링,
  - app/service/ingress deploy,
  - 관리 프로젝트 생성,
  - helm 차트 repo등록,
  - helm 차트 통한 app deploy,
  - pv용 nfs서버 배포

Hands-on session

클러스터 정보

랜처 클러스터

워커 클러스터


실습

Introduction

Rancher Rodeo에 오신 것을 환영합니다.

이 시나리오에서는 Rancher를 싱글노드에 설치하고 Rancher가 프로비저닝한 클러스터에 여러 워크로드를 배포하는 과정을 살펴보겠습니다.

오늘은 오른쪽 패널의 탭에 있는 'cluster01'과 'rancher01'이라는 두 개의 가상 머신을 사용할 예정입니다. rancher01은 Kubernetes 클러스터와 Rancher를 실행하고 cluster01은 Kubernetes 클러스터와 해당 사용자 워크로드를 실행합니다.

여기에는 두 개의 개별 Kubernetes 클러스터가 있습니다. Rancher Kubernetes Cluster는 Rancher 실행 전용이고 Workload Cluster는 Rancher에서 관리하고 별도의 가상 머신에서 실행됩니다.

중요 사항: HobbyFarm은 노트북이 절전 모드로 전환되거나 HobbyFarm 페이지를 벗어나면 10분 이내에 프로비저닝된 리소스를 해제합니다. 예를 들어 점심 시간에는 이 작업을 수행하지 않도록 하십시오. 그렇지 않으면 시나리오를 다시 시작해야 합니다.

HobbyFarm에 내장된 일시 중지/재개 기능이 있어 랩톱을 일시적으로 절전 모드로 전환해야 하는 경우 시나리오를 일시 중지할 수 있습니다. 시나리오를 일시 중지해도 이 Rodeo 세션 이후로 리소스 종료가 연장되지는 않습니다.

Create a Kubernetes cluster for Rancher

Rancher용 Kubernetes 클러스터 생성

Rancher는 CNCF(Cloud Native Computing Foundation)의 표준 준수 인증을 받은 모든 Kubernetes 클러스터 및 배포에서 실행할 수 있습니다.

RKE2 Kubernetes 클러스터 사용을 권장합니다. RKE2는 CNCF 인증 Kubernetes 배포판으로 보안에 중점을 두고 쉽고 빠르게 설치 및 업그레이드할 수 있습니다. 데이터 센터, 클라우드 및 에지 장치에서 실행할 수 있습니다. 단일 노드뿐만 아니라 대규모의 고가용성 설정에서도 훌륭하게 작동합니다.

이 로데오에서는 'Rancher01' VM에 Rancher를 설치하기 위해 단일 노드 Kubernetes 클러스터를 만들고 싶습니다. 이는 기본 RKE2 설치 스크립트를 사용하여 수행할 수 있습니다.

sudo bash -c 'curl -sfL https://get.rke2.io | \
  INSTALL_RKE2_CHANNEL="v1.24" \
  sh -'
 Click to run on Rancher01

RKE2에 대한 구성 생성

sudo mkdir -p /etc/rancher/rke2
sudo bash -c 'echo "write-kubeconfig-mode: \"0644\"" > /etc/rancher/rke2/config.yaml'
sudo cat /etc/rancher/rke2/config.yaml
 Click to run on Rancher01

그런 다음 RKE2 시스템 서비스를 활성화하고 Cluster 시작:

sudo systemctl enable rke2-server.service
sudo systemctl start rke2-server.service
 Click to run on Rancher01

다음을 사용하여 로그를 확인

sudo journalctl -u rke2-server -f
 Click to run on Rancher01

고가용성 Rancher 설치를 위한 고가용성 다중 노드 Kubernetes 클러스터를 만드는 것은 훨씬 더 복잡하지 않습니다. 여러 노드에서 몇 가지 추가 옵션을 사용하여 동일한 설치 스크립트를 실행할 수 있습니다. [RKE2 문서]에서 이에 대한 자세한 정보를 찾을 수 있습니다.(https://docs.rke2.io/)

Testing your cluster

RKE2는 이제 새로운 Kubernetes 클러스터를 생성했습니다. API와 상호 작용하기 위해 Kubernetes CLI kubectl을 사용할 수 있습니다.

Kubernetes CLI kubectl 설치:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
 Click to run on Rancher01

또한 kubectl이 Kubernetes 클러스터에 연결할 수 있는지 확인해야 합니다. 이를 위해 kubectl은 KUBECONFIG 환경 변수 또는 사용자 홈 디렉토리의 ~/.kube/config 파일에서 찾는 표준 Kubeconfig 파일을 사용합니다.

RKE2는 클러스터의 Kubeconfig를 /etc/rancher/rke2/rke2.yaml에 기록합니다.

/etc/rancher/rke2/rke2.yaml 파일을 ~/.kube/config 파일로 soft symlink를 생성함으로 kubectl 명령어가 cluster와 통신할수 있게 할수 있습니다.

mkdir -p ~/.kube
ln -s /etc/rancher/rke2/rke2.yaml ~/.kube/config
 Click to run on Rancher01

클러스터와 제대로 상호 작용할 수 있는지 테스트하기 위해 두 가지 명령을 실행할 수 있습니다.

Cluster를 구성하는 노드와 노드의 상태를 확인할 수 있습니다.

kubectl get nodes
 Click to run on Rancher01

클러스터에는 하나의 노드가 있어야 하며 상태는 "Ready"여야 합니다.

cluter의 모든 namespace에 있는 모든 Pod들을 리스트화 할 수 있습니다.

kubectl get pods --all-namespaces
 Click to run on Rancher01

모든 Pod들은 "Running"상태여야 합니다.

Install Helm

새로운 Kubernetes 클러스터에 Rancher를 설치하는 것은 Helm을 사용하여 쉽게 완료할 수 있습니다.

Helm은 Kubernetes용으로 매우 인기 있는 패키지 관리자입니다. Rancher를 Kubernetes 클러스터에 배포할 때 Rancher의 설치 도구로 사용됩니다. Helm을 사용하려면 Helm CLI를 다운로드해야 합니다.

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 \
  | bash
 Click to run on Rancher01

Helm을 성공적으로 설치한 후 Rancher를 설치할 준비가 되었는지 확인하기 위해 Helm의 설치를 확인해야 합니다.

helm version --client
 Click to run on Rancher01

Helm은 이전 단계의 kubectl과 동일한 kubeconfig를 사용합니다.

클러스터에 이미 설치된 Helm 차트를 나열하여 이것이 작동하는지 확인할 수 있습니다.

helm ls --all-namespaces

Install cert-manager

cert-manager는 다양한 발급 소스의 TLS 인증서 관리 및 발급을 자동화하는 Kubernetes 추가 기능입니다.

다음 단계에서는 Rancher의 TLS 인증서를 관리하는 데 사용할 cert-manager를 설치합니다.

먼저 Jetstack용 helm 저장소를 추가합니다.

helm repo add jetstack https://charts.jetstack.io
 Click to run on Rancher01

추가된 Helm repo를 확인합니다.

helm repo list
 Click to run on Rancher01

cert-manager version 1.7.1를 설치합니다.

helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --version v1.7.1 \
  --set installCRDs=true \
  --create-namespace
 Click to run on Rancher01

helm 차트가 설치되면 cert-manager 및 cert-manager-webhook의 롤아웃 상태를 모니터링할 수 있습니다.

cert-manager모니터링

kubectl -n cert-manager rollout status deploy/cert-manager
 Click to run on Rancher01

아래와 같은 결과값을 확인 하실수 있습니다.

`Waiting for deployment "cert-manager" rollout to finish: 0 of 1 updated replicas are available...`

`deployment "cert-manager" successfully rolled out`
cert-manager-webhook모니터링

kubectl -n cert-manager rollout status deploy/cert-manager-webhook
 Click to run on Rancher01

아래와 같은 결과값을 확인 하실수 있습니다.

`Waiting for deployment "cert-manager-webhook" rollout to finish: 0 of 1 updated replicas are available...`

`deployment "cert-manager-webhook" successfully rolled out`

Install Rancher

 이제 HA 모드의 Rancher를 Rancher01 Kubernetes 클러스터에 설치합니다. 다음 명령은 rancher-latest를 helm 저장소로 추가합니다.

helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
 Click to run on Rancher01

마지막으로 helm install 명령을 사용하여 Rancher를 설치할 수 있습니다.

helm install rancher rancher-latest/rancher \
  --namespace cattle-system \
  --set hostname=rancher.3.250.49.24.sslip.io \
  --set replicas=1 \
  --version 2.7.0 \
  --set bootstrapPassword=susekorea \
  --create-namespace

Verify Rancher is Ready to Access


Rancher에 액세스하기 전에 Rancher에 대한 연결이 중단되지 않도록 cert-manager가 dynamiclistener-ca를 사용하여 인증서에 서명했는지 확인해야 합니다.

다음 bash 스크립트는 우리가 찾고 있는 인증서를 확인할 것입니다.

while true; do curl -kv https://rancher.3.250.49.24.sslip.io 2>&1 | grep -q "dynamiclistener-ca"; if [ $? != 0 ]; then echo "Rancher isn't ready yet"; sleep 5; continue; fi; break; done; echo "Rancher is Ready";

Accessing Rancher

참고: Rancher는 아직 시작 중일 수 있으므로 아래 링크에서 즉시 사용 가능하지 않을 수 있습니다. Rancher를 사용할 수 있을 때까지 계속 새로고침하세요.

Rancher Server 접속 https://rancher.3.250.49.24.sslip.io
이 Rodeo의 경우 Rancher는 브라우저에서 자동으로 신뢰하지 않는 CA의 자체 서명 인증서와 함께 설치됩니다. 이 때문에 브라우저에 인증서 경고가 표시됩니다. 이 경고는 안전하게 건너뛸 수 있습니다. 일부 Chromium 기반 브라우저에는 건너뛰기 버튼이 표시되지 않을 수 있습니다. 이 경우 오류 페이지의 아무 곳이나 클릭하고 "this is unsafe"(따옴표 제외)를 입력하십시오. 이렇게 하면 브라우저가 경고를 무시하고 인증서를 수락합니다.
프롬프트가 표시되면 UI의 지침에 따라 기본 admin 사용자의 비밀번호를 생성하거나 rancher 배포시 설정한 susekorea를 입력하여 로그인할 수 있습니다.
이용약관 동의에 대한 체크
메시지가 표시되면 Rancher 서버 URL은 서버에 액세스하는 데 사용한 호스트 이름인 rancher.3.250.49.24.sslip.io여야 합니다.
'Local' 클러스터가 포함된 Rancher UI가 표시됩니다. 'Local' 클러스터는 Rancher 자체가 실행되는 클러스터이며 데모 워크로드를 배포하는 데 사용하면 안 됩니다.

UI의 왼쪽 상단 모서리에서 글로벌 탐색 메뉴를 여는 "버거 메뉴" 버튼을 찾을 수 있습니다. 여기에서 전역 응용 프로그램 및 설정에 액세스할 수 있습니다.

모든 Rancher 관리 클러스터를 탐색할 수 있는 빠른 링크와 Rancher 홈 페이지로 돌아가는 방법이 있습니다.

Creating a Kubernetes Lab Cluster within Rancher

이 단계에서는 Rancher 내에서 Kubernetes Lab 환경을 생성합니다. 일반적으로 프로덕션의 경우 여러 노드가 있는 Kubernetes 클러스터를 만듭니다. 그러나 이 실습 환경에서는 클러스터에 대해 하나의 가상 머신만 사용합니다.

Rancher 홈페이지로 돌아가기
사용 가능한 Clusters 목록 상단에서 Create를 클릭합니다.
우리는 RKE2 클러스터를 사용할 것이므로 토글을 RKE2/K3s로 전환해야 합니다.
Rancher가 지원하는 Kubernetes 클러스터의 여러 유형에 유의하십시오. 이 실습에서는 Custom cluster on existing nodes를 사용하지만 Rancher에는 클러스터 배포를 위한 다양한 방안들을 제공하고 있습니다.
Use existing nodes and create a cluster using RKE2 섹션에서 Custom 클러스터 상자를 클릭합니다.
Cluster Name 상자에 이름을 입력합니다.
Kubernetes 버전을 v1.24.x 버전으로 설정합니다.
다른 모든 설정은 기본값으로 유지할 수 있습니다.
하단의 Create를 클릭합니다.
클러스터가 생성되면 Registration 탭에서 Kubernetes 클러스터에 새 노드를 추가하는 데 사용할 수 있는 설치 명령을 검색할 수 있습니다.
etcd, Control Plane 및 Worker 체크박스가 모두 선택되어 있는지 확인합니다.
확인란의 오른쪽 하단에 있는 Show Advanced를 클릭합니다.
Node Public IP(34.250.40.208) 및 Node Private IP(172.31.34.132)를 입력합니다.
중요: 이 단계에서 Cluster01 시스템의 올바른 외부 및 내부 주소를 사용하고 올바른 시스템에서 실행하는 것이 매우 중요합니다. 이렇게 하지 않으면 이후 단계가 실패하게 됩니다.
등록 명령 아래의 insecure: Select this to skip the TLS verification if your server has a self-signed certificates 체크박스를 선택합니다.
등록 명령을 클릭하여 클립보드에 복사합니다.
이제 cluster 배포 시나리오 단계를 진행합니다.

Start the Rancher Kubernetes Cluster Bootstrapping Process

중요 사항: 오른쪽 창에서 HobbyFarm의 'Cluster01' 탭을 선택했는지 확인하십시오.

'Rancher01'에서 이 명령을 실행하면 시나리오 세션에 문제가 발생합니다.

복사한 docker 명령어를 Cluster01 Node 에서 실행합니다.
Machines, Conditions 및 Related Resources 탭에서 프로비저닝 프로세스를 따를 수 있습니다.
클러스터 목록 및 클러스터 세부 정보 페이지의 클러스터 상태가 Active으로 변경됩니다.
클러스터가 Active으로 전환되면 홈 페이지의 클러스터 목록에서 Explore 버튼을 클릭하거나 전역 메뉴에서 클러스터를 선택하여 탐색을 시작할 수 있습니다.

Interacting with the Kubernetes Cluster

이 단계에서는 Kubernetes 클러스터와의 연동 동작을 보여줍니다.

새로 'active' 클러스터를 클릭합니다.
클러스터 용량을 보여주는 다이어그램 다이얼과 클러스터의 최근 이벤트를 보여주는 상자를 확인하십시오.
클러스터 탐색기의 오른쪽 상단 모서리에 있는 Kubectl Shell 버튼(프롬프트 아이콘이 있는 버튼)클릭 또는 단축키 실행하여 kubectl get pods --all-namespaces를 입력하여 결과를 확인 합니다. Rancher WEB UI 통해 cli 기반의 kubectl을 사용할 수 있습니다.
또한 옆에 있는 'Download Kubeconfig File' 버튼을 확인하세요. 그러면 로컬 데스크톱이나 배포 파이프라인 내에서 사용할 수 있는 Kubeconfig 파일이 생성됩니다.
왼쪽 메뉴에서 모든 Kubernetes 리소스, Rancher Application Marketplace 및 추가적인 클러스터 도구에 액세스할 수 있습니다.

Enable Rancher Monitoring

Rancher Monitoring 기능을 배포하려면:

왼쪽 메뉴에서 Apps 아래 Charts로 이동합니다.
Charts 내에서 Monitoring 차트를 찾아 클릭합니다.
모니터링 앱 세부 정보 페이지에서 오른쪽 상단의 Install 버튼을 클릭합니다.
설치 마법사로 이동합니다. 첫 번째 Metadata 단계에서 모든 것을 기본값으로 두고 Next를 클릭할 수 있습니다.
install:Step 2 단계에서 왼쪽의 Prometheus 섹션을 선택합니다. Resource Limits 항목중 Requested CPU를 750m에서 250m으로 변경, Requested Memory를 750Mi에서 250Mi로 변경합니다. 이는 저희 실습 LAB의 가상 머신에 사용 가능한 CPU와 메모리가 제한되어 있기 때문에 필요합니다.
페이지 하단의 "Install"를 클릭하고 helm 설치 작업이 완료될 때까지 기다립니다.
Monitoring이 설치되면 "Installed Apps"에서 해당 응용 프로그램을 클릭하여 배포된 다양한 리소스를 볼 수 있습니다.

Working with Rancher Monitoring

Rancher Monitoring이 배포되면 다양한 구성 요소를 보고 상호 작용할 수 있습니다.

클러스터 탐색기의 왼쪽 메뉴에서 "Monitoring"을 선택합니다.
모니터링 대시보드 페이지에서 "Grafana" 링크를 클릭합니다. 클릭하면 설치된 Grafana 서버로 프록시됩니다.
Grafana를 열면 기본적으로 설정된 다양한 대시보드 및 시각화를 자유롭게 탐색할 수 있습니다. 또한 클러스터 페이지와 개별 워크로드 페이지에 새로운 메트릭 및 경고 섹션이 표시됩니다.

Create a Deployment And Service

이 단계에서는 임의의 워크로드에 대한 Kubernetes 배포 및 Kubernetes 서비스를 생성합니다. 이 실습의 목적을 위해 컨테이너 이미지 'rancher/hello-world:latest'를 사용하지만 테스트용으로 컨테이너 이미지가 있는 경우 자체 컨테이너 이미지를 사용할 수 있습니다.

Pod에 컨테이너를 deployment할 때 오류 또는 기타 중단이 발생하더라도 컨테이너가 계속 실행되어 서비스 중단이 없도록 하고 싶을 것입니다. Pod는 본질적으로 종료시키더라도 deployment 정책으로 인해 pod는 재배포되어 다시 동작하게 됩니다.

pod의 deployment가 실행되면 먼저 pod의 복제본 세트를 설정하여 차례로 pod 개체를 생성한 다음 하나 이상의 pod의 실패에 대비하여 해당 pod를 계속 감독되도록 합니다.

왼쪽 메뉴의 Workloads 섹션에서 Deployments로 이동하고 오른쪽 상단의 Create를 누르고 다음 기준을 입력합니다.
Name - helloworld
Replicas - 2
Container Image - rancher/hello-world:latest
Ports에서 Add Port를 클릭합니다.
Service Type에서 'Node Port' 서비스 생성을 선택합니다.
Private Container Port에 80을 입력합니다.
** 참고: ** 컨테이너 배포를 위한 다른 기능에 유의하십시오. 우리는 이 로데오에서 이것들을 다루지 않을 것이지만 여기에는 많은 기능이 있습니다.
아래로 스크롤하여 Create를 클릭합니다.
새로운 helloworld 배포가 표시되어야 합니다. 클릭하면 2개의 Pod가 배포되는 것을 볼 수 있습니다.
여기에서 Pod를 클릭하여 Pod의 이벤트를 볼 수 있습니다. pod의 three-dots 메뉴에서 pod의 로그에 액세스하거나 파드에 대한 대화형 셸을 시작할 수도 있습니다.
Service Discovery > Services 아래의 왼쪽 메뉴에서 모든 worker 노드의 상위 포트에서 hello world 애플리케이션을 공개적으로 노출하는 새로운 노드 포트 서비스를 찾을 수 있습니다. 연결된 포트를 클릭하여 직접 액세스할 수 있습니다.

Create a Kubernetes Ingress

이 단계에서는 이전 단계에서 방금 배포한 워크로드에 액세스하기 위해 Layer 7 Ingress를 생성합니다. 이 예에서는 워크로드에 대한 DNS 호스트 이름을 제공하는 방법으로 sslip.io를 사용합니다. Rancher는 해당 워크로드 IP를 자동으로 생성합니다.

Service Discovery 아래의 왼쪽 메뉴에서 Ingresses로 이동하고 *Create를 클릭합니다.
다음 기준을 입력합니다.
Name - helloworld
Request Host - helloworld.34.250.40.208.sslip.io
Path Prefix - /
Targt Service - 드롭다운에서 helloworld-nodeport 서비스를 선택합니다.
Port - 드롭다운에서 포트 80을 선택합니다.
Create를 클릭하고 helloworld.34.250.40.208.sslip.io 호스트 이름이 등록될 때까지 기다리면 몇 분 안에 규칙이 Active가 되는 것을 볼 수 있습니다.
호스트 이름을 클릭하고 워크로드를 찾습니다.
** 참고: ** 워크로드가 안정화되는 동안 일시적인 404/502/503 오류를 수신할 수 있습니다. 이는 워크로드에 대한 적절한 준비 상태가 안되었기 때문입니다.

Creating Projects in your Kubernetes Cluster


프로젝트는 하나 이상의 Kubernetes 네임스페이스 그룹입니다. 이 단계에서는 예제 프로젝트를 만들고 이를 사용하여 상태 비저장 WordPress를 배포합니다.

왼쪽 메뉴에서 Cluster > Projects/Namespaces로 이동합니다.
우측 상단 Create Project 클릭
프로젝트에 stateless-wordpress와 같은 이름을 지정합니다.
이 프로젝트에 대한 구성원 추가, 리소스 할당량 및 포드 보안 정책 설정 기능에 유의하십시오.
다음으로 stateless-wordpress 프로젝트에 새 네임스페이스를 만듭니다. 모든 Projects/Namespaces 목록에서 'stateless-wordpress' 프로젝트까지 아래로 스크롤하고 Create Namespace 버튼을 클릭합니다.
Name stateless-wordpress를 입력하고 Create를 클릭합니다.

Add a new chart repository


전체 Wordpress를 클러스터에 설치하는 가장 쉬운 방법은 내장된 Apps Marketplace를 사용하는 것입니다. Rancher 및 파트너 외에도 이미 사용 가능한 앱을 제공했습니다. 다른 Helm 저장소를 추가하고 Rancher UI를 통해 거기에 Helm 차트를 설치하도록 허용할 수 있습니다.

왼쪽 메뉴에서 Apps & Marketplace > Repositories로 이동합니다.
오른쪽 상단의 create를 클릭합니다.
다음 세부 정보를 입력합니다.
Name - rodeo
Target - http(s) URL이어야 합니다.
Index URL - https://rancher.github.io/rodeo
Create를 클릭합니다.
저장소가 동기화되면 Apps & Marketplace > Charts로 이동합니다. 이제 설치할 수 있는 몇 가지 새로운 앱이 표시됩니다.

Deploy a Wordpress as a Stateless Application

이 단계에서는 Kubernetes 클러스터에서 stateless application Wordpress를 배포합니다.

Apps & Marketplace > Charts에서 Wordpress 앱을 선택하고 오른쪽 version에서 11.0.20을 선택 & Install을 클릭합니다.
설치 마법사의 1단계에서 stateless-wordpress 네임스페이스를 선택하고 설치 이름을 wordpress로 지정합니다.
설치 마법사의 2단계에서 다음을 설정합니다.
Wordpress setting > Wordpress password - 비밀번호는 각자 선택
Services and Load Balancing > Hostname - wordpress.34.250.40.208.sslip.io
하단으로 스크롤하여 Install를 클릭합니다.
설치가 완료되면 Service Discovery > Ingresses로 이동합니다. 거기에서 새로운 Ingress를 볼 수 있습니다. URL을 클릭하면 Wordpress에 액세스할 수 있습니다.
참고: wordpress 앱이 실행되는 동안 404, 502 또는 503 오류가 발생할 수 있습니다. Wordpress를 사용할 수 있을 때까지 가끔씩 페이지를 새로고침하세요.
설정된 관리자 자격 증명을 사용하여 Wordpress에 로그인하고 새 블로그 게시물을 만듭니다. Admin Page에 접속은 wordpress.34.250.40.208.sslip.io/wp-login.php
을 통해 할 수 있습니다.
wordpress-mariadb-0 포드를 삭제하거나 wordpress-mariadb StatefulSet에서 Redeploy를 클릭하면 게시물이 손실됩니다. 이는 Wordpress MariaDB StatefulSet 아래에 영구 저장소가 없기 때문입니다.

Deploy the nfs-server-provisioner into your Kubernetes Cluster

Kubernetes 클러스터에서는 애플리케이션이 사용할 수 있는 영구 저장소를 갖는 것이 바람직할 수 있습니다. 이 클러스터에서 활성화된 Kubernetes 클라우드 공급자가 없기 때문에 영구 스토리지를 위해 Kubernetes 클러스터 내부에서 NFS 서버를 실행할 nfs-server-provisioner를 배포할 것입니다. 이것은 production-ready 솔루션은 아니지만 persistent storage 구성을 설명하는 데 도움이 됩니다.

Apps & Marketplace > Charts에서 nfs-server-provisioner 앱을 설치합니다.
설치 마법사의 1단계에서 kube-system 네임스페이스를 선택하고 설치 이름을 nfs-server-provisioner로 지정합니다.
설치 마법사의 2단계에서 모든 설정을 기본값으로 유지할 수 있습니다.
하단으로 스크롤하여 Install를 클릭합니다.
앱이 설치되면 Storage > Storage Classes로 이동합니다.
nfs 스토리지 클래스와 그 옆에 Default 스토리지 클래스임을 나타내는 체크 표시를 확인합니다.

Creating a Stateful Wordpress Project in your Kubernetes Cluster

NFS 스토리지 공급자를 사용하는 클러스터에 두 번째 Wordpress 인스턴스를 배포해 보겠습니다. 먼저 새 프로젝트를 만듭니다.

왼쪽 메뉴에서 Cluster > Projects/Namespaces로 이동합니다.
우측 상단 Create Project 클릭
프로젝트에 stateful-wordpress와 같은 이름을 지정합니다.
이 프로젝트에 대한 멤버 추가, 리소스 할당량 및 포드 보안 정책 설정 기능에 유의하십시오.
다음으로 stateful-wordpress 프로젝트에 새 네임스페이스를 만듭니다. 모든 Projects/Namespaces 목록에서 stateful-wordpress 프로젝트까지 아래로 스크롤하고 Create Namespace 버튼을 클릭합니다.
Name stateful-wordpress를 입력하고 Create를 클릭합니다.

Deploy Wordpress as a Stateful Application

이 단계에서는 Kubernetes 클러스터에 상태 stateful application로써 Wordpress를 배포합니다.

이 wordpress 배포는 이전 단계에서 배포한 mariadb 데이터를 지속적으로 저장하는 데 활용합니다.

Apps & Marketplace > Charts에서 Wordpress 앱을 설치합니다.
설치 마법사의 1단계에서 stateful-wordpress 네임스페이스를 선택하고 설치 이름을 wordpress로 지정합니다.
설치 마법사의 2단계에서 다음을 설정합니다.
Wordpress setting > Wordpress password - 비밀번호는 각자 선택
Wordpress setting 활성화 > Wordpress Persistent Volume Enabled
Database setting 활성화 > MariaDB Persistent Volume Enabled
Services and Load Balancing > Hostname - stateful-wordpress.34.250.40.208.sslip.io
하단으로 스크롤하여 Install를 클릭합니다.
설치가 완료되면 Service Discovery > Ingresses로 이동합니다. 거기에서 새로운 Ingress를 볼 수 있습니다. URL을 클릭하면 Wordpress에 액세스할 수 있습니다.
참고: wordpress 앱이 실행되는 동안 404, 502 또는 503 오류가 발생할 수 있습니다. Wordpress를 사용할 수 있을 때까지 가끔씩 페이지를 새로고침하세요.
이제 Storage > Persistent Volumes에서 두 개의 영구 볼륨을 사용할 수 있습니다.
설정된 관리자 자격 증명을 사용하여 Wordpress에 로그인하고 새 블로그 게시물을 만듭니다. Admin Page에 접속은 stateful-wordpress.34.250.40.208.sslip.io/wp-login.php 을 통해 할 수 있습니다.
wordpress-mariadb 창을 삭제하거나 지금 Redeploy를 클릭하면 게시물이 손실되지 않습니다.

profile
I live fullest

0개의 댓글