Skip to content

Commit

Permalink
Merge pull request #79 from nautible/release/2024.1
Browse files Browse the repository at this point in the history
Release/2024.1
  • Loading branch information
ogis-yamanaka authored May 9, 2024
2 parents 8267e7f + 5ede2d2 commit 2f71c4f
Show file tree
Hide file tree
Showing 178 changed files with 2,483 additions and 56,038 deletions.
2 changes: 2 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
nautible
Copyright 2021 OGIS-RI Co.,Ltd.
47 changes: 24 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,40 @@

## 概要

Kubernetesへエコシステムやアプリケーションを導入するためのリポジトリです
ディレクトリごとに1つのプラグインとして導入に必要なマニフェストや利用手順を用意しており、検証/利用したいプラグインを選択して導入できます。
Kubernetes へエコシステムやアプリケーションを導入するためのリポジトリです
ディレクトリごとに 1 つのプラグインとして導入に必要なマニフェストや利用手順を用意しており、検証/利用したいプラグインを選択して導入できます。

## プラグイン一覧

|プラグイン|概要|依存関係|備考|
|:--|:--|:--|:--|
|albc|AWS LoadBalancer Controller||AWSのみ必要|
|app-bookinfo|Istio動作確認アプリケーション|service-mesh||
|app-examples|サンプルアプリケーション|||
|app-ms|マイクロサービスアプリケーション|distributed-application<br>secrets<br>service-mesh||
|auth|認証(keycloak)の導入|service-mesh||
|cluster-autoscaler|クラスタのNode数調整||AWSのみ必要|
|container-registry|Harborの導入|||
|container-workflow-engine|Argo Workflowsの導入|||
|distributed-application|Daprの導入|||
|kong-apigateway|KongApiGatewayの導入|distributed-application<br>pod-autoscaler||
|metrics-server|メトリクスサーバーの導入||AWSのみ必要|
|observation|Grafana,Prometheusによる監視|metrics-server(AWSのみ)||
|pod-autoscaler|KEDAの導入|||
|secrets|external-secrets-operatorの導入|||
|service-mesh|Istioの導入|albc(AWSのみ)||
| プラグイン | 概要 | 依存関係 | 備考 |
| :------------------------ | :------------------------------- | :------------------------------------------------- | :----------- |
| albc | AWS LoadBalancer Controller | | AWS のみ必要 |
| app-bookinfo | Istio 動作確認アプリケーション | service-mesh | |
| app-examples | サンプルアプリケーション | | |
| app-ms | マイクロサービスアプリケーション | distributed-application<br>secrets<br>service-mesh | |
| auth | 認証(keycloak)の導入 | service-mesh | |
| cert-manager | SSL 証明書管理の導入 | | |
| cluster-autoscaler | クラスタの Node 数調整 | | AWS のみ必要 |
| container-registry | Harbor の導入 | | |
| container-workflow-engine | Argo Workflows の導入 | | |
| distributed-application | Dapr の導入 | | |
| kong-apigateway | KongApiGateway の導入 | distributed-application<br>pod-autoscaler | |
| metrics-server | メトリクスサーバーの導入 | | AWS のみ必要 |
| observation | Grafana,Prometheus による監視 | metrics-server(AWS のみ) <br>cert-manager | |
| pod-autoscaler | KEDA の導入 | | |
| secrets | external-secrets-operator の導入 | | |
| service-mesh | Istio の導入 | albc(AWS のみ) | |

※依存関係のあるものは、依存先のプラグインを先に導入しておく必要があります。

## 導入

nautible-pluginではArgoCDのApplicationリソース(カスタムリソース)を利用してエコシステム/アプリケーションをKubernetesにデプロイします
nautible-plugin では ArgoCD の Application リソース(カスタムリソース)を利用してエコシステム/アプリケーションを Kubernetes にデプロイします

![nautible-plugin全体像](./outline.svg)

