疑難排解 AppScan 360° 靜態分析 部署
執行部署 Script 時傳回錯誤
缺少 Cert Manager 相依關係
- 錯誤:
Error: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "analyzer-cert" namespace: "" from "": no matches for kind "Certificate" in version "cert-manager.io/v1" ensure CRDs are installed first, resource mapping not found for name: "ascp-adapter-cert" namespace: "" from "": no matches for kind "Certificate" in version "cert-manager.io/v1"
- 主要原因:
當未在叢集上部署 cert-manager 附加元件相依關係時,便會發生此錯誤。AppScan 360° SAST 依賴 cert-manager 附加元件進行部署。
- 解決方案:
缺少 Keda 相依關係
- 錯誤:
Error: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "analyzer-hpa" namespace: "" from "": no matches for kind "ScaledObject" in version "keda.sh/v1alpha1" ensure CRDs are installed first, resource mapping not found for name: "ascp-adapter-hpa" namespace: "" from "": no matches for kind "ScaledObject" in version "keda.sh/v1alpha1"
- 主要原因:
當未在叢集上部署 Keda 附加元件相依關係時,便會發生此錯誤。AppScan 360° SAST 依賴 Keda 附加元件進行部署。
- 解決方案:
資源已在使用中或無法重新建立
- 錯誤:
Previous PVC storage not completely cleaned up.
Incomplete finalizers on pods.
Namespace stuck in termination state.
- 主要原因:
移除程序期間,並未完全清除先前部署的資源。若強制刪除名稱空間導致資源在叢集上未被追蹤,也會發生這種情況。
- 解決方案:解決方案會因所涉及的資源問題類型而有所不同:
- 清除卡在終止狀態的名稱空間
kubectl get namespace "hcl-appscan-sast" -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" | kubectl replace --raw /api/v1/namespaces/hcl-appscan-sast/finalize -f-
-
清除卡在終止狀態的 pod
kubectl delete pod <pod-name> --grace-period=0 --force --namespace <namespace>
-
刪除孤立的 PV 和 PVC
kubectl patch pv <pv-name> -p '{"metadata":{"finalizers":null}}' kubectl delete pv --grace-period=0 --force --namespace <namespace> <pv-name> kubectl patch pvc <pvc-name> -p '{"metadata":{"finalizers":null}} kubectl delete pvc --grace-period=0 --force --namespace <namespace> <pvc-name>
- 清除卡在終止狀態的名稱空間
未提供必要的參數
- 錯誤:
-
ERROR: Authorization token is required for the deployment. Use the option '--auth-token' to specify the file path which contains the token.
-
ERROR: Authorization token file path specified for the option '--auth-token' does not exist. o ERROR: Rabbitmq password is required for the deployment. Use the option '--rabbitmq-pwd' to specify the file path which contains the password.
-
ERROR: Rabbitmq password file path specified for the option '--rabbitmq-pwd' does not exist.
-
ERROR: CA certificate & key are required for the deployment. Use the options '--cert, --cert-key' to specify the ca certificate and the private-key file paths.
-
ERROR: Certificate file path specified for the option '--cert' does not exist.
-
ERROR: Certificate private key file path specified for the option '--cert-key' does not exist.
-
ERROR: Configuration file path specified for the option '--config-file' does not exist.
-
- 主要原因:
未提供部署 Script 所需的參數,或提供給選項的值無效。
- 解決方案:
請檢閱部署 Script 的所有必要選項,並確定已將有效值指定給選項。
pod 在部署 Script 後無法啟動
作為後置部署程序,您應該登入叢集以驗證所有 AppScan 360° SAST pod 是否已啟動並正在執行。接著是一些 pod 相關部署問題的部署範例。
持續性磁區 (PV) 與持續性磁區要求 (PVC) 相關錯誤
建立 PVC 需要磁碟上有所要求的儲存空間大小可供使用。確認存放資料儲存體的磁碟空間是否足夠容納所要求的容量。未佈建的 PVC 會導致建立 pod 失敗。
azurefile
等雲端儲存解決方案可提供付費的大容量儲存空間。如果任何現有 AppScan 360° SAST 相關 PV 及 PVC 並未完全移除,則任何新部署都將因名稱衝突而無法建立 PV 及 PVC,進而導致 pod 建立失敗。
-
解決方案:
移除後請等待幾秒鐘,以確保所有 PV 及 PVC 資源都能有效地釋放,然後再嘗試新的部署。
CPU/記憶體不足,無法建立 pod
每個 AppScan 360° SAST 元件都有針對各自 pod 定義的一組資源需求。如需詳細資料,請參閱資源需求一節。
當節點集區上無法使用每個 pod 所需的最低資源限制時,建立 pod 會失敗。
-
解決方案:
確保節點集區資源大小符合 AppScan 360° SAST 所定義的資源需求。
RabbitMQ 未啟動
RabbitMQ 服務必須已啟動且正在執行,AppScan 360° SAST 元件才能如預期運作。RabbitMQ 服務需要幾分鐘才能啟動,在部署 RabbitMQ 時,AppScan 360° SAST pod 嘗試啟動幾次都失敗的情況並不罕見。如果無法成功啟動 RabbitMQ 服務,接著 AppScan 360° SAST pod 就會失敗。
- 錯誤:
Startup probe failed: …
Readiness probe failed: …
- 主要原因:
Pod 一或多個性能檢查失敗。
- 解決方案:
- 驗證相依元件正在執行並已正確配置。
- 執行此指令
kubectl describe pod <pod-name> -n <namespace>
以檢查更多詳細資料。 - 如需詳細資料,請檢查 Pod 日誌。請參閱疑難排解容器化掃描。
映像檔提取失敗
錯誤:
failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized
主要原因:
這是因為尚未建立 AppScan 360° SAST 登錄密碼,或是目前的登錄密碼包含過期的認證所造成。
解決方案:
- 刪除先前的 AppScan 360° SAST 登錄密碼。
- 更新提供給部署 Script 的登錄使用者名稱和密碼。請參閱 部署配置參數
憑證過期
- 重新執行部署指令,提供新的憑證和個別的私密金鑰。
- 從保留內部元件憑證的名稱空間中刪除下列密碼。系統會自動重新產生密碼。
kubectl delete secret sast-service-tls gateway-tls workflow-manager-tls scan-manager-tls preparer-tls analyzer-tls ascp-adapter-tls sast-service-rabbitmq-tls --namespace hcl-appscan-sast
- 刪除名稱空間中的所有 pod。隨即會自動建立使用新產生的 TLS 密碼的新 pod。
kubectl delete --all pods --namespace=hcl-appscan-sast
全新安裝時部署失敗
錯誤:
Helm 部署作業失敗,並出現一般錯誤 - ERROR: Deploy SAST services - failed. Installation aborted!
主要原因:
先前在此叢集上嘗試升級失敗,因而在叢集上留下舊的密碼檔案。這些檔案會阻止新部署建立新部署所需的類似檔案。
解決方案:
請先執行取消部署指令,然後再嘗試全新安裝。請參閱 移除 AppScan 360° 靜態分析
無法存取服務
AppScan 360° SAST 應可透過作為部署 Script 參數提供的 FQDN (https://<sast-ingress-fqdn>
) 來存取。可能導致無法透過 FQDN 存取服務的錯誤例子包括:
- 錯誤:
- 無法連接至此站台。
-
主要原因:
若未安裝或正確配置輸入控制器,當嘗試從瀏覽器上指定的 FQDN 存取 AppScan 360° SAST 時,可能會出現此錯誤。
- 解決方案:
- 確認已在 Kubernetes 叢集上部署及執行輸入控制器。請檢閱必備項目一節以瞭解所有必要的相依關係。
-
確保配置輸入控制器時使用的靜態 IP 會解析為用於部署的 FQDN。
這可以透過在雲端 DNS 管理工具上建立記錄集或更新本端機器的 /etc/hosts 檔案來完成。
- 錯誤:
- 無法連接至此站台。
- 主要原因:
配置輸入時使用的 FQDN 與存取服務時使用的 FQDN 不同。此處的另一個問題可能是錯誤的 IP/DNS 對映。如果使用的 FQDN 與對映至輸入 IP 的值不同,則無法存取服務。
- 解決方案:
- 確認存取服務時使用的 FQDN 是否與傳遞至部署 Script 的值相符。
- 確認 FQDN 值對映至本端機器的 /etc/hosts 檔案或您的雲端 DNS 主機區域上的輸入 IP。
- 錯誤:
Kubernetes cluster unreachable: Get "http://localhost:8080/version": dial tcp [::1]:8080: connect: connection refused
- 主要原因:
此
config
檔案可能遺失或未正確配置,無法授與kubectl
存取權給叢集。 - 可能的解決方案:
-
確定
config
檔案存在.kube/config
中。 -
確定
.kube/config
由現行使用者擁有。 -
確定 .
kube/config
有正確的許可權。 -
匯出
KUBECONFIG
。
-
- 錯誤:
- 此處的錯誤訊息取決於主要原因
- 主要原因:
- Imagepullbackoff:這是 pod 失敗最常見的原因。當無法從所提供的儲存庫/儲存庫路徑提取映像檔時發生錯誤。
- CPU 不足,記憶體不足:當叢集節點集區的任何節點都不符合為 AppScan 360° SAST 設定的最小 CPU 和記憶體時,便會發生此錯誤。
- 解決方案:
- 確認部署時提供的儲存庫包含正在部署的映像檔。
- 確認所提供的儲存庫鑑別正確無誤。AppScan 360° SAST 部署需要準確的鑑別才能從儲存庫擷取映像檔。
- 確認節點集區具有足夠的記憶體和 CPU 資源,符合部署期間設定的最低需求。
- 如需詳細資料,請檢查 pod 錯誤日誌。
- 錯誤:
Failed to inject service URL to SAClientUtil ...
- 主要原因:
可能與 ASCP 伺服器發生連線問題,造成後續無法擷取公開金鑰。
- 解決方案:
-
驗證 ASCP 伺服器已啟動且正在執行。
-
驗證伺服器資訊、鑑別記號以及憑證和金鑰皆正確。
-
如需詳細資料,請檢查 pod 錯誤日誌。
-
- 錯誤:
掃描狀態顯示「正在起始設定」,但不會進一步繼續。
- 主要原因:
可能在 ASCP 與 AppScan 360° SAST 之間發生連線問題。
- 解決方案:
- 驗證 ASCP 伺服器使用正確的 AppScan 360° SAST URL 進行配置。
- 驗證 ASCP 伺服器機器可正確解析 AppScan 360° SAST 輸入 FQDN。
- 請參閱 ASCP 日誌,以取得詳細資料。