5.10. Redis との安全な通信の設定


Red Hat OpenShift GitOps で Transport Layer Security (TLS) 暗号化を使用すると、Argo CD コンポーネントと Redis キャッシュ間の通信を保護し、機密情報の可能性がある転送中のデータを保護できます。

次の設定のいずれかを使用して、Redis との通信を保護できます。

  • autotls 設定を有効にして、TLS 暗号化に適切な証明書を発行します。
  • キーと証明書のペアを使用して argocd-operator-redis-tls シークレットを作成し、TLS 暗号化を手動で設定します。

どちらの設定も、高可用性 (HA) が有効になっているかどうかに関係なく可能です。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • Red Hat OpenShift GitOps Operator がクラスターにインストールされている。

5.10.1. autotls を有効にして Redis の TLS を設定する

新規または既存の Argo CD インスタンスで autotls 設定を有効にすることで、Redis の TLS 暗号化を設定できます。この設定では 、argocd-operator-redis-tls シークレットが自動的にプロビジョニングされるため、それ以上の手順は必要ありません。現時点で、OpenShift Container Platform は唯一サポートされているシークレットプロバイダーです。

注記

デフォルトでは、autotls 設定は無効になっています。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. autotls を有効にして Argo CD インスタンスを作成します。

    1. Web コンソールの Administrator パースペクティブで、左側のナビゲーションパネルを使用して、Administration CustomResourceDefinitions に移動します。
    2. argocds.argoproj.io を検索し、ArgoCD カスタムリソース定義 (CRD) をクリックします。
    3. CustomResourceDefinition の詳細 ページで、Instances タブをクリックし、Create ArgoCD をクリックします。
    4. 次の例のように YAML を編集または置換します。

      autotls を有効にした Argo CD CR の例

      apiVersion: argoproj.io/v1alpha1
      kind: ArgoCD
      metadata:
        name: argocd 1
        namespace: openshift-gitops 2
      spec:
        redis:
          autotls: openshift 3
        ha:
          enabled: true 4

      1
      Argo CD インスタンスの名前。
      2
      Argo CD インスタンスを実行する namespace。
      3
      autotls 設定を有効にし、Redis の TLS 証明書を作成するフラグ。
      4
      HA 機能を有効にするフラグの値。HA を有効にしたくない場合は、この行を含めないか、フラグ値を false に設定します。
      ヒント

      あるいは、次のコマンドを実行して、既存の Argo CD インスタンスで autotls に設定を有効にすることもできます。

      $ oc patch argocds.argoproj.io <instance-name> --type=merge -p '{"spec":{"redis":{"autotls":"openshift"}}}'
    5. Create をクリックします。
    6. Argo CD Pod が準備ができており、実行中であることを確認します。

      $ oc get pods -n <namespace> 1
      1
      Argo CD インスタンスが実行されている namespace (例: openshift-gitops) を指定します。

      HA を無効にした場合の出力例

      NAME                                  READY   STATUS    RESTARTS   AGE
      argocd-application-controller-0       1/1     Running   0          26s
      argocd-redis-84b77d4f58-vp6zm         1/1     Running   0          37s
      argocd-repo-server-5b959b57f4-znxjq   1/1     Running   0          37s
      argocd-server-6b8787d686-wv9zh        1/1     Running   0          37s

      注記

      HA 対応の TLS 設定には、少なくとも 3 つのワーカーノードを備えたクラスターが必要です。HA 設定で Argo CD インスタンスを有効にしている場合、出力が表示されるまでに数分かかることがあります。

      HA を有効にした場合の出力例

      NAME                                       READY   STATUS    RESTARTS   AGE
      argocd-application-controller-0            1/1     Running   0          10m
      argocd-redis-ha-haproxy-669757fdb7-5xg8h   1/1     Running   0          10m
      argocd-redis-ha-server-0                   2/2     Running   0          9m9s
      argocd-redis-ha-server-1                   2/2     Running   0          98s
      argocd-redis-ha-server-2                   2/2     Running   0          53s
      argocd-repo-server-576499d46d-8hgbh        1/1     Running   0          10m
      argocd-server-9486f88b7-dk2ks              1/1     Running   0          10m

  3. argocd-operator-redis-tls シークレットが作成されていることを確認します。

    $ oc get secrets argocd-operator-redis-tls -n <namespace> 1
    1
    Argo CD インスタンスが実行されている namespace (例: openshift-gitops) を指定します。

    出力例

    NAME                        TYPE                DATA   AGE
    argocd-operator-redis-tls   kubernetes.io/tls   2      30s

    シークレットは kubernetes.io/tls タイプで、サイズが 2 である必要があります。