エコシステムのマニフェストファイルはnautible-pluginのリポジトリで管理しているものを参照するケースと、各エコシステムのリポジトリにあるものを直接参照するケースがあります。(パラメータ調整等を行わず導入しているものは各エコシステムのリポジトリを直接参照しています)
エコシステムのマニフェストファイルは nautible-plugin のリポジトリで管理しているものを参照するケースと、各エコシステムのリポジトリにあるものを直接参照するケースがあります。(パラメータ調整等を行わず導入しているものは各エコシステムのリポジトリを直接参照しています)

アプリケーションのマニフェストファイルはnautibleのGithubでアプリケーションごとに用意しているマニフェストリポジトリ(<アプリケーションリポジトリ名>-manifest)を参照しています。
アプリケーションのマニフェストファイルは nautible の Github でアプリケーションごとに用意しているマニフェストリポジトリ(<アプリケーションリポジトリ名>-manifest)を参照しています。

プラグインごとの詳細な導入手順については各プラグインディレクトリ配下のREADME.mdを参照してください
プラグインごとの詳細な導入手順については各プラグインディレクトリ配下の README.md を参照してください
8 changes: 6 additions & 2 deletions albc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,11 @@ aws-load-balancer-controller-ingress <none> * k8s-nautiblealbingres-e1

## 4. 削除

ArgoCDのコンソール画面よりaws-load-balancer-controller-ingressおよびaws-load-balancer-controllerの削除を行う。

コマンドラインによる削除を行う場合は、Argo CD CLIを使用してApplicationリソースを削除する。

```BASH
$ kubectl delete -f albc/ingress/application.yaml
$ kubectl delete -f albc/application.yaml
$ argocd app delete argocd/aws-load-balancer-controller-ingress
$ argocd app delete argocd/aws-load-balancer-controller
```
2 changes: 1 addition & 1 deletion albc/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ spec:
source:
path: ''
repoURL: 'https://aws.github.io/eks-charts/'
targetRevision: 1.6.2
targetRevision: 1.7.0
chart: 'aws-load-balancer-controller'
helm:
parameters:
Expand Down
4 changes: 3 additions & 1 deletion albc/ingress/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@ spec:
project: default
destination:
server: https://kubernetes.default.svc
namespace: kube-system
namespace: istio-system
source:
path: albc/ingress/manifest
repoURL: https://github.com/nautible/nautible-plugin
targetRevision: HEAD
syncPolicy:
automated:
prune: true
syncOptions:
- CreateNamespace=true
21 changes: 21 additions & 0 deletions cert-manager/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# cert-manager

## 1. 概要

Kubernetes クラスタ内で証明書を自動的に管理するためのツール

## 2. 導入

```bash
kubectl apply -f cert-manager/application.yaml
```

## 3. 削除

ArgoCD のコンソール画面より cert-manager の削除を行う。

コマンドラインによる削除を行う場合は、Argo CD CLI を使用して Application リソースを削除する。

```
argocd app delete argocd/cert-manager
```
28 changes: 28 additions & 0 deletions cert-manager/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cert-manager
namespace: argocd
spec:
destination:
namespace: cert-manager
server: 'https://kubernetes.default.svc'
source:
chart: 'cert-manager'
repoURL: 'https://charts.jetstack.io'
targetRevision: 1.14.4 # application v1.14.4
helm:
version: v3
# installCRDsはvalues.yamlのコメントではdeplicatedとなっているが、1.14.4時点ではtrueを指定しないとCRDが作成されなかった
values: |
installCRDs: true
crds:
enabled: true
keep: true
project: default
syncPolicy:
automated:
prune: true
selfHeal: false
syncOptions:
- CreateNamespace=true
32 changes: 20 additions & 12 deletions cluster-autoscaler/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,18 @@

## 1. 概要

クラスタのノードをオートスケールするための機能を導入する
データプレーン(ワーカーノード)のオートスケール機能を導入する

AWS(EKS)にはデフォルトで導入されないため、Nodeのオートスケールを行う際は導入する必要がある。
nautible-infraのTerraformコードからEKSをデプロイした場合、オートスケールの基盤としてEC2AutoScalingGroupを導入している。
Cluster AutoscalerはPodのスケジュール失敗や別ノードへの再スケジュールをトリガーにEC2AutoScalingGroupを使用してオートスケールを実現する。
(Karpenterを利用してオートスケールを実現する場合、本機能は必要ありません。)

## 2. 導入

helm.parameters.valueの値を対象のクラスタ名、ロールarnに変更する。
※ロールはterraformで作成されます。
※ロールはterraformで作成されます。terraformのoutputを参照してください。

```
<pre>
helm:
parameters:
- name: 'autoDiscovery.clusterName'
Expand All @@ -21,25 +23,31 @@ helm.parameters.valueの値を対象のクラスタ名、ロールarnに変更
value: 'ap-northeast-1'
- name: 'rbac.serviceAccount.annotations.eks\.amazonaws\.com/role-arn'
value: 'arn:aws:iam::XXXXXXXXXXX:role/XXXXXXXXXX-AmazonEKSClusterAutoscalerRole' # 対象のロールarnに変更する。
```
</pre>

cluster-autoscalerをデプロイする。

```
$ kubectl apply -f cluster-autoscaler/application.yaml
```BASH
kubectl apply -f cluster-autoscaler/application.yaml
```

## 3. 確認

```BASH
kubectl get deploy -n autoscaler
```
$ kubectl get deploy -n autoscaler

<pre>
NAME READY UP-TO-DATE AVAILABLE AGE
cluster-autoscaler-aws-cluster-autoscaler 1/1 1 1 18d
```
</pre>

## 4. 削除

```
$ kubectl delete -f cluster-autoscaler/application.yaml
ArgoCDのコンソール画面よりcluster-autoscalerの削除を行う。

コマンドラインによる削除を行う場合は、Argo CD CLIを使用してApplicationリソースを削除する。

```BASH
argocd app delete argocd/cluster-autoscaler
```
2 changes: 1 addition & 1 deletion cluster-autoscaler/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ spec:
source:
path: ''
repoURL: 'https://kubernetes.github.io/autoscaler/'
targetRevision: 9.34.0
targetRevision: 9.34.1
chart: cluster-autoscaler
helm:
parameters:
Expand Down
11 changes: 7 additions & 4 deletions distributed-application/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

分散アプリケーションランタイム[Dapr](https://dapr.io/)を導入し、分散アプリケーションの構築をサポートする機能を提供する。

### 開発Tips
### 開発 Tips

Daprを利用する際の開発Tipsは[こちら](https://github.com/nautible/docs/tree/main/reference/dapr)を参照
Dapr を利用する際の開発 Tips は[こちら](https://github.com/nautible/docs/tree/main/reference/dapr)を参照

## 2. 導入

Expand All @@ -19,14 +19,17 @@ $ kubectl apply -f distributed-application/application.yaml
```
$ kubectl get deploy -n dapr-system
NAME READY UP-TO-DATE AVAILABLE AGE
dapr-dashboard 1/1 1 1 18d
dapr-operator 1/1 1 1 18d
dapr-sentry 1/1 1 1 18d
dapr-sidecar-injector 1/1 1 1 18d
```

## 4. 削除

ArgoCD のコンソール画面より Dapr の削除を行う。

コマンドラインによる削除を行う場合は、Argo CD CLI を使用して Application リソースを削除する。

```
$ kubectl delete -f distributed-application/application.yaml
argocd app delete argocd/dapr
```
30 changes: 15 additions & 15 deletions distributed-application/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,25 @@ spec:
source:
path: ''
repoURL: 'https://dapr.github.io/helm-charts/'
targetRevision: 1.12.2
targetRevision: 1.12.5
chart: dapr
helm:
parameters:
- name: "dapr_sidecar_injector.allowedServiceAccounts"
value: "argowf:argo-workflows-workflow-controller"
- name: 'dapr_sidecar_injector.allowedServiceAccounts'
value: 'argowf:argo-workflows-workflow-controller'
ignoreDifferences:
- group: apps
kind: Secret
name: dapr-trust-bundle
namespace: dapr-system
jsonPointers:
- /metadata/labels # デプロイ後に動的にラベル付与されるため差分を無視する
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
name: subscriptions.dapr.io
namespace: dapr-system
jsonPointers:
- /spec/conversion/webhook/clientConfig/service/namespace # デプロイ後に動的に変更されるため差分を無視する
- group: apps
kind: Secret
name: dapr-trust-bundle
namespace: dapr-system
jsonPointers:
- /metadata/labels # デプロイ後に動的にラベル付与されるため差分を無視する
- group: apiextensions.k8s.io
kind: CustomResourceDefinition
name: subscriptions.dapr.io
namespace: dapr-system
jsonPointers:
- /spec/conversion/webhook/clientConfig/service/namespace # デプロイ後に動的に変更されるため差分を無視する
project: default
syncPolicy:
automated:
Expand Down
53 changes: 48 additions & 5 deletions metrics-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,70 @@

## 1. 概要

クラスタ内のリソース使用状況を取得するメトリクスサーバー
クラスタ内のリソース使用状況を取得するメトリクスサーバー。ノード単位、Pod単位の基本的なメトリクス(CPU、メモリなど)を取得することができる。

AWS(EKS)にはデフォルトで導入されないため、メトリクスを取得する際は導入する必要がある。

## 2. 導入

```
$ kubectl apply -f metrics-server/application.yaml
```bash
kubectl apply -f metrics-server/application.yaml
```

