第4章 GitOps

4.1. Red Hat OpenShift GitOps リリースノート

Red Hat OpenShift GitOps は、クラウドネイティブアプリケーションの継続的デプロイメントを実装するための宣言的な方法です。Red Hat OpenShift GitOps は、異なる環境 (開発、ステージ、実稼働環境など) の異なるクラスターにアプリケーションをデプロイする場合に、アプリケーションの一貫性を確保します。Red Hat OpenShift GitOps は、以下のタスクを自動化する上で役立ちます。

  • クラスターに設定、モニターリングおよびストレージについての同様の状態があることの確認。
  • クラスターを既知の状態からのリカバリーまたは再作成。
  • 複数の OpenShift Container Platform クラスターに対する設定変更を適用するか、またはこれを元に戻す。
  • テンプレート化された設定の複数の異なる環境への関連付け。
  • ステージから実稼働環境へと、クラスター全体でのアプリケーションのプロモート。

Red Hat OpenShift GitOps の概要については、OpenShift GitOps について を参照してください。

4.1.1. 多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社の CTO、Chris Wright のメッセージ を参照してください。

4.1.2. Red Hat OpenShift GitOps 1.2.1 のリリースノート

Red Hat OpenShift GitOps 1.2.1 を OpenShift Container Platform 4.7 および 4.8 でご利用いただけるようになりました。

4.1.2.1. サポート表

現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。

テクノロジープレビュー機能のサポート範囲

以下の表では、機能は以下のステータスでマークされています。

  • TP: テクノロジープレビュー
  • GA: 一般公開機能

これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。

表4.1 サポート表

機能Red Hat OpenShift GitOps 1.2.1

Argo CD

GA

Argo CD ApplicationSet

TP

Red Hat OpenShift GitOps Application Manager (kam)

TP

4.1.2.2. 修正された問題

以下の問題は、現在のリリースで解決されています。

  • 以前のバージョンでは、起動時にアプリケーションコントローラーでメモリーが大幅に急増していました。アプリケーションコントローラーのフラグ --kubectl-parallelism-limit は、デフォルトで 10 に設定されますが、この値は Argo CD CR 仕様に .spec.controller.kubeParallelismLimit の数字を指定して上書きできます。GITOPS-1255
  • 最新の Triggers APIs により、kam bootstrap コマンドの使用時に kustomization.yaml のエントリーが重複していることが原因で、Kubernetes のビルドが失敗しました。この問題に対処するために、Pipelines および Tekton トリガーコンポーネントが v0.24.2 および v0.14.2 にそれぞれ更新されました。GITOPS-1273
  • ソース namespace から Argo CD インスタンスが削除されると、永続的な RBAC ロールおよびバインディングがターゲット namespace から自動的に削除されるようになりました。GITOPS-1228
  • 以前のバージョンでは、Argo CD インスタンスを namespace にデプロイする際に、Argo CD インスタンスは "managed-by" ラベルを独自の namespace に変更していました。今回の修正により、namespace のラベルが解除されると同時に、namespace に必要な RBAC ロールおよびバインディングが作成され、削除されるようになりました。GITOPS-1247
  • 以前のバージョンでは、Argo CD ワークロードのデフォルトのリソース要求制限 (特に repo-server およびアプリケーションコントローラーの制限) が、非常に厳しかったことがわかりました。現在は、既存のリソースクォータが削除され、リポジトリーサーバーのデフォルトのメモリー制限が 1024M に増えました。この変更は新規インストールにのみ影響することに注意してください。既存の Argo CD インスタンスのワークロードには影響はありません。GITOPS-1274

4.1.3. Red Hat OpenShift GitOps 1.2 のリリースノート

Red Hat OpenShift GitOps 1.2 を OpenShift Container Platform 4.7 および 4.8 でご利用いただけるようになりました。

4.1.3.1. サポート表

現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。

テクノロジープレビュー機能のサポート範囲

