Skip to content

RyuSA/seagull-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project seagull

Project seagullはRyuSAのおうちKubernetesを支えるGitOpsリポジトリです。このリポジトリを起点にArgoCDがクラスターにアプリケーションやミドルウェア、また仮想Kubernetesをデプロイしていきます。

全体像

.
├── cluster # Kubernetesディレクトリ
│   ├── in-cluster # Bootstrap
│   └── ...
│
├── manifests # 全マニフェストディレクトリ
│   └── in-cluster # クラスターごとのマニフェストディレクトリ
│       ├── applications # Bootstrap
│       │   ├── application.yaml
│       │   └── ...
│       ├── argocd
│       │   ├── crds
│       │   └── templates
│       └── ...
│
└── servers # 各サーバーの初期設定スクリプトなど
    └── ...

clusters

clusters配下にはin-clusterクラスターの上で動く仮想Kubernetesの構成情報をGitOpsできるようなマニフェストがセットアップされています。

.
├── cluster # Kubernetesディレクトリ
│   ├── root
│   │   ├── root.yaml # Bootstrap
│   │   └── dev-cluster.yaml
│   ├── dev-cluster
│   │   ├── namespace.yaml
│   │   ├── kubeconfig.yaml
│   │   └── templates

App of Apps Patternで実装してあり、Bootstrap用のcluster/root/root.yamlをArgoCDに喰わせることで各仮想Kubernetesが次々とデプロイされていきます。

接続のための設定はcluster/$CLUSTER_NAME/sealed-cluster.yamlに記述されており、このファイルはrootクラスターにデプロイされているSealedSecretによって暗号化されている状態になってます。

詳細 > 仮想Kubernetes管理

manifests

manifests配下にKubernetesへデプロイするアプリケーション/ミドルウェアの構成情報をGitOpsできるようなマニフェストがセットアップされています。

.
├── manifests
│   ├── dev-cluster
│   │   ├── applications
│   │   │   ├── application.yaml # Bootstrap for dev-cluster
│   │   │   └── speedtest.yaml
│   │   ├── speedtest
│   │   │   ├── templates
│   │   │   └── values
│   │   └── ...
│   │
│   └── in-cluster
│       ├── applications
│       │   ├── application.yaml # Bootstrap for in-cluster
│       │   ├── argocd.yaml
│       │   └── ...
│       ├── argocd
│       │   ├── crds
│       │   ├── templates
│       │   └── values
│       │
│       └── ...

App of Apps Patternで実装してあり、Bootstrap用のmanifests/$CLUSTER_NAME/applications/application.yamlをArgoCDに喰わせることで各Kubernetes上にアプリケーションが次々とデプロイされていきます。

詳細 > マニフェスト管理

初期構築

#############################################
### ArgoCDをデプロイ
#############################################
❯ kubectl apply -f manifests/in-cluster/argocd/namespace.yaml
❯ kubectl apply -f manifests/in-cluster/argocd/crds -f manifests/in-cluster/argocd/templates --recursive -n argocd

#############################################
### SealedSecretが要求するSecretを作成
#############################################

# 名前空間作成
❯ kubectl create namespace "sealed-secrets"

# Secret登録
❯ kubectl -n "sealed-secrets" create secret tls "sealed-secrets-key" --cert="manifests/in-cluster/sealed-secrets/ignore/sealed-secrets.crt" --key="manifests/in-cluster/sealed-secrets/ignore/sealed-secrets.key"
❯ kubectl -n "sealed-secrets" label secret "sealed-secrets-key" sealedsecrets.bitnami.com/sealed-secrets-key=active

#############################################
### Bootstrap Application
#############################################
❯ kubectl apply -f manifests/in-cluster/applications/application.yaml

#############################################
### Bootstrap Cluster
#############################################
❯ kubectl apply -f cluster/root/root.yaml

About

おうちKubernetesのGitOpsリポジトリ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages