Образ АтивногоШюза в контейнере
Ключ-АСТРОМ поддерживает запуск АктивногоШлюза в контейнере. В качестве примера развертывания на основе контейнера эта страница описывает, как развернуть АктивныйШлюз на основе контейнера с использованием StatefulSet в Kubernetes/OpenShift.
Предустановка
- Создайте токен доступа
InstallerDownloadс областью действия - Создайте токен аутентификации
- Определите конечные точки связи АктивногоШлюза и аутентификацию. Используйте информацию о подключении GET для API АктивногоШлюза.
- Получите UUID вашего пространства имен kube-system
Системные требования
Образ АктивногоШлюза Ключ-АСТРОМ поддерживается различными версиями Kubernetes и OpenShift. Полный список см. в разделе Поддержка технологий - Kubernetes.
Образы доступны для следующих архитектур:
- x86-64
- ARM64 (AArch64)
- s390x
Директории контейнеров
Чтобы обеспечить бесперебойную интеграцию с вашими инструментами и адаптируемость к вашим потребностям, мы предлагаем наши образы контейнеров различными способами, обеспечивающими максимальную гибкость:
- Встроенная директория Ключ-АСТРОМ (по умолчанию)
- Общедоступные директории
- Ваша собственная директория (рекомендуется)
Обратите внимание, что многоархитектурные образы контейнеров Ключ-АСТРОМ, поддерживающие архитектуры ЦП ARM64 (AArch64) и x86-64 на Linux, обеспечивающие совместимость на различных платформах, доступны только из общедоступных директорий. Встроенная директория Ключ-АСТРОМ предоставляет образы только x86-64.
Развертывание
Ключ-АСТРОМ предоставляет подписанные образы контейнеров для обеспечения подлинности и целостности, а также SBOM, в которых перечислены все включенные программные компоненты. Проверка подписей и просмотр SBOM позволяют эффективно управлять уязвимостями и снижать риски. Подробности проверки см. в разделе Проверка подписей образов Ключ-АСТРОМ.
Частная или общедоступная директория
- Создайте выделенное пространство имен.
- Kubernetes
kubectl create namespace astromkey - OpenShift
oc adm new-project --node-selector="" astromkey
- Kubernetes
- Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивныйШлюз.
- Kubernetes
kubectl -n astromkey create secret generic astromkey-tokens \--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \--from-literal=auth-token=<YOUR_AUTH_TOKEN> - OpenShift
oc -n astromkey create secret generic astromkey-tokens \--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \--from-literal=auth-token=<YOUR_AUTH_TOKEN>
Вам нужно заменить<YOUR_TENANT_TOKEN>c значениемtenantToken, полученным в Предустановке из информации о подключении.<YOUR_AUTH_TOKEN>с индивидуальным токеном АктивногоШлюза, полученным в Предустановке.
- Kubernetes
- Создайте файл
ag-deployment-example.yamlсо следующим содержимым: ag-deployment-example.yamlapiVersion: v1kind: Servicemetadata:name: astromkey-activegatenamespace: astromkeyspec:type: ClusterIPselector:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegateports:- protocol: TCPport: 443targetPort: ag-https---apiVersion: apps/v1kind: StatefulSetmetadata:name: astromkey-activegatenamespace: astromkeylabels:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegatespec:podManagementPolicy: ParallelserviceName: ""selector:matchLabels:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegatetemplate:metadata:labels:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegatespec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/archoperator: Invalues:- <CPU_ARCHITECTURE>- key: kubernetes.io/osoperator: Invalues:- linuxcontainers:- name: activegateimage: <REPOSITORY_URL>/astromkey-activegate:<IMAGE_TAG>imagePullPolicy: Alwaysports:- containerPort: 9999name: ag-httpsprotocol: TCPenv:- name: DT_TENANTvalue: <YOUR_ENVIRONMENT_ID>- name: DT_SERVERvalue: <YOUR_COMMUNICATION_ENDPOINTS>- name: DT_ID_SEED_NAMESPACEvalue: astromkey- name: DT_ID_SEED_K8S_CLUSTER_IDvalue: <YOUR_KUBE-SYSTEM_NAMESPACE_UUID>- name: DT_CAPABILITIESvalue: restInterface,kubernetes_monitoring,MSGrouter,metrics_ingest- name: DT_DEPLOYMENT_METADATAvalue: orchestration_tech=handcrated-ag-sts;script_version=none;orchestrator_id=none- name: DT_DNS_ENTRY_POINTvalue: https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communicationvolumeMounts:- name: astromkey-tokensmountPath: /var/lib/astromkey/secrets/tokens- name: truststore-volumemountPath: /opt/astromkey/gateway/jre/lib/security/cacertsreadOnly: truesubPath: k8s-local.jks- name: server-certs-storagemountPath: /var/lib/astromkey/gateway/ssl- name: ag-lib-gateway-configmountPath: /var/lib/astromkey/gateway/config- name: ag-lib-gateway-tempmountPath: /var/lib/astromkey/gateway/temp- name: ag-lib-gateway-datamountPath: /var/lib/astromkey/gateway/data- name: ag-log-gatewaymountPath: /var/log/astromkey/gateway- name: ag-tmp-gatewaymountPath: /var/tmp/astromkey/gatewaylivenessProbe:failureThreshold: 2httpGet:path: /rest/stateport: ag-httpsscheme: HTTPSinitialDelaySeconds: 30periodSeconds: 30successThreshold: 1timeoutSeconds: 1readinessProbe:failureThreshold: 3httpGet:path: /rest/healthport: ag-httpsscheme: HTTPSinitialDelaySeconds: 30periodSeconds: 15successThreshold: 1timeoutSeconds: 1resources:requests:cpu: 500mmemory: 512Milimits:cpu: 1000mmemory: 1.5GisecurityContext:allowPrivilegeEscalation: falsecapabilities:drop:- allprivileged: falsereadOnlyRootFilesystem: truerunAsNonRoot: trueseccompProfile:type: RuntimeDefaultinitContainers:- name: certificate-loaderimage: <REPOSITORY_URL>/astromkey-activegate:<IMAGE_TAG>workingDir: /var/lib/astromkey/gatewaycommand: ['/bin/bash']args: ['-c', '/opt/astromkey/gateway/k8scrt2jks.sh']volumeMounts:- mountPath: /var/lib/astromkey/gateway/sslname: truststore-volumevolumes:- name: truststore-volumeemptyDir: {}- name: astromkey-tokenssecret:secretName: astromkey-tokens- name: server-certs-storageemptyDir: {}- name: ag-lib-gateway-configemptyDir: {}- name: ag-lib-gateway-tempemptyDir: {}- name: ag-lib-gateway-dataemptyDir: {}- name: ag-log-gatewayemptyDir: {}- name: ag-tmp-gatewayemptyDir: {}updateStrategy:type: RollingUpdate - Измените файл YAML развертывания. Добавьте в файл
ag-deployment-example.yamlсведения о конфигурации среды, обязательно заменив:CPU_ARCHITECTUREc архитектурой вашего процессора. Возможные значения:amd64,arm64, иs390x<REPOSITORY_URL>c одним из поддерживаемых реестров<IMAGE_TAG>c правильным тегом образа<YOUR_ENVIRONMENT_ID>с вашим идентификатором среды Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже.- SaaS:
https://{your-environment-id}.live.astromkey.com - Managment:
https://{your-domain}/e/{your-environment-id}
- SaaS:
<YOUR_COMMUNICATION_ENDPOINTS>c значениемcommunicationEndpoints, полученным в Предустановке из информации о подключении Список конечных точек связи с сервером (communicationEndpoints) может со временем меняться.<YOUR_KUBE-SYSTEM_NAMESPACE_UUID>с UUID пространства имен kube-system, полученным в Предустановке Параметры:- необязательный Включите AppArmor, если он доступен. Для обеспечения совместимости с более широким спектром кластеров Kubernetes профиль AppArmor не указан в
ag-deployment-example.yaml. Если AppArmor доступен в вашем кластере Kubernetes, мы рекомендуем вам дополнительно аннотировать StatefulSet с помощью профиляruntime/default.spec:template:metadata:annotations:container.apparmor.security.beta.kubernetes.io/activegate: runtime/default - необязательный Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. Дополнительные параметры конфигурации см. в разделе Конфигурация АктивныхШлюзов.
- Развертывание АктивногоШлюза.
- Kubernetes
kubectl apply -f ./ag-deployment-example.yaml - OpenShift
oc apply -f ./ag-deployment-example.yaml
- Kubernetes
- Чтобы убедиться, что АктившныйШлюз успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > АктивныйШлюз.
Встроенная директория Ключ-АСТРОМ
- Создайте выделенное пространство имен.
- Kubernetes
kubectl create namespace astromkey - OpenShift
oc adm new-project --node-selector="" astromkey
- Kubernetes
- Создайте ключ, содержащий URL-адрес среды и данные аутентификации для этого реестра.
- Kubernetes
kubectl -n astromkey create secret docker-registry astromkey-docker-registry \--docker-server=<YOUR_ENVIRONMENT_URL> \--docker-username=<YOUR_ENVIRONMENT_ID> \--docker-password=<YOUR_INSTALLER_DOWNLOAD_TOKEN> - OpenShift
oc -n astromkey create secret docker-registry astromkey-docker-registry \--docker-server=<YOUR_ENVIRONMENT_URL> \--docker-username=<YOUR_ENVIRONMENT_ID> \--docker-password=<YOUR_INSTALLER_DOWNLOAD_TOKEN> -n astromkey
Вам нужно заменить<YOUR_ENVIRONMENT_URL>с URL вашей среды (безhttps://). Пример:abc12345.live.astromkey.com<YOUR_ENVIRONMENT_ID>с именем пользователя учетной записи Docker (таким же, как идентификатор в URL-адресе вашей среды выше). Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже.- SaaS-решение:
https://{your-environment-id}.live.astromkey.com - Managed:
https://{your-domain}/e/{your-environment-id} <YOUR_INSTALLER_DOWNLOAD_TOKEN>с токеном доступаInstallerDownloadс областью действия, созданной вами в разделе Предустановка.
- SaaS-решение:
- Kubernetes
- Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивнымШлюзом.
- Kubernetes
kubectl -n astromkey create secret generic astromkey-tokens \--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \--from-literal=auth-token=<YOUR_AUTH_TOKEN> - OpenShift
oc -n astromkey create secret generic astromkey-tokens \--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \--from-literal=auth-token=<YOUR_AUTH_TOKEN>Вам нужно заменить<YOUR_TENANT_TOKEN>с значениемtenantToken, полученным в Предустановке из информации о подключении.<YOUR_AUTH_TOKEN>с индивидуальным токеном АктивногоШлюза, полученным в Предустановке.
- Kubernetes
- Создайте файл
ag-deployment-example.yamlсо следующим содержимым: ag-deployment-example.yamlapiVersion: v1kind: Servicemetadata:name: astromkey-activegatenamespace: astromkeyspec:type: ClusterIPselector:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegateports:- protocol: TCPport: 443targetPort: ag-https---apiVersion: apps/v1kind: StatefulSetmetadata:name: astromkey-activegatenamespace: astromkeylabels:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegatespec:podManagementPolicy: ParallelserviceName: ""selector:matchLabels:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegatetemplate:metadata:labels:app.kubernetes.io/component: activegatecomponent.astromkey.com/feature: activegatespec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: kubernetes.io/archoperator: Invalues:- amd64- key: kubernetes.io/osoperator: Invalues:- linuxcontainers:- name: activegateimage: <YOUR_ENVIRONMENT_URL>/linux/activegate:rawimagePullPolicy: Alwaysports:- containerPort: 9999name: ag-httpsprotocol: TCPenv:- name: DT_TENANTvalue: <YOUR_ENVIRONMENT_ID>- name: DT_SERVERvalue: <YOUR_COMMUNICATION_ENDPOINTS>- name: DT_ID_SEED_NAMESPACEvalue: astromkey- name: DT_ID_SEED_K8S_CLUSTER_IDvalue: <YOUR_KUBE-SYSTEM_NAMESPACE_UUID>- name: DT_CAPABILITIESvalue: restInterface,kubernetes_monitoring,MSGrouter,metrics_ingest- name: DT_DEPLOYMENT_METADATAvalue: orchestration_tech=handcrated-ag-sts;script_version=none;orchestrator_id=none- name: DT_DNS_ENTRY_POINTvalue: https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communicationvolumeMounts:- name: astromkey-tokensmountPath: /var/lib/astromkey/secrets/tokens- name: truststore-volumemountPath: /opt/astromkey/gateway/jre/lib/security/cacertsreadOnly: truesubPath: k8s-local.jks- name: server-certs-storagemountPath: /var/lib/astromkey/gateway/ssl- name: ag-lib-gateway-configmountPath: /var/lib/astromkey/gateway/config- name: ag-lib-gateway-tempmountPath: /var/lib/astromkey/gateway/temp- name: ag-lib-gateway-datamountPath: /var/lib/astromkey/gateway/data- name: ag-log-gatewaymountPath: /var/log/astromkey/gateway- name: ag-tmp-gatewaymountPath: /var/tmp/astromkey/gatewaylivenessProbe:failureThreshold: 2httpGet:path: /rest/stateport: ag-httpsscheme: HTTPSinitialDelaySeconds: 30periodSeconds: 30successThreshold: 1timeoutSeconds: 1readinessProbe:failureThreshold: 3httpGet:path: /rest/healthport: ag-httpsscheme: HTTPSinitialDelaySeconds: 30periodSeconds: 15successThreshold: 1timeoutSeconds: 1resources:requests:cpu: 500mmemory: 512Milimits:cpu: 1000mmemory: 1.5GisecurityContext:allowPrivilegeEscalation: falsecapabilities:drop:- allprivileged: falsereadOnlyRootFilesystem: truerunAsNonRoot: trueseccompProfile:type: RuntimeDefaultinitContainers:- name: certificate-loaderimage: <YOUR_ENVIRONMENT_URL>/linux/activegate:rawworkingDir: /var/lib/astromkey/gatewaycommand: ['/bin/bash']args: ['-c', '/opt/astromkey/gateway/k8scrt2jks.sh']volumeMounts:- mountPath: /var/lib/astromkey/gateway/sslname: truststore-volumeimagePullSecrets:- name: astromkey-docker-registryvolumes:- name: truststore-volumeemptyDir: {}- name: astromkey-tokenssecret:secretName: astromkey-tokens- name: server-certs-storageemptyDir: {}- name: ag-lib-gateway-configemptyDir: {}- name: ag-lib-gateway-tempemptyDir: {}- name: ag-lib-gateway-dataemptyDir: {}- name: ag-log-gatewayemptyDir: {}- name: ag-tmp-gatewayemptyDir: {}updateStrategy:type: RollingUpdate - Измените файл YAML развертывания. Добавьте в файл
ag-deployment-example.yamlсведения о конфигурации среды, обязательно заменив:<YOUR_ENVIRONMENT_URL>с URL вашей среды (безhttps://). Пример:abc12345.live.astromkey.com<YOUR_ENVIRONMENT_ID>с именем пользователя учетной записи Docker (таким же, как идентификатор в URL-адресе вашей среды выше) Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже.- SaaS-решение:
https://{your-environment-id}.live.astromkey.com - Managed:
https://{your-domain}/e/{your-environment-id}
- SaaS-решение:
<YOUR_COMMUNICATION_ENDPOINTS>c значениемcommunicationEndpoints, полученным в Предустановке из информации о подключении. Список конечных точек связи с сервером (communicationEndpoints) может со временем меняться.<YOUR_KUBE-SYSTEM_NAMESPACE_UUID>с UUID пространства имен kube-system, полученным в Предустановке. Параметры:- необязательно Вы можете изменить версию образа, используя другой тег версии.
raw— Последний доступный образ1.sprint.patchlevel-raw— Образ для конкретной версии АктивногоШлюза (например,1.297.0-raw)
- необязательно Включите AppArmor, если он доступен. Для обеспечения совместимости с более широким спектром кластеров Kubernetes профиль AppArmor не указан в
ag-deployment-example.yaml. Если AppArmor доступен в вашем кластере Kubernetes, мы рекомендуем вам дополнительно аннотировать StatefulSet с помощью профиляruntime/default.spec:template:metadata:annotations:container.apparmor.security.beta.kubernetes.io/activegate: runtime/default - необязательно Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру.
- Развертывание АктивногоШлюза.
- Kubernetes
kubectl apply -f ./ag-deployment-example.yaml - OpenShift
oc apply -f ./ag-deployment-example.yaml
- Kubernetes
- Чтобы убедиться, что АктивныйШлюз успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > АктивныеШлюзы.
Выделенные развертывания
- Для мониторинга Kubernetes/Openshift выберите один из следующих вариантов:
- Использовать оператор Ключ-АСТРОМ
- Развертывание АктивногоШлюза напрямую как StatefulSet
- Для сбора логов из Kubernetes используйте Мониторинг журналов.
Образы, соответствующие стандарту FIPS
АктивныйШлюз версии 1.315+
Доступен выделенный образ АктивногоШлюза, соответствующий FIPS.