以下の表では、機能は以下のステータスでマークされています。

  • TP: テクノロジープレビュー
  • GA: 一般公開機能

これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。

表4.2 サポート表

機能Red Hat OpenShift GitOps 1.2

Argo CD

GA

Argo CD ApplicationSet

TP

Red Hat OpenShift GitOps Application Manager (kam)

TP

4.1.3.2. 新機能

以下のセクションでは、修正および安定性の面での改善点に加え、Red Hat OpenShift GitOps 1.2 の主な新機能について説明します。

  • openshift-gitops namespace への読み取りまたは書き込みアクセスがない場合、GitOps Operator で DISABLE_DEFAULT_ARGOCD_INSTANCE 環境変数を使用でき、値を TRUE に設定し、デフォルトの Argo CD インスタンスが openshift-gitops namespace で開始されないようにすることができます。
  • リソース要求および制限は Argo CD ワークロードで設定されるようになりました。リソースクォータは openshift-gitops namespace で有効になっています。そのため、openshift-gitops namespace に手動でデプロイされる帯域外ワークロードは、リソース要求および制限で設定し、リソースクォータを増やす必要がある場合があります。
  • Argo CD 認証は Red Hat SSO と統合され、クラスターの OpenShift 4 アイデンティティープロバイダーに自動的に設定されるようになりました。この機能はデフォルトで無効にされています。Red Hat SSO を有効にするには、以下に示すように ArgoCD CR に SSO 設定を追加します。現在、keycloak が唯一サポートされているプロバイダーです。

    apiVersion: argoproj.io/v1alpha1
    kind: ArgoCD
    metadata:
      name: example-argocd
      labels:
        example: basic
    spec:
      sso:
        provider: keycloak
      server:
        route:
         enabled: true
  • ルートラベルを使用してホスト名を定義して、ルーターのシャード化をサポートするようになりました。server (argocd サーバー)、grafana ルートおよび prometheus ルートに対するラベルの設定のサポートが利用可能になりました。ルートにラベルを設定するには、ArgoCD CR のサーバーのルート設定に labels を追加します。

    argocd サーバーにラベルを設定する ArgoCD CR YAML の例

    apiVersion: argoproj.io/v1alpha1
    kind: ArgoCD
    metadata:
      name: example-argocd
      labels:
        example: basic
    spec:
      server:
        route:
         enabled: true
         labels:
           key1: value1
           key2: value2

  • GitOps Operator は、ラベルを適用してターゲット namespace のリソースを管理するために Argo CD インスタンスへのパーミッションを自動的に付与するようになりました。ユーザーは、ターゲット namespace に argocd.argoproj.io/managed-by: <source-namespace> のラベルを付けます。source-namespace は、argocd インスタンスがデプロイされる namespace に置き換えます。

4.1.3.3. 修正された問題

以下の問題は、現在のリリースで解決されています。

  • 以前のバージョンでは、ユーザーが openshift-gitops namespace のデフォルトのクラスターインスタンスで管理される Argo CD の追加のインスタンスを作成した場合は、新規の Argo CD インスタンスに対応するアプリケーションが OutOfSync ステータスのままになる可能性がありました。この問題は、所有者の参照をクラスターシークレットに追加することで解決されています。GITOPS-1025

4.1.3.4. 既知の問題

