アプリケーションのデプロイ
クラスターにFluxを正常にブートストラップしたので、アプリケーションをデプロイできるようになりました。GitOpsベースのアプリケーションデリバリーと他の方法との違いを示すために、現在kubectl apply -kアプローチを使用しているサンプルアプリケーションのUIコンポーネントを新しいFluxデプロイメントアプローチに移行します。
まず、既存のUIコンポーネントを削除して置き換えましょう:
次に、前のセクションでFluxをブートストラップするために使用したリポジトリをクローンします:
次に、「apps」ディレクトリを作成してFluxリポジトリの構築を始めましょう。このディレクトリは、各アプリケーションコンポーネントのサブディレクトリを含むように設計されています:
次に、Fluxにそのディレクトリについて知らせるkustomizationを作成します:
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: apps
namespace: flux-system
spec:
interval: 1m0s
sourceRef:
kind: GitRepository
name: flux-system
path: ./apps
prune: true
kustomizationに識別しやすい名前を付けます
Fluxに1分ごとにポーリングするように指示します
Gitリポジトリ内のappsパスを使用します
このファイルをGitリポジトリディレクトリにコピーします:
アプリケーションコンポーネントはAmazon ECR Publicに公開されているHelmチャートを使用してインストールします。
FluxにHelmチャートのソースを伝えるためのHelmRepositoryリソースを作成しましょう:
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: retail-store
namespace: flux-system
spec:
url: oci://public.ecr.aws/aws-containers
type: "oci"
interval: 5m0s
HelmリポジトリのURL
ECR PublicはHelmチャートをOCIアーティファクトとしてホストしています
5分ごとに更新をチェックします
このファイルをGitリポジトリディレクトリにコピーします:
最後に、FluxにUIコンポーネントのHelmチャートをインストールするように 指示します:
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: ui
namespace: flux-system
spec:
interval: 10m
timeout: 5m
chart:
spec:
chart: retail-store-sample-ui-chart
version: "1.2.1"
sourceRef:
kind: HelmRepository
name: retail-store
interval: 5m
releaseName: ui
install:
createNamespace: true
targetNamespace: ui
values:
ingress:
enabled: true
className: alb
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/healthcheck-path: /actuator/health/liveness
HelmReleaseリソースの名前
上記で指定したHelmリポジトリを参照するチャートの名前とバージョン
名前空間が存在しない場合は作成します
この場合はイングレスを有効にするなど、valuesを使用してチャートを構成します
適切なファイルをGitリポジトリディレクトリにコピーします:
Gitディレクトリは次のようになっているはずです。tree ~/environment/fluxを実行して確認できます:
.
├── apps
│ ├── repository.yaml
│ └── ui
│ ├── helm.yaml
│ └── kustomization.yaml
├── apps.yaml
└── flux-system
├── gotk-components.yaml
├── gotk-sync.yaml
└── kustomization.yaml
3 directories, 7 files
最後に、構成をGitにプッシュします:
Fluxがギットの変更に気づいて調整するまでに時間がかかります。Flux CLIを使用して、新しいapps kustomizationが表示されるのを監視できます:
NAME REVISION SUSPENDED READY MESSAGE
flux-system main@sha1:f39f67e False True Applied revision: main@sha1:f39f67e
apps main@sha1:f39f67e False True Applied revision: main@sha1:f39f67e
また、Fluxに手動で調整をトリガーすることもできます:
上記のようにappsが表示されたら、Ctrl+Cを使用してコマンドを閉じます。これで、UIサービスに関連するすべてのリソースが再度デプロイされているはずです。確認するには、次のコマンドを実行します:
NAME READY UP-TO-DATE AVAILABLE AGE
ui 1/1 1 1 5m
NAME READY STATUS RESTARTS AGE
ui-54ff78779b-qnrrc 1/1 Running 0 5m
Ingressリソースからのアドレスを取得します:
http://k8s-ui-ui-a9797f0f61.elb.us-west-2.amazonaws.com
ロードバランサーのプロビジョニングが完了するまで待つには、このコマンドを実行します:
Webブラウザからアクセスしてください。Webストアからのインタフェースが表示され、ユーザーとしてサイト内を移動できます。
