Использование Ranger для Impala в Kubernetes
Требования
-
Установленный и функционирующий кластер ADPS версии 2.0.0 или более поздней.
-
Установленный и функционирующий кластер ADH версии 4.2.0 или более поздней.
-
Impala, установленная согласно инструкции.
Шаг 1. Создание сервиса в Ranger
На данном шаге описывается создание сервиса с помощью REST API Ranger. Вы также можете создать сервис в веб-интерфейсе Ranger.
-
Создайте конфигурацию сервиса в JSON-файле:
ranger-impala-k8s.json{ "isEnabled": true, "type": "hive", "name": "impala_k8s", (1) "displayName": "impala_k8s", "description": "Service for Kubernetes Impala", "configs": { "username": "impala", (2) "password": "bigdata", (3) "ranger.plugin.audit.filters": "[ {'accessResult': 'DENIED', 'isAudited': true}, {'actions':['METADATA OPERATION'], 'isAudited': false}, {'users':['hive','hue'],'actions':['SHOW_ROLES'],'isAudited':false} ]", "jdbc.driverClassName": "org.apache.hive.jdbc.HiveDriver", "jdbc.url": "jdbc:impala://10.92.41.149:21050" (4) } }1 Наименование сервиса Impala в Ranger. Данное имя должно быть уникальным. 2 Имя пользователя для сервиса. 3 Пароль для сервиса. 4 JDBC-строка подключения к Impala, предоставляемая балансировщиком нагрузки. -
Загрузите конфигурацию сервиса в Ranger:
$ curl -u admin:<admin_pwd> -H "Content-Type: application/json" -X POST -d @ranger-impala-k8s.json http://<ranger-admin>:6080/service/public/v2/api/service
Шаг 2. Обновление секретов Kubernetes
-
Подготовьте секреты (secret) с конфигурацией Hadoop. В текущем секрете конфигурации Hadoop уже должны быть ключи core-site.xml, hdfs-site.xml и hive-site.xml. Для интеграции с Ranger добавьте следующие ключи:
-
ranger-impala-security.xml — настройка плагина Ranger.
ranger-impala-security.xml<?xml version="1.0" encoding="UTF-8"?> <configuration> <property> <name>ranger.plugin.impala.policy.cache.dir</name> <value>/srv/ranger/impala/policycache</value> </property> <property> <name>ranger.plugin.impala.service.name</name> <value>impala_k8s</value> (1) </property> <property> <name>ranger.plugin.impala.policy.rest.url</name> <value>http://tsn-adps2-1.ru-central1.internal:6080</value> (2) </property> <property> <name>ranger.plugin.impala.policy.source.impl</name> <value>org.apache.ranger.admin.client.RangerAdminRESTClient</value> </property> <property> <name>ranger.plugin.impala.username</name> <value>impala</value> (3) </property> <property> <name>ranger.plugin.impala.password</name> <value>bigdata</value> (4) </property> <property> <name>ranger.plugin.impala.use.rangerGroups</name> <value>True</value> </property> <property> <name>ranger.plugin.impala.use.only.rangerGroups</name> <value>True</value> </property> </configuration>1 Наименование сервиса Impala в Ranger. 2 URL, по которому доступен Ranger Admin. 3 Имя пользователя для сервиса. 4 Пароль для сервиса. Если активен SSL, добавьте следующее свойство:
<property> <name>ranger.plugin.impala.policy.rest.ssl.config.file</name> <value>/opt/impala/conf/ranger-impala-policymgr-ssl.xml</value> (1) </property>1 Наименование файла с настройками SSL для Ranger. -
ranger-impala-audit.xml — настройки аудита Ranger.
ranger-impala-audit.xml<configuration> <property> <name>xasecure.audit.destination.solr</name> <value>true</value> </property> <property> <name>xasecure.audit.destination.solr.batch.filespool.dir</name> <value>/srv/ranger/impala_k8s/audit_solr_spool</value> </property> <property> <name>xasecure.audit.destination.solr.zookeepers</name> <value>tsn-adps2-1.ru-central1.internal:2181/Arenadata.Hadoop-3.solr.server</value> (1) </property> <property> <name>xasecure.audit.is.enabled</name> <value>True</value> </property> </configuration>1 Строка подключения к ZooKeeper в формате <host-1>:<port-1>…<host-N>:<port-N>/Arenadata.Hadoop-<cluster_id>.solr.server.Если активирован Kerberos, добавьте следующие свойства:
<property> <name>xasecure.audit.jaas.Client.loginModuleControlFlag</name> <value>required</value> </property> <property> <name>xasecure.audit.jaas.Client.loginModuleName</name> <value>com.sun.security.auth.module.Krb5LoginModule</value> </property> <property> <name>xasecure.audit.jaas.Client.option.keyTab</name> <value>/opt/impala/kerberos/keytab</value> (1) </property> <property> <name>xasecure.audit.jaas.Client.option.principal</name> <value>impala/impala-cloud.ru-central1.internal@RU-CENTRAL1.INTERNAL</value> (2) </property> <property> <name>xasecure.audit.jaas.Client.option.serviceName</name> <value>solr</value> </property> <property> <name>xasecure.audit.jaas.Client.option.storeKey</name> <value>False</value> </property> <property> <name>xasecure.audit.jaas.Client.option.useKeyTab</name> <value>True</value> </property>1 Путь к keytab-файлу внутри пода. 2 Имя принципала для сервиса Impala. -
ranger-impala-policymgr-ssl.xml — настройки SSL для Ranger (если SSL активен).
ranger-impala-policymgr-ssl.xml<configuration> <property> <name>xasecure.policymgr.clientssl.truststore</name> <value>/etc/ssl/truststore.jks</value> (1) </property> <property> <name>xasecure.policymgr.clientssl.truststore.credential.file</name> <value>jceks://file/opt/impala/conf/ranger-impala.jceks</value> (2) </property> </configuration>1 Путь к truststore. 2 Путь к файлу с данными для доступа к truststore.
-
-
Обновите секрет с конфигурацией Hadoop:
$ kubectl delete secret <hadoop-config> -n <impala-cluster-ns> $ kubectl create secret generic <hadoop-config> -n <impala-cluster-ns> --from-file=<hadoop-conf-folder>где:
-
<hadoop-config>— название секрета с конфигурацией Hadoop. -
<impala-cluster-ns>— пространство имен, используемое кластером Impala cluster. -
<hadoop-conf-folder>— директория с файлами, из которых генерируется секрет. Если вы передаете секреты в виде строк в файле values.yaml, укажите путь к этому файлу.
-
Шаг 3. Обновление кластера Impala
-
Обновите конфигурационный файл кластера Impala:
impala-cluster-values.yamlimage: registry: "<image_registry>" repository: "<image_repository>" tag: "<image_tag>" pullPolicy: Always useRanger: true clusterDomain: cluster.local configsSecretName: <hadoop-config> catalog: coordinator: executor: replicas: 2 statestore:Все необходимые для работы кластера параметры уже должны быть объявлены в файле, однако необходимо присвоить параметру
useRangerзначениеtrue. -
Обновите инсталляцию кластера Impala:
$ helm upgrade --install impala-cluster oci://"$PRIVATE_REGISTRY"/adc-enterprise/charts/impala-cluster --version <version> -f impala-cluster-values.yaml --namespace <impala-cluster-ns> --create-namespace -
Удалите старые поды кластера, чтобы оператор Impala создал новые с обновленной конфигурацией:
$ kubectl delete pods -n <impala-cluster-ns> -l app.kubernetes.io/instance=impala -
Проверьте, что все поды имеют состояние
Running:$ kubectl get pods -n <impala-cluster-ns>Ожидаемый вывод:
NAME READY STATUS RESTARTS AGE impala-cluster-catalog-0 1/1 Running 0 65m impala-cluster-coordinator-0 1/1 Running 0 65m impala-cluster-executor-0 1/1 Running 0 65m impala-cluster-executor-1 1/1 Running 0 65m impala-cluster-statestore-0 1/1 Running 0 65m