簡體   English   中英

通過 ansible-operator 創建的 Kube.netes CR 的提取狀態

[英]Extract status of Kubernetes CR created via ansible-operator

我是 json 查詢的新手。 面臨提取status.conditions[ansibleResult].type的問題

我定義了一個 CRD 並針對它創建了 CR,它由在后台運行 ansible 的 operator-sdk 獲取。 一旦 CR 被 operator-sdk 接受和處理,我將更新 CRD 以提供相關狀態。

json 中的 CR output 如下所示。

{
    "apiVersion": "vault.cpe.oraclecloud.com/v1alpha1",
    "kind": "OciVaultKeys",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"vault.cpe.oraclecloud.com/v1alpha1\",\"kind\":\"OciVaultKeys\",\"metadata\":{\"annotations\":{},\"name\":\"operator-key-broken\",\"namespace\":\"tms\"},\"spec\":{\"freeformTags\":[{\"key\":\"Type\",\"value\":\"Optional-Values-Added\"}],\"ociVaultKeyName\":\"operator-key-broken\",\"ociVaultKeyShapeAlgorithm\":\"RSA\",\"ociVaultKeyShapeLength\":32,\"ociVaultName\":\"ocivault-sample-12\"}}\n"
        },
        "creationTimestamp": "2022-03-18T07:43:03Z",
        "finalizers": [
            "vault.cpe.oraclecloud.com/finalizer"
        ],
        "generation": 1,
        "name": "operator-key-broken",
        "namespace": "tms",
        "resourceVersion": "717880023",
        "selfLink": "/apis/vault.cpe.oraclecloud.com/v1alpha1/namespaces/tms/ocivaultkeys/operator-key-broken",
        "uid": "0d634e72-f592-48e0-be9b-ebfa017b2dfe"
    },
    "spec": {
        "freeformTags": [
            {
                "key": "Type",
                "value": "Optional-Values-Added"
            }
        ],
        "ociVaultKeyName": "operator-key-broken",
        "ociVaultKeyShapeAlgorithm": "RSA",
        "ociVaultKeyShapeLength": 32,
        "ociVaultName": "ocivault-sample-12"
    },
    "status": {
        "conditions": [
            {
                "lastTransitionTime": "2022-03-18T07:43:27Z",
                "message": "",
                "reason": "",
                "status": "False",
                "type": "Successful"
            },
            {
                "lastTransitionTime": "2022-03-18T08:26:08Z",
                "message": "Running reconciliation",
                "reason": "Running",
                "status": "False",
                "type": "Running"
            },
            {
                "ansibleResult": {
                    "changed": 0,
                    "completion": "2022-03-18T08:26:24.217728",
                    "failures": 1,
                    "ok": 14,
                    "skipped": 1
                },
                "lastTransitionTime": "2022-03-18T08:26:25Z",
                "message": "The task includes an option with an undefined variable. The error was: No first item, sequence was empty.\n\nThe error appears to be in '/home/opc/cpe-workstation/mr_folder/workspace-2/osvc-kubernetes-operators/oci-services/roles/ocivaultkeys/tasks/fetch_vault_details_oci.yml': line 12, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: DEBUG | Fetch Vault Details | Extract Vault OCID n service_endpoint in source region\n  ^ here\n",
                "reason": "Failed",
                "status": "True",
                "type": "Failure"
            }
        ]
    }
}

我希望在 CRD 中可靠地提取status.conditions[].type (對於元素 ansibleResult)。

CRD定義摘錄如下

  - name: v1alpha1
    served: true
    storage: true
    additionalPrinterColumns:
      - description: 'Status of the OCI Vault Key'
        jsonPath: .status.conditions[-1].type
        name: STATUS
        type: string
        priority: 0

CRD 正在尋找要提取的 jsonPath 表達式。

謝謝

請嘗試以下操作:

kubectl get ocivaultkeys operator-key-broken -o jsonpath='{.status.conditions[?(@.ansibleResult)].type}'

預期 output: Failure

jsonpath幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM