- 概述
- 要求
- 预安装
- 安装
- 安装后
- 迁移和升级
- 监控和警示
- 集群管理
- 特定于产品的配置
- 故障排除
安装外部 Secrets Orchestrator
安装外部 Secrets Operator,以将外部密码管理系统与 Automation Suite 集成。
仅当您要将敏感凭据存储在外部密码管理系统中时,才需要执行此步骤。
默认情况下,Automation Suite 包含 External Secrets Operator。
如果您选择不使用捆绑版本,则可以按照本节中描述的步骤安装自己的外部密码运算符实例。
外部密码运算符 (ESO) 是一个 Kubernetes 运算符,可与外部密码管理系统(例如 AWS Secrets Manager、HashiCorp 保险库)集成。它从外部密码后端读取数据,并自动创建和同步原生 Kubernetes 密码。
Automation Suite 支持将 Azure Key Vault、HashiCorp 保险库和 AWS Secrets Manager 作为外部密码提供程序。
添加外部密码 Helm 存储库
您必须将外部密码 Helm 存储库添加到 Helm 安装中,如下所示:
helm repo add external-secrets https://charts.external-secrets.io
helm repo add external-secrets https://charts.external-secrets.io
添加存储库后,您必须更新 Helm 存储库以获取最新的图表信息,如下所示:
helm repo update
helm repo update
OpenShift:配置安全性上下文约束
在 OpenShift 上,“外部 Secrets运算符”Pod 需要权限才能在默认的受限 UID 范围之外运行。在安装运算符之前,您必须向 ESO 服务帐户授予 anyuid 安全上下文约束 (SCC)。
要配置 SCC,请执行以下步骤:
-
将以下内容保存在名为
eso-anyuid-role.yaml文件中,以创建向 anyuid 安全上下文约束授予访问权限的角色:kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: eso-anyuid-role namespace: external-secrets rules: - verbs: - use apiGroups: - security.openshift.io resources: - securitycontextconstraints resourceNames: - anyuidkind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: eso-anyuid-role namespace: external-secrets rules: - verbs: - use apiGroups: - security.openshift.io resources: - securitycontextconstraints resourceNames: - anyuid -
通过运行以下命令创建角色:
oc apply -f eso-anyuid-role.yamloc apply -f eso-anyuid-role.yaml -
将以下内容保存在名为
eso-anyuid-rolebinding.yaml的文件中,以创建一个将角色绑定到所有三个 ESO 服务帐户的角色绑定:kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: eso-anyuid-rolebinding namespace: external-secrets subjects: - kind: ServiceAccount name: external-secrets namespace: external-secrets - kind: ServiceAccount name: external-secrets-cert-controller namespace: external-secrets - kind: ServiceAccount name: external-secrets-webhook namespace: external-secrets roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: eso-anyuid-rolekind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: eso-anyuid-rolebinding namespace: external-secrets subjects: - kind: ServiceAccount name: external-secrets namespace: external-secrets - kind: ServiceAccount name: external-secrets-cert-controller namespace: external-secrets - kind: ServiceAccount name: external-secrets-webhook namespace: external-secrets roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: eso-anyuid-role -
通过运行以下命令创建“角色绑定”:
oc apply -f eso-anyuid-rolebinding.yamloc apply -f eso-anyuid-rolebinding.yaml
在安装运算符之前,您必须创建external-secrets命名空间并应用这些资源。如果 ESO Pod 已经由于违反 SCC 而失败,请应用角色和角色绑定,然后删除失败的 Pod 以触发重新创建。
安装外部 Secrets Orchestrator
您必须使用 v0.16.2 或更高版本部署外部密码运算符。Automation Suite 需要外部密码运算符版本 v0.16.2 作为最低支持版本,其中包括 ESO v1 API。
先创建命名空间(如果在 SCC 步骤中尚未创建),然后安装运算符:
oc create namespace external-secrets --dry-run=client -o yaml | oc apply -f -
helm install external-secrets \
external-secrets/external-secrets \
-n external-secrets \
--version 0.16.2
oc create namespace external-secrets --dry-run=client -o yaml | oc apply -f -
helm install external-secrets \
external-secrets/external-secrets \
-n external-secrets \
--version 0.16.2
外部密码运算符需要访问uipath命名空间才能正常运行。
OpenShift:创建网络策略
在 OpenShift 上,您必须创建以下网络策略以允许 API 服务器访问 ESO Webhook:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-apiserver-to-eso-webhook
namespace: external-secrets
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: external-secrets-webhook
ingress:
- ports:
- port: 10250
protocol: TCP
policyTypes:
- Ingress
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-apiserver-to-eso-webhook
namespace: external-secrets
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: external-secrets-webhook
ingress:
- ports:
- port: 10250
protocol: TCP
policyTypes:
- Ingress
通过运行以下命令应用网络策略:
oc apply -f allow-apiserver-to-eso-webhook.yaml
oc apply -f allow-apiserver-to-eso-webhook.yaml
如果安装使用非默认端口,请将spec.ingress[0].ports[0].port更新为适当的 Webhook 端口。
验证安装
安装后,您必须验证运算符 Pod 是否正在运行,如下所示:
kubectl get pods -n external-secrets
kubectl get pods -n external-secrets
您应该会看到类似于以下示例的输出:
NAME READY STATUS RESTARTS AGE
external-secrets-7d8c9b5f9f-abc12 1/1 Running 0 30s
external-secrets-cert-controller-6d8f7b9c-def34 1/1 Running 0 30s
external-secrets-webhook-8c9d7f6e5-ghi56 1/1 Running 0 30s
NAME READY STATUS RESTARTS AGE
external-secrets-7d8c9b5f9f-abc12 1/1 Running 0 30s
external-secrets-cert-controller-6d8f7b9c-def34 1/1 Running 0 30s
external-secrets-webhook-8c9d7f6e5-ghi56 1/1 Running 0 30s
如果所有 Pod 都显示“正在运行”状态,则安装已完成。
如果任何 Pod 显示CreateContainerConfigError或CrashLoopBackOff ,并在事件中出现与 SCC 相关的错误,请验证是否正确应用了 SCC 配置步骤中的角色和角色绑定:
oc get role eso-anyuid-role -n external-secrets
oc get rolebinding eso-anyuid-rolebinding -n external-secrets
oc get events -n external-secrets --sort-by='.lastTimestamp' | grep -i scc
oc get role eso-anyuid-role -n external-secrets
oc get rolebinding eso-anyuid-rolebinding -n external-secrets
oc get events -n external-secrets --sort-by='.lastTimestamp' | grep -i scc