アプリケーションのデプロイ
クラスターにFluxを正常にブートストラップしたので、アプリケーションをデプロイできるようになりました。GitOpsベースのアプリケーションデリバリーと他の方法との違いを示すために、現在kubectl apply -kアプローチを使用しているサンプルアプリ ケーションのUIコンポーネントを新しいFluxデプロイメントアプローチに移行します。
まず、既存のUIコンポーネントを削除して置き換えましょう:
~$kubectl delete namespace ui
次に、前のセクションでFluxをブートストラップするために使用したリポジトリをクローンします:
~$git clone ssh://git@${GITEA_SSH_HOSTNAME}:2222/workshop-user/flux.git
次に、「apps」ディレクトリを作成してFluxリポジトリの構築を始めましょう。このディレクトリは、各アプリケーションコンポーネントのサブディレクトリを含むように設計されています:
~$mkdir ~/environment/flux/apps
次に、Fluxにそのディレクトリについて知らせるkustomizationを作成します:
~/environment/eks-workshop/modules/automation/gitops/flux/basic/apps.yaml
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
A
kustomizationに識別しやすい名前を付けます
B
Fluxに1分ごとにポーリングするように指示します
C
Gitリポジトリ内のappsパスを使用します
このファイルをGitリポジトリディレクトリにコピーします:
~$cp ~/environment/eks-workshop/modules/automation/gitops/flux/basic/apps.yaml \
~/environment/flux/apps.yaml
アプリケーションコンポーネントはAmazon ECR Publicに公開されているHelmチャートを使用してインストールします。
FluxにHelmチャートのソースを伝えるためのHelmRepositoryリソースを作成しましょう:
~/environment/eks-workshop/modules/automation/gitops/flux/basic/apps/repository.yaml
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
A
HelmリポジトリのURL
B
ECR PublicはHelmチャートをOCIアーティファクトとしてホストしています
C
5分ごとに更新をチェックします
このファイルをGitリポジトリディレクトリにコピーします:
~$cp ~/environment/eks-workshop/modules/automation/gitops/flux/basic/apps/repository.yaml \
~/environment/flux/apps/repository.yaml
最後に、FluxにUIコンポーネントのHelmチャートをインストールするように指示します:
~/environment/eks-workshop/modules/automation/gitops/flux/basic/apps/ui/helm.yaml
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