구성을 적용하고 하이브리드 helm 차트를 설치하기 전 Apigee Hybrid 설치를 위해 Kubernetes 클러스터가 준비되었는지 확인해야 합니다.
클러스터 준비를 확인하기 위해 Kubernetes 작업 정의를 사용하여 YAML 파일을 만들고 이 파일을 kubectl 명령어에 적용하여 클러스터를 확인합니다.
그런 다음 kubectl get jobs 명령어를 사용하여 Kubernetes 테스트 작업 상태를 확인합니다.
다음 명령어를 사용하여 kubectl이 올바른 컨텍스트로 설정되었는지 확인합니다.
현재 컨텍스트를 Apigee Hybrid를 배포하는 클러스터로 설정해야 합니다.
kubectl config current-context
결과에는 Apigee Hybrid를 배포하는 클러스터 이름이 포함됩니다. 예를 들어 GKE에서 컨텍스트 이름은 일반적으로 다음과 같이 gke_project-id_cluster-location_cluster-name 형식입니다.
gke_my-project_us-central1_my-cluster
이름이 컨텍스트의 클러스터 이름과 일치하지 않으면 다음 명령어는 클러스터의 gcloud 사용자 인증 정보를 가져오고 kubectl 컨텍스트를 설정합니다.
kubectl apply -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml
serviceaccount/apigee-k8s-cluster-ready-check created
job.batch/apigee-k8s-cluster-ready-check created
다음 명령어로 Kubernetes 작업 상태를 확인합니다.
kubectl get jobs apigee-k8s-cluster-ready-check
클러스터가 준비되면 출력이 다음과 같이 표시됩니다.
NAME COMPLETIONS DURATION AGE
apigee-k8s-cluster-ready-check 1/1 8s 1h23m
테스트가 실패하고 클러스터가 준비되지 않았으면 출력이 다음과 같이 표시됩니다.
NAME COMPLETIONS DURATION AGE
apigee-k8s-cluster-ready-check 0/1 44s 44s
완료 횟수를 확인합니다.
1/1 성공, Apigee Hybrid 설치를 위해 클러스터가 준비되었습니다.
0/1 테스트가 실패했습니다. 클러스터가 준비되지 않았습니다. 다음 단계를 진행하여 클러스터 문제를 해결합니다.
테스트가 실패하면 다음 명령어를 사용해서 로그를 확인합니다.
클러스터 사전 확인 작업의 포드 이름을 가져옵니다.
kubectl get pods | grep apigee-k8s-cluster-ready-check
포드의 Kubernetes 로그를 가져옵니다.
kubectl logs pod_name
여기서 pod_name은 apigee-k8s-cluster-ready-check 포드의 이름입니다.
다음 단계를 진행하기 전에 삭제합니다. 다음 명령어를 사용하여 Kubernetes 작업을 삭제합니다.
지금까지 Apigee Hybrid 클러스터가 준비된 것을 확인했습니다. 이제 차트를 설치하여 하이브리드 런타임에 구성을 적용합니다.
문제 해결
Cassandra DNS 확인: DNS resolution was successful but IP doesn't match POD IP, could not resolve hostname 또는 error determining hostname과 비슷한 오류 로그가 발견되면 멀티 리전 설정에 클러스터 DNS가 올바르게 구성되지 않은 것입니다. 멀티 리전을 설정하지 않으려면 이 오류를 무시해도 됩니다.
제어 영역 연결 확인: error creating TCP connection with host와 비슷한 오류 로그가 발견되면 클러스터의 연결을 apigee.googleapis.com으로 분석하고 작업을 다시 실행해야 합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eBefore installing Apigee hybrid, verify your Kubernetes cluster's readiness by creating and applying a YAML file containing a Kubernetes Job definition.\u003c/p\u003e\n"],["\u003cp\u003eUse the \u003ccode\u003ekubectl config current-context\u003c/code\u003e command to confirm that your \u003ccode\u003ekubectl\u003c/code\u003e is connected to the correct cluster for Apigee hybrid deployment.\u003c/p\u003e\n"],["\u003cp\u003eApply the \u003ccode\u003eapigee-k8s-cluster-ready-check.yaml\u003c/code\u003e file with \u003ccode\u003ekubectl\u003c/code\u003e to run the readiness test, and monitor its progress with \u003ccode\u003ekubectl get jobs apigee-k8s-cluster-ready-check\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eA successful test will show "1/1" completions in the job status, indicating that your cluster is ready, whereas "0/1" means the cluster is not ready and requires troubleshooting.\u003c/p\u003e\n"],["\u003cp\u003eClean up after the test, by deleting the Kubernetes job and service account using \u003ccode\u003ekubectl delete -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Step 10: Check cluster readiness\n\n| You are currently viewing version 1.12 of the Apigee hybrid documentation. **This version is end of life.** You should upgrade to a newer version. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n\nCheck hybrid cluster readiness\n------------------------------\n\nBefore applying your configuration and installing the hybrid helm charts, you should\ncheck that your Kubernetes cluster is ready for Apigee hybrid installation.\n\n\nTo check the readiness of your cluster, you will create a YAML file with a Kubernetes Job\ndefinition and apply that file with `kubectl` commands to check the cluster.\nYou then check the status of the Kubernetes test job with a `kubectl get jobs` command.\n\n1. Verify that `kubectl` is set to the correct context using the following command. The current context should be set to the cluster to which you are deploying Apigee hybrid. \n\n ```\n kubectl config current-context\n ```\n\n The result should include the name of the cluster you are deploying Apigee hybrid in. For\n example, on GKE, the context name is usually in the form\n `gke_`\u003cvar translate=\"no\"\u003eproject-id\u003c/var\u003e`_`\u003cvar translate=\"no\"\u003ecluster-location\u003c/var\u003e`_`\u003cvar translate=\"no\"\u003ecluster-name\u003c/var\u003e, as\n in: \n\n ```\n gke_my-project_us-central1_my-cluster\n ```\n\n If the name cluster name in the context does not match, the following command will get the\n `gcloud` credentials of the cluster and set the `kubectl` context:\n\n ### Regional clusters\n\n ```\n gcloud container clusters get-credentials $CLUSTER_NAME \\\n --region $CLUSTER_LOCATION \\\n --project $PROJECT_ID\n ```\n\n ### Zonal clusters\n\n ```\n gcloud container clusters get-credentials $CLUSTER_NAME \\\n --zone $CLUSTER_LOCATION \\\n --project $PROJECT_ID\n ```\n2. In your helm-charts directory, create a `cluster-check` directory: \n\n ```\n mkdir $APIGEE_HELM_CHARTS_HOME/cluster-check\n ```\n3. In the `$APIGEE_HELM_CHARTS_HOME/cluster-check` directory, create a file named `apigee-k8s-cluster-ready-check.yaml` with the following contents: \n\n ```\n apiVersion: v1\n kind: ServiceAccount\n metadata:\n name: apigee-k8s-cluster-ready-check\n ---\n apiVersion: rbac.authorization.k8s.io/v1\n kind: ClusterRoleBinding\n metadata:\n name: cluster-check-admin\n roleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: ClusterRole\n name: cluster-admin\n subjects:\n - apiGroup: \"\"\n kind: ServiceAccount\n namespace: default\n name: apigee-k8s-cluster-ready-check\n ---\n apiVersion: batch/v1\n kind: Job\n metadata:\n name: apigee-k8s-cluster-ready-check\n spec:\n template:\n spec:\n hostNetwork: true\n serviceAccountName: apigee-k8s-cluster-ready-check\n containers:\n - name: manager\n image: gcr.io/apigee-release/hybrid/apigee-operators:1.12.4\n command:\n - /manager\n args:\n - --k8s-cluster-ready-check\n env:\n - name: POD_IP\n valueFrom:\n fieldRef:\n fieldPath: status.podIP\n securityContext:\n runAsGroup: 998\n runAsNonRoot: true\n runAsUser: 999\n restartPolicy: Never\n backoffLimit: 1\n ```\n4. Apply the `apigee-k8s-cluster-ready-check.yaml` with the following `kubectl` command. This will run the test: \n\n ```\n kubectl apply -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml\n ```\n\n\n The output should show that the service account and job were created. For example: \n\n kubectl apply -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml\n serviceaccount/apigee-k8s-cluster-ready-check created\n job.batch/apigee-k8s-cluster-ready-check created\n\n5. Check the status of the Kubernetes job with the following command: \n\n ```\n kubectl get jobs apigee-k8s-cluster-ready-check\n ```\n\n\n If your cluster is ready, the output should look something like: \n\n ```\n NAME COMPLETIONS DURATION AGE\n apigee-k8s-cluster-ready-check 1/1 8s 1h23m\n ```\n\n\n If the test failed and your cluster is not ready, the output will look something like: \n\n ```\n NAME COMPLETIONS DURATION AGE\n apigee-k8s-cluster-ready-check 0/1 44s 44s\n ```\n\n Look for the number of completions:\n - **1/1** Success, your cluster is ready for Apigee hybrid installation.\n - **0/1** The test failed. The cluster is not ready. Proceed to the following steps to troubleshoot the cluster.\n\n \u003cbr /\u003e\n\n6. If the test did not succeed, check the logs with the following commands.\n 1. Get the name of the pod for the cluster pre-check job: \n\n ```\n kubectl get pods | grep apigee-k8s-cluster-ready-check\n ```\n 2. Get the Kubernetes logs for the pod: \n\n ```\n kubectl logs pod_name\n ```\n\n\n Where \u003cvar translate=\"no\"\u003epod_name\u003c/var\u003e is the name of the apigee-k8s-cluster-ready-check pod.\n7. Clean up before proceeding to the next step. Delete the Kubernetes job with the following command: \n\n ```\n kubectl delete -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml\n ```\n\n\n The output should show that the service account and job were deleted. For example: \n\n kubectl delete -f $APIGEE_HELM_CHARTS_HOME/cluster-check/apigee-k8s-cluster-ready-check.yaml\n serviceaccount \"apigee-k8s-cluster-ready-check\" deleted\n job.batch \"apigee-k8s-cluster-ready-check\" deleted\n\n| **Tip:** On some platforms, like Google Distributed Cloud, you may see DNS resolution errors. If the DNS resolution is not working, try this workaround.\n|\n|\n| Add a static host entry in `/etc/hosts` file of each cassandra worker node\n| similar to the following: \n|\n| ```\n| echo -e \"\\\\n127.0.1.1 ${HOSTNAME}\" \u003e\u003e \"/etc/hosts\"\n| ```\n|\n|\n| or \n|\n| ```\n| \"\\\\nWORKER-NODE-IP ${HOSTNAME}\" \u003e\u003e \"/etc/hosts\"\n| ```\n\nYou have now made sure your Apigee hybrid cluster is ready. Next, let's install the charts to\napply your configuration to the hybrid runtime.\n\nTroubleshooting\n---------------\n\n1. Cassandra DNS check: If you find error logs similar to `DNS resolution was successful but IP doesn't match POD IP`, `could not resolve hostname` or `error determining hostname` it means your cluster DNS is not configured correctly for a multi-region setup. You can ignore this error if you do not intend to set up multi-region.\n2. Control Plane connectivity check: If you find error logs similar to `error creating TCP connection with host` then you need to resolve the connectivity from cluster to apigee.googleapis.com and re-run the job.\n\nNext step\n---------\n\n\u003cbr /\u003e\n\n[1](/apigee/docs/hybrid/v1.12/install-create-cluster) [2](/apigee/docs/hybrid/v1.12/install-download-charts) [3](/apigee/docs/hybrid/v1.12/install-create-namespace) [4](/apigee/docs/hybrid/v1.12/install-service-accounts) [5](/apigee/docs/hybrid/v1.12/install-create-tls-certificates) [6](/apigee/docs/hybrid/v1.12/install-create-overrides) [7](/apigee/docs/hybrid/v1.12/install-enable-synchronizer-access) [8](/apigee/docs/hybrid/v1.12/install-cert-manager) [9](/apigee/docs/hybrid/v1.12/install-crds) [10](/apigee/docs/hybrid/v1.12/install-check-cluster) [(NEXT) Step 11: Install Apigee hybrid using Helm charts](/apigee/docs/hybrid/v1.12/install-helm-charts) [12](/apigee/docs/hybrid/v1.12/install-workload-identity)\n\n\u003cbr /\u003e"]]