Skip to content

Commit 134bfa3

Browse files
committed
Merge remote-tracking branch 'origin/release-v2' into main
2 parents b5b8b18 + b9dffbe commit 134bfa3

File tree

11 files changed

+108
-79
lines changed

11 files changed

+108
-79
lines changed

.github/workflows/publish.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ on:
33
push:
44
branches:
55
- main
6+
- release**
67

78
jobs:
89
build:

docs/assets/taco_icon.png

58.2 KB
Loading

docs/concepts/deployment.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
# Deployment
22
## Overview
3-
Decapod은 Argo Workflow와 Argo CD를 통해 Application Group을 배포한다.
4-
여러 Application(혹은 Helm Chart)를 배포할 때, 각 Application은 동시에 설치할 수도 있지만 의존성의 문제로 순차적으로 배포해야할 때가 있다.
3+
Decapod는 Argo Workflow와 Argo CD를 통해 Application Group을 배포한다.
4+
여러 Application(혹은 Helm Chart)를 배포할 때, 각 Application들은 동시에 설치될 수도 있지만 의존성의 문제로 순차적으로 배포해야할 때가 있다.
55
Argo Workflow는 이러한 sequential deployment를 가능하게 한다.
66

7-
또 Argo CD를 통해 Application를 생성하고 배포하여 decapod-manifests의 파일이 변경될 때 automated sync 기능을 통해 자동으로 최신 버전을 유지할 수 있다.
7+
또 Argo CD를 통해 Application들이 배포되므로, 향후 decapod-manifests 파일이 변경될 때 automated sync 기능을 통해 자동으로 변경 사항이 적용되어 항상 최신 버전을 유지할 수 있다.
88

99
![decapod-flow-details](../assets/decapod-flow-details.svg)
1010