## 3. 確認

### メトリクスサーバーの動作確認

```bash
kubectl get deployment metrics-server -n kube-system
```
$ kubectl get deployment metrics-server -n kube-system

<pre>
NAME READY UP-TO-DATE AVAILABLE AGE
metrics-server 1/1 1 1 6m
</pre>

### メトリクスの確認

```bash
kubectl top node
```

<pre>
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
ip-192-168-1-71.ap-northeast-1.compute.internal 26m 1% 626Mi 19%
ip-192-168-2-120.ap-northeast-1.compute.internal 25m 1% 576Mi 18%
ip-192-168-2-90.ap-northeast-1.compute.internal 25m 1% 701Mi 22%
</pre>

```bash
kubectl top pod -n kube-system
```

<pre>
NAME CPU(cores) MEMORY(bytes)
aws-node-dsnl5 3m 56Mi
aws-node-m82bm 2m 56Mi
aws-node-nppl7 2m 57Mi
coredns-6c4ffd9cc7-98wch 1m 12Mi
coredns-6c4ffd9cc7-xsj6t 1m 12Mi
ebs-csi-controller-5cd87b44cd-n5wwq 2m 52Mi
ebs-csi-controller-5cd87b44cd-scw8r 3m 51Mi
ebs-csi-node-hmm9h 1m 19Mi
ebs-csi-node-klpj5 1m 19Mi
ebs-csi-node-mf2js 1m 19Mi
kube-proxy-hpjnr 1m 11Mi
kube-proxy-l9stm 1m 11Mi
kube-proxy-xkp8j 1m 11Mi
metrics-server-967bc8b5c-h6pw7 2m 14Mi
</pre>

## 4. 削除

ArgoCDのコンソール画面よりmetrics-serverの削除を行う。

コマンドラインによる削除を行う場合は、Argo CD CLIを使用してApplicationリソースを削除する。

```
$ kubectl delete -f metrics-server/application.yaml
argocd app delete argocd/metrics-server
```
Loading

0 comments on commit 2f71c4f

Please sign in to comment.