安装后配置Astra控制中心
根据您的环境、安装Astra控制中心后可能需要进行其他配置。
消除资源限制
某些环境使用ResourceQuotas和LimitRanges对象来防止命名空间中的资源占用集群上的所有可用CPU和内存。Astra控制中心未设置最大限制、因此不符合这些资源的要求。如果您的环境采用这种方式配置、则需要从计划安装Astra控制中心的命名空间中删除这些资源。
您可以使用以下步骤检索和删除这些配额和限制。在这些示例中、命令输出会立即显示在命令后面。
-
在中获取资源配额
netapp-acc
(或自定义名称)命名空间:kubectl get quota -n [netapp-acc or custom namespace]
响应:
NAME AGE REQUEST LIMIT pods-high 16s requests.cpu: 0/20, requests.memory: 0/100Gi limits.cpu: 0/200, limits.memory: 0/1000Gi pods-low 15s requests.cpu: 0/1, requests.memory: 0/1Gi limits.cpu: 0/2, limits.memory: 0/2Gi pods-medium 16s requests.cpu: 0/10, requests.memory: 0/20Gi limits.cpu: 0/20, limits.memory: 0/200Gi
-
按名称删除所有资源配额:
kubectl delete resourcequota pods-high -n [netapp-acc or custom namespace]
kubectl delete resourcequota pods-low -n [netapp-acc or custom namespace]
kubectl delete resourcequota pods-medium -n [netapp-acc or custom namespace]
-
在中获取限制范围
netapp-acc
(或自定义名称)命名空间:kubectl get limits -n [netapp-acc or custom namespace]
响应:
NAME CREATED AT cpu-limit-range 2022-06-27T19:01:23Z
-
按名称删除限制范围:
kubectl delete limitrange cpu-limit-range -n [netapp-acc or custom namespace]
在命名空间之间启用网络通信
某些环境使用NetworkPolicy构造来限制命名空间之间的流量。Astra控制中心操作员和Astra控制中心位于不同的命名空间中。这些不同命名空间中的服务需要能够彼此通信。要启用此通信、请执行以下步骤。
-
删除Astra控制中心命名空间中的任何NetworkPolicy资源:
kubectl get networkpolicy -n [netapp-acc or custom namespace]
-
对于上述命令返回的每个NetworkPolicy对象、请使用以下命令将其删除。将[object_name]替换为返回对象的名称:
kubectl delete networkpolicy [OBJECT_NAME] -n [netapp-acc or custom namespace]
-
应用以下资源文件以配置
acc-avp-network-policy
允许Asta插件服务向Asta Control Center服务发出请求的对象。将括号<>中的信息替换为您环境中的信息:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: acc-avp-network-policy namespace: <ACC_NAMESPACE_NAME> # REPLACE THIS WITH THE ASTRA CONTROL CENTER NAMESPACE NAME spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: <PLUGIN_NAMESPACE_NAME> # REPLACE THIS WITH THE ASTRA PLUGIN NAMESPACE NAME
-
应用以下资源文件以配置
acc-operator-network-policy
允许Astra控制中心操作员与Astra控制中心服务进行通信的对象。将括号<>中的信息替换为您环境中的信息:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: acc-operator-network-policy namespace: <ACC_NAMESPACE_NAME> # REPLACE THIS WITH THE ASTRA CONTROL CENTER NAMESPACE NAME spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: <NETAPP-ACC-OPERATOR> # REPLACE THIS WITH THE OPERATOR NAMESPACE NAME
添加自定义 TLS 证书
默认情况下、Astra控制中心对传入控制器流量(仅在某些配置中)和Web浏览器的Web UI身份验证使用自签名TLS证书。您可以删除现有的自签名 TLS 证书,并将其替换为由证书颁发机构( CA )签名的 TLS 证书。
默认的自签名证书用于两种类型的连接:
替换默认TLS证书将替换用于对这些连接进行身份验证的证书。 |
-
安装了 Astra 控制中心的 Kubernetes 集群
-
对集群上要运行的命令Shell的管理访问
kubectl
命令 -
CA 中的专用密钥和证书文件
删除自签名证书
删除现有的自签名 TLS 证书。
-
使用 SSH ,以管理用户身份登录到托管 Astra 控制中心的 Kubernetes 集群。
-
使用以下命令替换、查找与当前证书关联的TLS密钥
<ACC-deployment-namespace>
使用Astra Control Center部署命名空间:kubectl get certificate -n <ACC-deployment-namespace>
-
使用以下命令删除当前安装的密钥和证书:
kubectl delete cert cert-manager-certificates -n <ACC-deployment-namespace> kubectl delete secret secure-testing-cert -n <ACC-deployment-namespace>
使用命令行添加新证书
添加一个由 CA 签名的新 TLS 证书。
-
使用以下命令使用 CA 中的专用密钥和证书文件创建新的 TLS 密钥,并将括号 <> 中的参数替换为相应的信息:
kubectl create secret tls <secret-name> --key <private-key-filename> --cert <certificate-filename> -n <ACC-deployment-namespace>
-
使用以下命令和示例编辑集群自定义资源定义(CRD)文件并更改
spec.selfSigned
值为spec.ca.secretName
要引用先前创建的TLS密钥、请执行以下操作:kubectl edit clusterissuers.cert-manager.io/cert-manager-certificates -n <ACC-deployment-namespace> .... #spec: # selfSigned: {} spec: ca: secretName: <secret-name>
-
使用以下命令和示例输出验证所做的更改是否正确以及集群是否已准备好验证证书、然后进行替换
<ACC-deployment-namespace>
使用Astra Control Center部署命名空间:kubectl describe clusterissuers.cert-manager.io/cert-manager-certificates -n <ACC-deployment-namespace> .... Status: Conditions: Last Transition Time: 2021-07-01T23:50:27Z Message: Signing CA verified Reason: KeyPairVerified Status: True Type: Ready Events: <none>
-
创建
certificate.yaml
file使用以下示例将括号<>中的占位符值替换为相应的信息:apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: <certificate-name> namespace: <ACC-deployment-namespace> spec: secretName: <certificate-secret-name> duration: 2160h # 90d renewBefore: 360h # 15d dnsNames: - <astra.dnsname.example.com> #Replace with the correct Astra Control Center DNS address issuerRef: kind: ClusterIssuer name: cert-manager-certificates
-
使用以下命令创建证书:
kubectl apply -f certificate.yaml
-
使用以下命令和示例输出,验证是否已正确创建证书以及是否使用您在创建期间指定的参数(例如名称,持续时间,续订截止日期和 DNS 名称)。
kubectl describe certificate -n <ACC-deployment-namespace> .... Spec: Dns Names: astra.example.com Duration: 125h0m0s Issuer Ref: Kind: ClusterIssuer Name: cert-manager-certificates Renew Before: 61h0m0s Secret Name: <certificate-secret-name> Status: Conditions: Last Transition Time: 2021-07-02T00:45:41Z Message: Certificate is up to date and has not expired Reason: Ready Status: True Type: Ready Not After: 2021-07-07T05:45:41Z Not Before: 2021-07-02T00:45:41Z Renewal Time: 2021-07-04T16:45:41Z Revision: 1 Events: <none>
-
使用以下命令和示例编辑传入 CRD TLS 选项以指向新的证书密钥,并将括号 <> 中的占位符值替换为相应的信息:
kubectl edit ingressroutes.traefik.containo.us -n <ACC-deployment-namespace> .... # tls: # options: # name: default # secretName: secure-testing-cert # store: # name: default tls: options: name: default secretName: <certificate-secret-name> store: name: default
-
使用 Web 浏览器浏览到 Astra 控制中心的部署 IP 地址。
-
验证证书详细信息是否与您安装的证书的详细信息匹配。
-
导出证书并将结果导入到 Web 浏览器中的证书管理器中。