apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: argocd (1)
namespace: openshift-gitops (2)
spec:
redis:
autotls: openshift (3)
ha:
enabled: true (4)
使用传输层安全 (TLS) 加密与 Red Hat OpenShift GitOps,您可以保护 Argo CD 组件和 Redis 缓存之间的通信,并保护传输过程中可能敏感的数据。
您可以使用以下配置之一来保护与 Redis 的通信
启用autotls
设置以颁发适合 TLS 加密的证书。
通过创建包含密钥和证书对的argocd-operator-redis-tls
密钥来手动配置 TLS 加密。
无论是否启用高可用性 (HA),这两种配置都是可能的。
您可以访问具有cluster-admin
权限的集群。
您可以访问 OpenShift Container Platform Web 控制台。
Red Hat OpenShift GitOps Operator 已安装在您的集群上。
您可以通过在新 Argo CD 实例或现有 Argo CD 实例上启用autotls
设置来配置 Redis 的 TLS 加密。此配置会自动预配argocd-operator-redis-tls
密钥,无需其他步骤。目前,OpenShift Container Platform 是唯一支持的密钥提供程序。
默认情况下, |
登录到 OpenShift Container Platform Web 控制台。
创建启用autotls
的 Argo CD 实例
在 Web 控制台的**管理员**视角中,使用左侧导航面板转到**管理** → **CustomResourceDefinitions**。
搜索argocds.argoproj.io
并单击ArgoCD
自定义资源定义 (CRD)。
在**CustomResourceDefinition 详情**页面上,单击**实例**选项卡,然后单击**创建 ArgoCD**。
编辑或替换类似于以下示例的 YAML
apiVersion: argoproj.io/v1beta1
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 实例的命名空间。 |
3 | 启用autotls 设置并为 Redis 创建 TLS 证书的标志。 |
4 | 启用 HA 功能的标志值。如果您不想启用 HA,请不要包含此行或将标志值设置为false 。 |
或者,您可以通过运行以下命令在现有 Argo CD 实例上启用
|
点击创建。
验证 Argo CD Pod 是否已准备好并正在运行。
$ oc get pods -n <namespace> (1)
1 | 指定 Argo CD 实例运行的命名空间,例如 openshift-gitops 。 |
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 配置需要至少三个工作节点的集群。如果启用了具有 HA 配置的 Argo CD 实例,则输出可能需要几分钟才能显示。 |
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
验证 argocd-operator-redis-tls
密钥是否已创建。
$ oc get secrets argocd-operator-redis-tls -n <namespace> (1)
1 | 指定 Argo CD 实例运行的命名空间,例如 openshift-gitops 。 |
NAME TYPE DATA AGE
argocd-operator-redis-tls kubernetes.io/tls 2 30s
密钥必须是 kubernetes.io/tls
类型,大小为 2
。
您可以通过使用密钥和证书对创建 argocd-operator-redis-tls
密钥来手动配置 Redis 的 TLS 加密。此外,您必须注释密钥以指示它属于相应的 Argo CD 实例。对于启用了高可用性 (HA) 的实例,创建证书和密钥的步骤有所不同。
登录到 OpenShift Container Platform Web 控制台。
创建 Argo CD 实例
在 Web 控制台的**管理员**视角中,使用左侧导航面板转到**管理** → **CustomResourceDefinitions**。
搜索argocds.argoproj.io
并单击ArgoCD
自定义资源定义 (CRD)。
在**CustomResourceDefinition 详情**页面上,单击**实例**选项卡,然后单击**创建 ArgoCD**。
编辑或替换类似于以下示例的 YAML
apiVersion: argoproj.io/v1beta1
kind: ArgoCD
metadata:
name: argocd (1)
namespace: openshift-gitops (2)
spec:
ha:
enabled: true (3)
1 | Argo CD 实例的名称。 |
2 | 您要运行 Argo CD 实例的命名空间。 |
3 | 启用 HA 功能的标志值。如果您不想启用 HA,请不要包含此行或将标志值设置为false 。 |
点击创建。
验证 Argo CD Pod 是否已准备好并正在运行。
$ oc get pods -n <namespace> (1)
1 | 指定 Argo CD 实例运行的命名空间,例如 openshift-gitops 。 |
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 配置需要至少三个工作节点的集群。如果启用了具有 HA 配置的 Argo CD 实例,则输出可能需要几分钟才能显示。 |
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
使用以下选项之一(取决于您的 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 实例运行的命名空间,例如 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 实例运行的命名空间,例如 openshift-gitops 。 |
Generating a RSA private key
...............++++
............................++++
writing new private key to '/tmp/redis-ha.key'
运行以下命令,验证生成的证书和密钥是否在 /tmp
目录中可用:
$ cd /tmp
$ ls
...
redis.crt
redis.key
...
...
redis-ha.crt
redis-ha.key
...
使用以下选项之一(取决于您的 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
注释密钥以指示它属于 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
验证 Argo CD Pod 是否已准备好并正在运行。
$ oc get pods -n <namespace> (1)
1 | 指定 Argo CD 实例运行的命名空间,例如 openshift-gitops 。 |
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 实例,则输出可能需要几分钟才能显示。 |
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