1111
## decapod-flow
1212
_[github link](https://github.com/openinfradev/decapod-flow)_
13-
Argo Workflow를 통해 LMA, Service Mesh같은 Application Group을 배포한다.
14-
이 때 필요한 Argo Workflow의 WorkflowTemplate과 그 외의 설정을 `decapod-flow`에 정의하였다.
13+
Argo Workflow를 통해 LMA, Service Mesh 등의 Application Group을 배포한다.
14+
이 때 필요한 Argo Workflow Template과 그 외의 설정을 `decapod-flow`에 정의하였다.
1515

1616
### Workflow Templates
1717
| Name | Description | Link |
1818
|------|-------------|------|
1919
|prepare-argocd|Argo CD 인증 정보를 저장하고, project들을 만든다.|[prepare-argocd-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/argo-cd/prepare-argocd-wftpl.yaml)|
2020
|create-application|decapod-manifests repository에 저장된 YAML 파일을 통해 Argo CD에 Application을 생성한다.|[createapp-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/argo-cd/createapp-wftpl.yaml)|
21-
|lma-federation|federation 형상의 LMA를 설치한다. 일반 LMA에서 추가로 Grafana, thanos 등이 설치된다.|[lma-federation-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/lma-federation-wftpl.yaml)|
22-
|lma|일반적인 형상의 LMA을 설치한다.|[lma-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/lma-wftpl.yaml)|
21+
|delete-apps|Argo CD Application을 삭제한다.|[delete-apps-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/argo-cd/delete-apps-wftpl.yaml)|
22+
|lma-federation|federation 형상의 LMA를 설치한다. Grafana, thanos 등이 포함된다.|[lma-federation-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/lma-federation-wftpl.yaml)|
2323
|service-mesh|Service Mesh를 설치한다.|[service-mesh-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/service-mesh-wf.yaml)|
2424
|openstack-infra|OpenStack의 Memcached, Ceph과 같은 Infra에 해당하는 서비스들을 설치한다.|[openstack-infra-wftpl.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/openstack-infra-wftpl.yaml)|
25-
|openstack-components|OpenStack의 Infra 외의 모든 서비스들을 설치한다.|[openstack-components-wf.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/openstack-components-wf.yaml)|
25+
|openstack-components|OpenStack의 Infra 외의 모든 서비스들을 설치한다.|[openstack-components-wf.yaml](https://github.com/openinfradev/decapod-flow/blob/main/templates/decapod-apps/openstack-components-wf.yaml)|
26+
27+
위의 template 외에 "remove-APPGROUP" template의 경우 해당 app group을 삭제하는 역할을 수행한다.

docs/concepts/documentation.md

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# Documentation
22
## Overview
3-
Decapod의 Documentation 기능은 반복적인 복잡한 Yaml 파일 작성을 줄여준다.
3+
Decapod의 Documentation 기능은 반복적이고 복잡한 Yaml 파일 작성을 줄여준다.
44
다수의 Helm Chart를 하나의 Application Group으로 묶어서 관리하고 하나의 파일에서 모든 차트의 value를 override할 수 있다.
55

66
모든 YAML 설정을 Git Repository에 저장하여 배포하는 GitOps 체계이다.
77

8-
YAML 설정을 Base와 Site로 나뉘어 관리하며 Base는 Application Group에 대한 Default YAML을 정의한다.
8+
YAML 설정을 Base와 Site로 나뉘어 관리하며 Base는 Application Group에 대한 Default YAML, 즉 각 환경과 독립적인 공통적인 설정값들을 정의한다.
99
Base의 값을 내 환경에 맞게 변경하고자 한다면 Site에서 Value Override를 할 수 있다.
1010
이는 Helm Chart에서 `Template``values.yaml` 같은 역할이라 볼 수 있다.
1111

@@ -14,9 +14,9 @@ Base의 값을 내 환경에 맞게 변경하고자 한다면 Site에서 Value O
1414
## decapod-base-yaml
1515
_[github link](https://github.com/openinfradev/decapod-base-yaml)_
1616

17-
kustomize의 base resources file들을 미리 정의해 놓은 곳이다.
17+
kustomize 규격에 맞게 base resources file들을 미리 정의해 놓은 곳이다.
1818
여러 Helm chart를 묶어서 LMA, Service Mesh 등의 Application Group으로 정의하였으며,
19-
환경별로 쉽게 값을 수정할 수 있도록 `site-values.yaml` 을 제공한다.
19+
환경별로 주로 수정할 value들을 모아놓은 `site-values.yaml` 을 제공한다.
2020

2121
### Layout
2222
service-mesh
@@ -50,15 +50,17 @@ _[github link](https://github.com/openinfradev/decapod-site)_
5050
1. LMA (Logging, Monitoring and Alarm)
5151
2. Service Mesh
5252
3. OpenStack
53+
54+
5355
## decapod-site
54-
decapod-base-yaml에 정의된 Application Group을 배포 환경에 맞게 커스터마이징한 설정을 저장하는 곳이다.
55-
github action을 통해 decapod-site main branch로 PR이 merge되면 자동으로 kustomize build가 되어 decapod-manifests에 저장된다.
56+
decapod-base-yaml에 정의된 Application Group을 배포 환경에 맞게 customize하기 위한 설정을 저장하는 곳이다.
57+
사용자들이 올린 PR이 decapod-site main branch로 merge되면 github action을 통해 자동으로 kustomize build 명령이 수행되어 결과물이 decapod-manifests repository에 저장된다.
5658
### Layout
5759
├── 사이트명
5860
│ ├── application이름
5961
│ │ ├── kustomization.yaml
6062
│ │ └── site-values.yaml
61-
├── hanu-reference
63+
├── decapod-reference
6264
│ ├── lma
6365
│ │ ├── kustomization.yaml
6466
│ │ └── site-values.yaml
@@ -67,7 +69,7 @@ github action을 통해 decapod-site main branch로 PR이 merge되면 자동으
6769
│ │ └── site-values.yaml
6870
│ └── service-mesh
6971
│ ├── kustomization.yaml
70-
└── hanu-reference-offline
72+
└── decapod-reference-offline
7173
├── lma
7274
│ ├── image-values.yaml
7375
│ ├── kustomization.yaml
@@ -77,13 +79,13 @@ github action을 통해 decapod-site main branch로 PR이 merge되면 자동으
7779
├── kustomization.yaml
7880
└── site-values.yaml
7981

80-
최상단 디렉토리는 사이트(환경)으로 구분된다. 온라인 환경을 위한 sample site는 `hanu-reference` 이고,
81-
오프라인 환경을 위한 sample site는 `hanu-reference-offline` 이다.
82+
최상단 디렉토리는 사이트(환경)으로 구분된다. 온라인 환경을 위한 sample site는 `decapod-reference` 이고,
83+
오프라인(Air-gapped) 환경을 위한 sample site는 `decapod-reference-offline` 이다.
8284

8385
## decapod-manifests
8486
_[github link](https://github.com/openinfradev/decapod-manifests)_
85-
decapod-base-yaml과 decapod-site를 통해 kustomize build된 **결과물**이 저장되는 곳이다.
86-
decapod-site와 동일한 directory 구조를 가져가지만, 최종 output의 형태는 Helm chart로부터 생성된 plain text yaml이다.
87+
decapod-base-yaml과 decapod-site로부터 kustomize build된 **결과물**이 저장되는 곳이다.
88+
decapod-site와 동일한 directory 구조를 가지지만, 최종 output의 형태는 Helm chart로부터 생성된 plaintext yaml이다.
8789
## Example
8890
base(1) + site(2) => manifests(3)
8991

@@ -137,4 +139,4 @@ base(1) + site(2) => manifests(3)
137139
values:
138140
elasticsearchOperator:
139141
nodeSelector:
140-
taco-lma: enabled
142+
taco-lma: enabled

docs/concepts/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Basics
2-
Decapod은 Kubernetes Cluster 환경을 기반으로 하며 Argo Workflow, Argo CD, Kustomize를 사용하고 있다.
3-
Decapod을 사용하기 앞서, 각 프로젝트에 대한 기본적인 이해를 하면 Decapod에 대해 더 쉽게 이해할 수 있다.
2+
Decapod는 Kubernetes Cluster 환경을 기반으로 하며 Argo Workflow, Argo CD, Kustomize 등의 오픈소스 S/W를 활용하고 있다.
3+
Decapod를 사용하기 앞서, 각 프로젝트에 대한 기본적인 이해를 하면 Decapod에 대해 더 쉽게 이해할 수 있다.
44

55
## 알아보기
66
### Kubernetes

docs/getting-started/customize-yaml.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# Customizing
2-
Decapod-site를 배포할 환경에 맞게 수정하여 Argo CD가 사용할 decapod-manifests를 생성한다.
1+
# Customizing configurations
2+
Decapod-site를 배포할 환경에 맞게 수정하여 Argo CD app들에서 참조할 decapod-manifests를 생성한다.
33

44
## 사전 준비
55
* [decapod-site](https://github.com/openinfradev/decapod-site)를 자신의 repo로 fork한다.
@@ -23,9 +23,9 @@ Decapod-site를 배포할 환경에 맞게 수정하여 Argo CD가 사용할 dec
2323
$ ls <SITE_NAME>
2424
admin-tools cloud-console lma openstack service-mesh
2525

26-
## 커스터마이징
26+
## Configuration 수정
2727
!!! note
28-
이 문서는 LMA를 커스터마이징하는 예시이다. service-mesh, openstack 등은 site-values.yaml 내용이 다르므로 각 site-values.yaml 파일 내용을 보고 수정해야한다.
28+
이 문서는 LMA 관련 설정을 커스터마이즈하는 예시이다. service-mesh, openstack 등은 site-values.yaml 내용이 다르므로 각 site-values.yaml 파일 내용을 보고 수정해야한다.
2929

3030
_decapod-site/<SITE_NAME\>/lma/site-values.yaml_:
3131

@@ -59,28 +59,31 @@ global:
5959
prometheus.prometheusSpec.nodeSelector: $(nodeSelector)
6060
```
6161
62-
## 로컬 빌드
62+
## Local Build(rendering)
6363
!!! note
64-
로컬에서 빌드하기 위해서는 `docker` 가 설치되어 있는 환경이어야한다.
65-
로컬 빌드는 documentation 검증을 위한 절차로,
66-
로컬에서 빌드된 결과물이 decapod-manifests와 같은 github repository에 올라가지 않으면 배포할 수 없다.
64+
로컬 환경에서 빌드하기 위해서는 `docker` 가 설치되어 있어야한다.
65+
로컬 빌드는 단순히 documentation 검증을 위한 절차이며,
66+
로컬에서 빌드된 결과물이 decapod-manifests와 같은 github repository에 push되어야 실제 배포가 가능하다.
6767

6868
`decapod-site/.github/workflows/render-cd.sh` 파일을 사용하여 빌드한다.
6969

7070
```bash
7171
$ cd decapod-site
72-
$ .github/workflows/render-cd.sh <DECAPOD-BASE-BRANCH> <OUTPUT_DIR> <SITE_NAME>
72+
$ .github/workflows/render-cd.sh --base-url <DECAPOD-BASE-URL>
73+
74+
# 특정 site에 대해서만 rendering할 경우
75+
$ .github/workflows/render-cd.sh --base-url <DECAPOD-BASE-URL> --site <YOUR-SITE-NAME>
7376
```
7477

7578
실제 배포를 위해서는 빌드된 최종 결과물을 미리 생성해놓은 'decapod-manifest' repository로 push해준다
7679
```
7780
$ cd <YOUR-DECAPOD-SITE-DIRECTORY>
78-
$ cd cd # 'cd' is directory for output manifests
81+
$ cd output # 'output' is directory for output manifests
7982
$ mv ./* <YOUR-DECAPOD-MANIFEST_DIRECTORY>/
8083
$ cd <YOUR-DECAPOD-MANIFEST_DIRECTORY>
8184
$ git commit
8285
$ git push
8386
```
8487
85-
## 자동 빌드
88+
## 자동 Build
8689
Decapod-site는 Github Action을 통해 빌드를 자동화하였다. Repository에 pull request가 생성되어 main branch에 merge되면, 렌더링된 결과물이 decapod-manifest repo로 자동으로 push 되며, 자세한 내용은 [여기](https://github.com/openinfradev/decapod-site/blob/main/.github/workflows/merge_main.yml)를 참고할 수 있다.

docs/getting-started/deploying.md

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,26 @@
1-
# Deploying
1+
# Deploying applications
22

33
## 사전 준비
44
* argo CLI 가 설치되어 있어야 한다.
55
* [argo CLI 설치](https://github.com/argoproj/argo-workflows/releases)
66

7-
* Argo Workflow에 decapod-flow에서 제공하는 `WorkflowTemplate` 을 아래와 같이 생성한다. 각각은 decapod에서 제공하는 pre-defined workflow 템플릿이다.
7+
* decapod-flow에서 제공하는 `WorkflowTemplate` 을 아래와 같이 Argo Workflow Server에 등록한다.
8+
각각은 decapod에서 제공하는 pre-defined workflow 템플릿이다.
89
```bash
910
git clone https://github.com/openinfradev/decapod-flow.git
1011
cd decapod-flow/templates
1112

1213
# argo 를 위한 rbac manifest 를 적용한다.
1314
kubectl apply -f argo-additional-rbac.yaml
1415

15-
argo template create argo-cd/prepare-argocd-wftpl.yaml
16-
argo template create argo-cd/createapp-wftpl.yaml
17-
18-
argo template create decapod-apps/lma-uniformed-wftpl.yaml
19-
argo template create decapod-apps/openstack-components-wf.yaml
20-
argo template create decapod-apps/openstack-infra-wftpl.yaml
21-
argo template create decapod-apps/service-mesh-wf.yaml
16+
# workflow template을 argo workflow server에 등록한다.
17+
kubectl apply -f ./argo-cd/
18+
kubectl apply -f ./decapod-apps/
2219
```
2320

2421
## 배포
2522
!!! note
26-
이 문서에서는 LMA (Logging,Monitoring,Allerting) 배포에 대해서만 다룬다.
23+
이 문서에서는 LMA (Logging/Monitoring/Allerting) 배포에 대해서만 다룬다.
2724
### Argo CLI로 배포
2825
1. 최초 한 번만 prepare-argocd를 실행한다. parameter는 환경에 맞게 수정한다.
2926
```sh
@@ -38,27 +35,33 @@ argo template create decapod-apps/service-mesh-wf.yaml
3835
argo list -n argo # 생성된 workflow가 완료될 때까지 기다린다.
3936
```
4037

41-
2. lma 배포
38+
2. lma 배포
39+
현재 LMA app group 중 logging componet의 경우 [loki](https://grafana.com/docs/loki/latest/)[efk](https://www.digitalocean.com/community/tutorials/how-to-set-up-an-elasticsearch-fluentd-and-kibana-efk-logging-stack-on-kubernetes) 중에서 선택할 수 있으며, 간단한 테스트 목적의 경우 좀더 lightweight한 'loki'를 권장한다.
4240
```sh
4341
argo submit -n argo --from wftmpl/lma-federation \
4442
-p site_name="사이트명" # decapod-manifests의 사이트 디렉토리명과 반드시 일치해야한다. \
45-
-p app_name="lma" \
46-
-p repository_url="https://github.com/{YOUR_REPO_NAME}/decapod-manifests" # decapod-manifests repository 주소
43+
-p logging_component="loki" \
44+
-p manifest_repo_url="https://github.com/{YOUR_REPO_NAME}/decapod-manifests" # decapod-manifests repository 주소
4745

4846
argo list -n argo # 생성된 workflow가 완료될 때까지 기다린다.
4947
```
5048

5149
3. 배포 확인
52-
53-
LMA가 정상적으로 배포되면 다음과 같은 UI에 정상적으로 접근할 수 있어야한다.
54-
55-
* Prometheus 30008 NodePort
56-
* Grafana 30009 NodePort
57-
* Kibana 30001 NodePort
58-
59-
다음과 같은 명령어로 모든 pod의 상태를 확인할 수 있다.
60-
```sh
61-
kubectl get pod -n lma
62-
```
50+
LMA가 정상적으로 배포되면 다음과 같이 pod 및 service 상태를 확인 후 브라우져를 통해 서비스에 접속해본다.
51+
실제 service의 NodePort 번호 등은 설정에 따라 조금씩 다를 수 있다.
52+
```sh
53+
$ kubectl get pod -n lma
54+
NAME READY STATUS RESTARTS AGE
55+
prometheus-lma-prometheus-0 3/3 Running 0 18d
56+
loki-0 1/1 Running 0 20h
57+
grafana-7d5546bb4b-hvkqg 3/3 Running 0 18d
58+
promtail-fctfs 1/1 Running 0 18d
59+
...
6360

64-
61+
$ kubectl get svc -n lma
62+
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
63+
grafana ClusterIP 10.233.59.153 <none> 80/TCP 18d
64+
lma-prometheus NodePort 10.233.45.183 <none> 9090:30008/TCP 18d
65+
loki ClusterIP 10.233.62.51 <none> 3100/TCP 18d
66+
...
67+
```

0 commit comments

Comments
 (0)