これらは Red Hat OpenShift GitOps 1.2 の既知の問題です。

  • Argo CD インスタンスがソース namespace から削除されると、ターゲット namespace の argocd.argoproj.io/managed-by ラベルは削除されません。GITOPS-1228
  • リソースクォータが Red Hat OpenShift GitOps 1.2 の openshift-gitops namespace で有効になっています。これは、手動でデプロイされる帯域外ワークロードおよび openshift-gitops namespace のデフォルトの Argo CD インスタンスによってデプロイされるワークロードに影響を及ぼします。Red Hat OpenShift GitOps v1.1.2 から v1.2 にアップグレードする場合は、このようなワークロードをリソース要求および制限で設定する必要があります。追加のワークロードがある場合は、openshift-gitops namespace のリソースクォータを増やす必要があります。

    openshift-gitops namespace の現在のリソースクォータ。

    リソース要求制限

    CPU

    6688m

    13750m

    メモリー

    4544Mi

    9070Mi

    以下のコマンドを使用して CPU 制限を更新できます。

    $ oc patch resourcequota openshift-gitops-compute-resources -n openshift-gitops --type='json' -p='[{"op": "replace", "path": "/spec/hard/limits.cpu", "value":"9000m"}]'

    以下のコマンドを使用して CPU 要求を更新できます。

    $ oc patch resourcequota openshift-gitops-compute-resources -n openshift-gitops --type='json' -p='[{"op": "replace", "path": "/spec/hard/cpu", "value":"7000m"}]

    上記のコマンドのパスは、cpu から memory を置き換えてメモリーを更新できます。

4.1.4. Red Hat OpenShift GitOps 1.1 のリリースノート

Red Hat OpenShift GitOps 1.1 を OpenShift Container Platform 4.7 でご利用いただけるようになりました。

4.1.4.1. サポート表

現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。

テクノロジープレビュー機能のサポート範囲

以下の表では、機能は以下のステータスでマークされています。

  • TP: テクノロジープレビュー
  • GA: 一般公開機能

これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。

表4.3 サポート表

機能Red Hat OpenShift GitOps 1.1

Argo CD

GA

Argo CD ApplicationSet

TP

Red Hat OpenShift GitOps Application Manager (kam)

TP

4.1.4.2. 新機能

以下のセクションでは、修正および安定性の面での改善点に加え、Red Hat OpenShift GitOps 1.1 の主な新機能について説明します。

  • ApplicationSet 機能が追加されました (テクノロジープレビュー)。ApplicationSet 機能は、多数のクラスターまたはモノリポジトリー内で Argo CD アプリケーションを管理する際に、自動化およびより大きな柔軟性を可能にします。また、マルチテナント Kubernetes クラスターでセルフサービスを使用できるようにします。
  • Argo CD はクラスターロギングスタックおよび OpenShift Container Platform Monitoring およびアラート機能に統合されるようになりました。
  • Argo CD 認証が OpenShift Container Platform に統合されるようになりました。
  • Argo CD アプリケーションコントローラーが水平的なスケーリングをサポートするようになりました。
  • Argo CD Redis サーバーが高可用性 (HA) をサポートするようになりました。

4.1.4.3. 修正された問題

以下の問題は、現在のリリースで解決されています。

  • 以前のバージョンでは、Red Hat OpenShift GitOps は、アクティブなグローバルプロキシー設定のあるプロキシーサーバー設定で予想通りに機能しませんでした。この問題は修正され、Argo CD は Pod の完全修飾ドメイン名 (FQDN) を使用して Red Hat OpenShift GitOps Operator によって設定され、コンポーネント間の通信を有効にできるようになりました。GITOPS-703
  • Red Hat OpenShift GitOps バックエンドは、Red Hat OpenShift GitOps URL の ?ref= クエリーパラメーターを使用して API 呼び出しを行います。以前のバージョンでは、このパラメーターは URL から読み取られず、バックエンドでは常にデフォルトの参照が考慮されました。この問題は修正され、Red Hat OpenShift GitOps バックエンドは Red Hat OpenShift GitOps URL から参照クエリーパラメーターを抽出し、入力参照が指定されていない場合にのみデフォルトの参照を使用します。GITOPS-817
  • 以前のバージョンでは、Red Hat OpenShift GitOps バックエンドは有効な GitLab リポジトリーを見つけることができませんでした。これは、Red Hat OpenShift GitOps バックエンドが GitLab リポジトリーの master ではなく、ブランチ参照として main の有無を確認していたためです。この問題は修正されています。GITOPS-768
  • OpenShift Container Platform Web コンソールの Developer パースペクティブの Environments ページには、アプリケーションの一覧および環境の数が表示されるようになりました。このページには、すべてのアプリケーションを一覧表示する Argo CD Applications ページに転送する Argo CD リンクも表示されます。Argo CD Applications ページには、選択したアプリケーションのみをフィルターできる LABELS (例: app.kubernetes.io/name=appName) があります。GITOPS-544

4.1.4.4. 既知の問題

これらは Red Hat OpenShift GitOps 1.1 の既知の問題です。

  • Red Hat OpenShift GitOps は Helm v2 および ksonnet をサポートしません。
  • Red Hat SSO (RH SSO) Operator は、非接続クラスターではサポートされません。そのため、Red Hat OpenShift GitOps Operator および RH SSO 統合は非接続クラスターではサポートされません。
  • OpenShift Container Platform Web コンソールから Argo CD アプリケーションを削除すると、Argo CD アプリケーションはユーザーインターフェイスで削除されますが、デプロイメントは依然としてクラスターに残ります。回避策として、Argo CD コンソールから Argo CD アプリケーションを削除します。GITOPS-830

4.1.4.5. 互換性を破る変更

4.1.4.5.1. Red Hat OpenShift GitOps v1.0.1 からのアップグレード

Red Hat OpenShift GitOps v1.0.1 から v1.1 にアップグレードすると、Red Hat OpenShift GitOps Operator は openshift-gitops namespace で作成されたデフォルトの Argo CD インスタンスの名前を argocd-cluster から openshift-gitops に変更します。

これは互換性を破る変更であり、アップグレード前に以下の手順を手動で実行する必要があります。

  1. OpenShift Container Platform Web コンソールに移動し、openshift-gitops namespace の argocd-cm.yml 設定マップファイルの内容をローカルファイルにコピーします。コンテンツの例を以下に示します。

    argocd 設定マップ YAML の例

    kind: ConfigMap
    apiVersion: v1
    metadata:
    selfLink: /api/v1/namespaces/openshift-gitops/configmaps/argocd-cm
    resourceVersion: '112532'
    name: argocd-cm
    uid: f5226fbc-883d-47db-8b53-b5e363f007af
    creationTimestamp: '2021-04-16T19:24:08Z'
    managedFields:
    ...
    namespace: openshift-gitops
    labels:
      app.kubernetes.io/managed-by: argocd-cluster
      app.kubernetes.io/name: argocd-cm
      app.kubernetes.io/part-of: argocd
    data: "" 1
    admin.enabled: 'true'
    statusbadge.enabled: 'false'
    resource.exclusions: |
      - apiGroups:
        - tekton.dev
        clusters:
        - '*'
        kinds:
        - TaskRun
        - PipelineRun
    ga.trackingid: ''
    repositories: |
      - type: git
        url: https://github.com/user-name/argocd-example-apps
    ga.anonymizeusers: 'false'
    help.chatUrl: ''
    url: >-
      https://argocd-cluster-server-openshift-gitops.apps.dev-svc-4.7-041614.devcluster.openshift.com   "" 2
    help.chatText: ''
    kustomize.buildOptions: ''
    resource.inclusions: ''
    repository.credentials: ''
    users.anonymous.enabled: 'false'
    configManagementPlugins: ''
    application.instanceLabelKey: ''

    1
    argocd-cm.yml 設定マップファイルの内容の data セクションのみを手動で復元します。
    2
    設定マップエントリーの URL の値を、新規インスタンス名 openshift-gitops に置き換えます。
  2. デフォルトの argocd-cluster インスタンスを削除します。
  3. 新規の argocd-cm.yml 設定マップファイルを編集して、data セクション全体を手動で復元します。
  4. 設定マップエントリーの URL の値を、新規インスタンス名 openshift-gitops に置き換えます。たとえば、前述の例では、URL の値を以下の URL の値に置き換えます。

    url: >-
      https://openshift-gitops-server-openshift-gitops.apps.dev-svc-4.7-041614.devcluster.openshift.com
  5. Argo CD クラスターにログインし、直前の設定が存在することを確認します。