5.10.2. autotls を無効にして Redis の TLS を設定する

キーと値のペアを使用して argocd-operator-redis-tls シークレットを作成して、Redis の TLS 暗号化を手動で設定できます。さらに、シークレットにアノテーションを付けて、それが適切な Argo CD インスタンスに属していることを示す必要があります。証明書とシークレットを作成する手順は、高可用性 (HA) が有効になっているインスタンスによって異なります。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Argo CD インスタンスを作成します。

    1. Web コンソールの Administrator パースペクティブで、左側のナビゲーションパネルを使用して、Administration CustomResourceDefinitions に移動します。
    2. argocds.argoproj.io を検索し、ArgoCD カスタムリソース定義 (CRD) をクリックします。
    3. CustomResourceDefinition の詳細 ページで、Instances タブをクリックし、Create ArgoCD をクリックします。
    4. 次の例のように YAML を編集または置換します。

      autotls を無効にした ArgoCD CR の例

      apiVersion: argoproj.io/v1alpha1
      kind: ArgoCD
      metadata:
        name: argocd 1
        namespace: openshift-gitops 2
      spec:
        ha:
          enabled: true 3

      1
      Argo CD インスタンスの名前。
      2
      Argo CD インスタンスを実行する namespace。
      3
      HA 機能を有効にするフラグの値。HA を有効にしたくない場合は、この行を含めないか、フラグ値を false に設定します。
    5. Create をクリックします。
    6. Argo CD Pod が準備ができており、実行中であることを確認します。

      $ oc get pods -n <namespace> 1
      1
      Argo CD インスタンスが実行されている namespace (例: openshift-gitops) を指定します。

      HA を無効にした場合の出力例

      NAME                                  READY   STATUS    RESTARTS   AGE
      argocd-application-controller-0       1/1     Running   0          26s
      argocd-redis-84b77d4f58-vp6zm         1/1     Running   0          37s
      argocd-repo-server-5b959b57f4-znxjq   1/1     Running   0          37s
      argocd-server-6b8787d686-wv9zh        1/1     Running   0          37s

      注記

      HA 対応の TLS 設定には、少なくとも 3 つのワーカーノードを備えたクラスターが必要です。HA 設定で Argo CD インスタンスを有効にしている場合、出力が表示されるまでに数分かかることがあります。

      HA を有効にした場合の出力例

      NAME                                       READY   STATUS    RESTARTS   AGE
      argocd-application-controller-0            1/1     Running   0          10m
      argocd-redis-ha-haproxy-669757fdb7-5xg8h   1/1     Running   0          10m
      argocd-redis-ha-server-0                   2/2     Running   0          9m9s
      argocd-redis-ha-server-1                   2/2     Running   0          98s
      argocd-redis-ha-server-2                   2/2     Running   0          53s
      argocd-repo-server-576499d46d-8hgbh        1/1     Running   0          10m
      argocd-server-9486f88b7-dk2ks              1/1     Running   0          10m

  3. HA 設定に応じて、次のいずれかのオプションを使用して、Redis サーバーの自己署名証明書を作成します。

    • HA が無効になっている Argo CD インスタンスの場合は、次のコマンドを実行します。

      $ openssl req -new -x509 -sha256 \
        -subj "/C=XX/ST=XX/O=Testing/CN=redis" \
        -reqexts SAN -extensions SAN \
        -config <(printf "\n[SAN]\nsubjectAltName=DNS:argocd-redis.<namespace>.svc.cluster.local\n[req]\ndistinguished_name=req") \ 1
        -keyout /tmp/redis.key \
        -out /tmp/redis.crt \
        -newkey rsa:4096 \
        -nodes \
        -sha256 \
        -days 10
      1
      Argo CD インスタンスが実行されている namespace (例: openshift-gitops) を指定します。

      出力例

      Generating a RSA private key
      ...............++++
      ............................++++
      writing new private key to '/tmp/redis.key'

    • HA が有効になっている Argo CD インスタンスの場合は、以下のコマンドを実行します。

      $ openssl req -new -x509 -sha256 \
        -subj "/C=XX/ST=XX/O=Testing/CN=redis" \
        -reqexts SAN -extensions SAN \
        -config <(printf "\n[SAN]\nsubjectAltName=DNS:argocd-redis-ha-haproxy.<namespace>.svc.cluster.local\n[req]\ndistinguished_name=req") \ 1
        -keyout /tmp/redis-ha.key \
        -out /tmp/redis-ha.crt \
        -newkey rsa:4096 \
        -nodes \
        -sha256 \
        -days 10
      1
      Argo CD インスタンスが実行されている namespace (例: openshift-gitops) を指定します。

      出力例

      Generating a RSA private key
      ...............++++
      ............................++++
      writing new private key to '/tmp/redis-ha.key'

  4. 次のコマンドを実行して、生成された証明書とキーが /tmp ディレクトリーで利用できることを確認します。

    $ cd /tmp
    $ ls

    HA を無効にした場合の出力例

    ...
    redis.crt
    redis.key
    ...

    HA を有効にした場合の出力例

    ...
    redis-ha.crt
    redis-ha.key
    ...

  5. HA 設定に応じて、次のいずれかのオプションを使用して、argocd-operator-redis-tls シークレットを作成します。

    • HA が無効になっている Argo CD インスタンスの場合は、次のコマンドを実行します。

      $ oc create secret tls argocd-operator-redis-tls --key=/tmp/redis.key --cert=/tmp/redis.crt
    • HA が有効になっている Argo CD インスタンスの場合は、以下のコマンドを実行します。

      $ oc create secret tls argocd-operator-redis-tls --key=/tmp/redis-ha.key --cert=/tmp/redis-ha.crt

      出力例

      secret/argocd-operator-redis-tls created

  6. シークレットにアノテーションを付けて、それが Argo CD CR に属していることを示します。

    $ oc annotate secret argocd-operator-redis-tls argocds.argoproj.io/name=<instance-name> 1
    1
    Argo CD インスタンスの名前を指定します (例: argocd)。

    出力例

    secret/argocd-operator-redis-tls annotated

  7. Argo CD Pod が準備ができており、実行中であることを確認します。

    $ oc get pods -n <namespace> 1
    1
    Argo CD インスタンスが実行されている namespace (例: openshift-gitops) を指定します。

    HA を無効にした場合の出力例

    NAME                                  READY   STATUS    RESTARTS   AGE
    argocd-application-controller-0       1/1     Running   0          26s
    argocd-redis-84b77d4f58-vp6zm         1/1     Running   0          37s
    argocd-repo-server-5b959b57f4-znxjq   1/1     Running   0          37s
    argocd-server-6b8787d686-wv9zh        1/1     Running   0          37s

    注記

    HA 設定で Argo CD インスタンスを有効にしている場合、出力が表示されるまでに数分かかることがあります。

    HA を有効にした場合の出力例

    NAME                                       READY   STATUS    RESTARTS   AGE
    argocd-application-controller-0            1/1     Running   0          10m
    argocd-redis-ha-haproxy-669757fdb7-5xg8h   1/1     Running   0          10m
    argocd-redis-ha-server-0                   2/2     Running   0          9m9s
    argocd-redis-ha-server-1                   2/2     Running   0          98s
    argocd-redis-ha-server-2                   2/2     Running   0          53s
    argocd-repo-server-576499d46d-8hgbh        1/1     Running   0          10m
    argocd-server-9486f88b7-dk2ks              1/1     Running   0          10m

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.