ArgoCDを使ってみる
ArgoCDをローカルで動かしてみたいと思い、以前使ったKubernetes講座のmanifestファイルでやってみた。
まず、以下のチュートリアルのステップ4まで行い、 argocd
namespaceでArgoCDのサーバを起動させる。
その後、 argocd
namespaceにAppProjectとApplicationのmanifestファイルを作れば、宣言的にArgoCDの設定を定義できる。ローカルのKubernetesクラスタで動かしたので、namespaceはdefaultに設定した。
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: default namespace: argocd spec: description: argocd project clusterResourceWhitelist: - group: '*' kind: '*' namespaceResourceBlacklist: - group: '' kind: ResourceQuota - group: '' kind: LimitRange - group: '' kind: NetworkPolicy destinations: - namespace: 'default' server: 'https://kubernetes.default.svc'
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: wordpress-challenge namespace: argocd finalizers: - resources-finalizer.argocd.argoproj.io spec: project: default source: repoURL: https://github.com/Udomomo/kubernetes-challenge-1-wordpress targetRevision: argocd path: app destination: server: https://kubernetes.default.svc namespace: default
これらのファイルをapplyするだけで設定は完了する。レポジトリの argocd
ブランチをトラックするように設定したので、後は app
ディレクトリ下にあるアプリケーションコードを更新し、syncさせれば設定が反映される。
AppProjectやApplicationの設定を更新したい場合は、当該manifestファイルを更新してapplyし直せば良い。
このようにArgoCDを使ってアプリケーションを管理する場合、ArgoCDの管理下のレポジトリにmanifestファイルをプッシュすれば、自分が権限を持っていない種類のresourceでもArgoCDを通してapplyできてしまうことが考えられる。そこで、resourceの種類ごとにブラックリスト/ホワイトリストを設定することも可能。 clusterResourceWhitelist
clusterResourceBlacklist
namespaceResourceWhitelist
namespaceResourceBlacklist
の4種類が設定できる。
上記のmanifestファイルでは、 namespaceResourceBlacklist
にいくつか指定してみている。試しにLimitRangeのmanifestファイルをプッシュすると、ArgoCDがSyncを拒否して失敗した。