11장. AMQ Streams 관리
이 장에서는 AMQ Streams 배포를 유지보수하는 작업을 설명합니다.
11.1. 사용자 정의 리소스 작업 링크 복사링크가 클립보드에 복사되었습니다!
oc 명령을 사용하여 AMQ Streams 사용자 정의 리소스에서 정보를 검색하고 다른 작업을 수행할 수 있습니다.
oc 를 사용자 정의 리소스의 status 하위 리소스와 함께 사용하면 리소스에 대한 정보를 가져올 수 있습니다.
11.1.1. 사용자 정의 리소스에서 oc 작업 수행 링크 복사링크가 클립보드에 복사되었습니다!
get,describe,edit 또는 delete 등의 oc 명령을 사용하여 리소스 유형에 대한 작업을 수행합니다. 예를 들어 oc get kafkatopics 는 모든 Kafka 주제 목록을 검색하고 oc get kafkas 는 배포된 모든 Kafka 클러스터를 검색합니다.
리소스 유형을 참조할 때 단일 이름과 복수 이름을 모두 사용할 수 있습니다. oc get kafkas 는 oc get kafka 와 동일한 결과를 가져옵니다.
리소스의 짧은 이름을 사용할 수도 있습니다. 짧은 이름을 학습하면 AMQ Streams를 관리할 때 시간을 절약할 수 있습니다. Kafka 의 짧은 이름은 k 이므로 oc get k 를 실행하여 모든 Kafka 클러스터를 나열할 수도 있습니다.
oc get k NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS my-cluster 3 3
oc get k
NAME DESIRED KAFKA REPLICAS DESIRED ZK REPLICAS
my-cluster 3 3
| AMQ Streams 리소스 | 긴 이름 | 짧은 이름 |
|---|---|---|
| Kafka | kafka | k |
| Kafka Topic | kafkatopic | kt |
| Kafka 사용자 | kafkauser | ku |
| Kafka Connect | kafkaconnect | kc |
| Kafka Connector | kafkaconnector | kctr |
| Kafka Mirror Maker | kafkamirrormaker | kmm |
| Kafka 미러 메이커 2 | kafkamirrormaker2 | kmm2 |
| Kafka 브리지 | kafkabridge | kb |
| Kafka 리밸런스 | kafkarebalance | kr |
11.1.1.1. 리소스 카테고리 링크 복사링크가 클립보드에 복사되었습니다!
사용자 정의 리소스의 카테고리는 oc 명령에서도 사용할 수 있습니다.
모든 AMQ Streams 사용자 정의 리소스는 계층 구조에 속하므로 를 사용하여 하나의 명령으로 모든 AMQ Streams 리소스를 가져올 수 있습니다.
strimzi
예를 들어 oc get strimzi 를 실행하면 지정된 네임스페이스의 모든 AMQ Streams 사용자 정의 리소스가 나열됩니다.
oc get strimzi -o name 명령은 모든 리소스 유형 및 리소스 이름을 반환합니다. -o name 옵션은 유형/이름 형식으로 출력을 가져옵니다.
oc get strimzi -o name kafka.kafka.strimzi.io/my-cluster kafkatopic.kafka.strimzi.io/kafka-apps kafkauser.kafka.strimzi.io/my-user
oc get strimzi -o name
kafka.kafka.strimzi.io/my-cluster
kafkatopic.kafka.strimzi.io/kafka-apps
kafkauser.kafka.strimzi.io/my-user
이 strimzi 명령을 다른 명령과 결합할 수 있습니다. 예를 들어 oc delete 명령에 전달하여 단일 명령의 모든 리소스를 삭제할 수 있습니다.
oc delete $(oc get strimzi -o name) kafka.kafka.strimzi.io "my-cluster" deleted kafkatopic.kafka.strimzi.io "kafka-apps" deleted kafkauser.kafka.strimzi.io "my-user" deleted
oc delete $(oc get strimzi -o name)
kafka.kafka.strimzi.io "my-cluster" deleted
kafkatopic.kafka.strimzi.io "kafka-apps" deleted
kafkauser.kafka.strimzi.io "my-user" deleted
예를 들어 새 AMQ Streams 기능을 테스트할 때와 같이 단일 작업에서 모든 리소스를 삭제하는 것이 유용할 수 있습니다.
11.1.1.2. 하위 리소스의 상태 쿼리 링크 복사링크가 클립보드에 복사되었습니다!
-o 옵션으로 전달할 수 있는 다른 값이 있습니다. 예를 들어 -o yaml 을 사용하면 YAML 형식으로 출력을 얻을 수 있습니다. -o json 을 사용하면 JSON으로 반환됩니다.
oc get --help 에서 모든 옵션을 볼 수 있습니다.
가장 유용한 옵션 중 하나는 JSONPath 지원 이므로 JSONPath 표현식을 전달하여 Kubernetes API를 쿼리할 수 있습니다. JSONPath 표현식은 리소스의 특정 부분을 추출하거나 탐색할 수 있습니다.
예를 들어 JSONPath 표현식 {.status.listeners[?(@.name=="tls")].bootstrapServers} 를 사용하여 Kafka 사용자 정의 리소스의 상태에서 부트스트랩 주소를 가져와서 Kafka 클라이언트에서 사용할 수 있습니다.
여기에서 이 명령은 tls:이라는 리스너의 bootstrapServers 값을 찾습니다.
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
oc get kafka my-cluster -o=jsonpath='{.status.listeners[?(@.name=="tls")].bootstrapServers}{"\n"}'
my-cluster-kafka-bootstrap.myproject.svc:9093
이름 조건을 변경하면 다른 Kafka 리스너의 주소를 가져올 수도 있습니다.
jsonpath 를 사용하여 사용자 정의 리소스에서 다른 속성 또는 속성 그룹을 추출할 수 있습니다.
11.1.2. AMQ Streams 사용자 정의 리소스 상태 정보 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에 설명된 대로 여러 리소스에는 status 속성이 있습니다.
| AMQ Streams 리소스 | 스키마 참조 | …에 상태 정보를 게시합니다. |
|---|---|---|
|
| Kafka 클러스터입니다. | |
|
| 배포된 경우 Kafka Connect 클러스터입니다. | |
|
| 배포된 경우 KafkaConnector 리소스. | |
|
| 배포된 경우 Kafka MirrorMaker 툴입니다. | |
|
| Kafka 클러스터의 Kafka 주제입니다. | |
|
| Kafka 클러스터의 Kafka 사용자 | |
|
| 배포된 경우 AMQ Streams Kafka 브리지입니다. |
리소스의 status 속성은 리소스의 정보를 제공합니다.
-
status.conditions속성에서 현재 상태 -
status.observedGeneration속성에서 마지막으로 관찰된 생성
status 속성은 리소스 관련 정보도 제공합니다. 예를 들면 다음과 같습니다.
-
KafkaStatus는 리스너 주소 및 Kafka 클러스터의 ID에 대한 정보를 제공합니다. -
KafkaConnectStatus는 Kafka Connect 커넥터를 위한 REST API 엔드포인트를 제공합니다. -
KafkaUserStatus는 Kafka 사용자의 사용자 이름과 해당 인증 정보가 저장된Secret을 제공합니다. -
KafkaBridgeStatus는 외부 클라이언트 애플리케이션이 Bridge 서비스에 액세스할 수 있는 HTTP 주소를 제공합니다.
리소스의 현재 상태는 spec 속성에서 정의한 대로 원하는 상태를 달성하는 리소스와 관련된 진행 상황을 추적하는 데 유용합니다. 상태 조건은 리소스의 상태가 변경된 시간과 이유를 제공하고, 이로 인해 Operator가 리소스의 원하는 상태를 인식하거나 지연하지 못하도록 하는 이벤트의 세부 정보를 제공합니다.
마지막으로 관찰된 생성 은 Cluster Operator가 마지막으로 조정한 리소스의 생성입니다. observedGeneration 값이 metadata.generation 값과 다른 경우 Operator는 아직 리소스에 대한 최신 업데이트를 처리하지 않았습니다. 이러한 값이 동일한 경우 상태 정보는 리소스에 대한 최신 변경 사항을 반영합니다.
AMQ Streams는 사용자 정의 리소스의 현재 상태를 주기적으로 평가하고 그에 따라 상태를 업데이트하는 사용자 정의 리소스의 상태를 생성 및 유지 관리합니다. oc edit 를 사용하여 사용자 정의 리소스에서 업데이트를 수행할 때 (예: 해당 상태 ) 편집할 수 없습니다. 또한 상태를 변경하면 Kafka 클러스터 구성에 영향을 미치지 않습니다.
여기에서 Kafka 사용자 정의 리소스에 지정된 status 속성이 표시됩니다.
상태가 있는 Kafka 사용자 정의 리소스
- 1
- 상태
조건은기존 리소스 정보에서 추론할 수 없거나 리소스 인스턴스와 관련된 기준을 설명합니다. - 2
Ready조건은 Cluster Operator가 현재 트래픽을 처리할 수 있는 Kafka 클러스터를 간주하는지 여부를 나타냅니다.- 3
observedGeneration은 Cluster Operator가 마지막으로 조정한Kafka사용자 정의 리소스의 생성을 나타냅니다.- 4
리스너는 현재 Kafka 부트스트랩 주소를 유형별로 설명합니다.- 5
- Kafka 클러스터 ID입니다.중요
nodeport유형의 외부 리스너의 사용자 정의 리소스 상태의 주소는 현재 지원되지 않습니다.
상태에 나열된 Kafka 부트스트랩 주소는 해당 끝점 또는 Kafka 클러스터가 준비 상태에 있음을 표시하지 않습니다.
상태 정보 액세스
명령줄에서 리소스의 상태 정보에 액세스할 수 있습니다. 자세한 내용은 11.1.3절. “사용자 정의 리소스의 상태 찾기”의 내용을 참조하십시오.
11.1.3. 사용자 정의 리소스의 상태 찾기 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 사용자 정의 리소스의 상태를 찾는 방법을 설명합니다.
사전 요구 사항
- OpenShift 클러스터입니다.
- Cluster Operator가 실행 중입니다.
절차
사용자 정의 리소스를 지정하고
-o jsonpath옵션을 사용하여 표준 JSONPath 표현식을 적용하여status속성을 선택합니다.oc get kafka <kafka_resource_name> -o jsonpath='{.status}'oc get kafka <kafka_resource_name> -o jsonpath='{.status}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 표현식은 지정된 사용자 정의 리소스에 대한 모든 상태 정보를 반환합니다.
status.listeners또는status.observedGeneration과 같은 점 표기법을 사용하여 표시하려는 상태 정보를 미세 조정할 수 있습니다.