일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 오퍼레이터
- Kopf
- nginx ingress
- CI/CD
- MLflow
- serving
- seldon core
- operator
- gitops
- kubernetes operator
- Kubeflow
- Kubernetes 인증
- blue/green
- keda
- tekton
- opentelemetry
- mlops
- Continuous Deployment
- Model Serving
- Litmus
- Argo
- gitea
- CANARY
- knative
- argo rollout
- argocd
- 카오스 엔지니어링
- Kubernetes
- opensearch
- Pulumi
- Today
- Total
Kubernetes 이야기
KubeVela 본문
KubeVela는 최신 소프트웨어 제공 및 관리 컨트롤 플레인으로 목표는 오늘날의 하이브리드, 다중 클라우드 환경에서 애플리케이션을 보다 쉽고 빠르고 안정적으로 배포하고 운영하는 것이다.
주요기능
- 코드로 배포
배포 계획을 yaml로 선언 하고, CI/CD 또는 GitOps 시스템에서 자동으로 실행하며, CUE로 워크플로 단계를 확장할 수 있다.
- 기본 제공 보안, 규정 준수 및 관찰 가능성 구성 요소
기본 제공되는 광범위한 LDAP 통합 중에서 선택하고, 향상된 다중 클러스터 권한 부여 및 인증을 사용하고 , 세분화된 RBAC 모듈을 선택 및 적용하고, 자체 공급망 요구 사항에 따라 사용자 정의할 수 있다.
- 다중 클라우드/하이브리드 환경 앱 딜리버리를 최우선으로
자동화된 클라우드 환경 프로비저닝과 함께 테스트/스테이징/프로덕션 환경 전반에 걸친 점진적 롤아웃, 자동 카나리아, 블루-그린 및 지속적인 검증, 클러스터 및 클라우드 전반에 걸친 풍부한 배치 전략과 같은 다중 클러스터/하이브리드 클라우드 시나리오를 기본적으로 지원한다.
아키텍처
KubeVela의 전체 아키텍처는 다음과 같다.
설치
Kubevela는 Kubernetes 설치 모드와 독립형 모드로 설치가 가능하다. 독립형 모드는 K3S를 활용하여 Kubernetes를 자동으로 관리한다.
이번에는 독립형 모드로 설치해 보자.
다운로드
# curl -fsSl https://static.kubevela.net/script/install-velad.sh | bash
VelaD installed into /usr/local/bin/velad successfully.
Core Version: v1.7.0
VelaD Version: v1.7.0
For more information on how to started, please visit:
https://kubevela.io
설치
velad install
[설치 확인]
export KUBECONFIG=$(velad kubeconfig --host)
vela comp
* 실행결과
# vela comp
NAME DEFINITION DESCRIPTION
raw autodetects.core.oam.dev Raw allow users to specify raw K8s object in properties.
This definition is DEPRECATED, please use 'k8s-objects'
instead.
ref-objects autodetects.core.oam.dev Ref-objects allow users to specify ref objects to use.
Notice that this component type have special handle logic.
k8s-objects autodetects.core.oam.dev K8s-objects allow users to specify raw K8s objects in
properties
worker deployments.apps Describes long-running, scalable, containerized services
that running at backend. They do NOT have network endpoint
to receive external network traffic.
webservice deployments.apps Describes long-running, scalable, containerized services
that have a stable network endpoint to receive external
network traffic from customers.
cron-task cronjobs.batch Describes cron jobs that run code or a script to completion.
daemon daemonsets.apps Describes daemonset services in Kubernetes.
task jobs.batch Describes jobs that run code or a script to completion.
[root@p-thlee-worker1 ~]#
VelaUX 설치
VelaUX는 KubeVela용 대시보드이다.
vela addon enable ~/.vela/addons/velaux serviceType=NodePort
대시보드는 30000 Port 접속가능하다. (초기 ID/Password : admin / VelaUX12345 )
어플리케이션 배포
Kubevela에서는 Application 이라는 CR을 이용하여 앱을 배포한다. Application에는 배포할 앱의 정보를 기술하는 Component, 배포 정책을 기술하는 Policy, 배포 절차를 기술하는 Workflow 단계가 있다.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: first-vela-app
spec:
components:
- name: express-server
type: webservice
properties:
image: nginx
ports:
- port: 80
expose: true
traits:
- type: scaler
properties:
replicas: 1
policies:
- name: target-default
type: topology
properties:
# The cluster with name local is installed the KubeVela.
clusters: ["local"]
namespace: "default"
- name: target-dev
type: topology
properties:
clusters: ["dev-cluster"]
# This namespace must be created before deploying.
namespace: "demo"
- name: deploy-ha
type: override
properties:
components:
- type: webservice
traits:
- type: scaler
properties:
replicas: 2
workflow:
steps:
- name: deploy2default
type: deploy
properties:
policies: ["target-default"]
- name: manual-approval
type: suspend
- name: deploy2dev
type: deploy
properties:
policies: ["target-dev", "deploy-ha"]
위의 yaml은 workflow에 따라 Local에 nginx image를 배포하고 승인을 거친 후 dev cluster에 배포 한 다음, replicas를 2로 변경하는 예제이다.
먼저 dev cluster를 한 개 등록해 보자.
생성이 완료되면 다음과 같이 local과 dev-cluster가 조회된다.
이제 앱을 배포해 보자.
# vela up -f first-app.yaml
Applying an application in vela K8s object format...
I0126 21:50:45.471646 627203 apply.go:121] "creating object" name="first-vela-app" resource="core.oam.dev/v1beta1, Kind=Application"
✅ App has been deployed 🚀🚀🚀
Port forward: vela port-forward first-vela-app
SSH: vela exec first-vela-app
Logging: vela logs first-vela-app
App status: vela status first-vela-app
Endpoint: vela status first-vela-app --endpoint
Application /first-vela-app applied.
[상태 조회]
# vela status first-vela-app
About:
Name: first-vela-app
Namespace: default
Created at: 2023-01-26 21:50:45 +0900 KST
Status: workflowSuspending
Workflow:
mode: StepByStep-DAG
finished: false
Suspend: true
Terminated: false
Steps
- id: k6vbh9thrs
name: deploy2default
type: deploy
phase: succeeded
- id: jtptv97nzt
name: manual-approval
type: suspend
phase: running
Services:
- Name: express-server
Cluster: local Namespace: default
Type: webservice
Healthy Ready:1/1
Traits:
✅ scaler
어플리케이션 상태는 "workflowSuspending" 이다. 워크플로가 처음 두 단계를 완료하고 지정된 단계에 따라 수동 승인을 기다리고 있음을 의미한다.
[워크플로 승인]
# vela workflow resume first-vela-app
Successfully resume workflow: first-vela-app
UI에서 배포된 내역을 보면 다음과 같이 조회된다.
배포할때 마다 변경된 정보를 비교할 수 있고, Rollback도 바로 가능하다.
배포된 Container들의 로그도 한곳에서 조회가 가능하다.
Kubevela를 사용하면 정말 손쉽게 멀티클러스터에 배포를 할 수 있다. 또한 Yaml 이 아닌 UI에서 Workflow 및 파이프라인을 손쉽게 작성할 수 있다.
Helm Chart를 손쉽게 멀티클러스터에 배포할 수 있는 기능도 존재한다.
Definition 에는 배포에 필요한 요소들을 사전에 정의할 수 있다.
또한 UI를 사용자가 정의한 대로 표현할 수 있는 UI Schema 기능을 제공한다.
참고
'Kubernetes > 일반' 카테고리의 다른 글
OAuth2 Proxy와 Keycloak 연동 (0) | 2023.02.11 |
---|---|
Chaos Mesh 에서 Physical Machines 카오스 엔지니어링 (0) | 2023.02.08 |
Impersonation (Kubernetes Authentication) (0) | 2023.01.26 |
GitOps의 장단점 (0) | 2023.01.10 |
Ingress vs Service Mesh (0) | 2022.12.28 |