Образ АтивногоШюза в контейнере

Материал из Документация Ключ-АСТРОМ
Версия от 19:24, 25 мая 2025; IKuznetsov (обсуждение | вклад) (Новая страница: «Ключ-АСТРОМ поддерживает запуск АктивногоШлюза в контейнере. В качестве примера развер...»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Ключ-АСТРОМ поддерживает запуск АктивногоШлюза в контейнере. В качестве примера развертывания на основе контейнера эта страница описывает, как развернуть АктивныйШлюз на основе контейнера с использованием StatefulSet в Kubernetes/OpenShift.

Предустановка

  1. Создайте токен доступа InstallerDownload с областью действия
  2. Создайте токен аутентификации
  3. Определите конечные точки связи АктивногоШлюза и аутентификацию. Используйте информацию о подключении GET для API АктивногоШлюза.
  4. Получите UUID вашего пространства имен kube-system

Системные требования

Образ АктивногоШлюза Ключ-АСТРОМ поддерживается различными версиями Kubernetes и OpenShift. Полный список см. в разделе Поддержка технологий - Kubernetes.

Образы доступны для следующих архитектур:

  • x86-64
  • ARM64 (AArch64)
  • s390x

Директории контейнеров

Чтобы обеспечить бесперебойную интеграцию с вашими инструментами и адаптируемость к вашим потребностям, мы предлагаем наши образы контейнеров различными способами, обеспечивающими максимальную гибкость:

  • Встроенная директория Ключ-АСТРОМ (по умолчанию)
  • Общедоступные директории
  • Ваша собственная директория (рекомендуется)

Обратите внимание, что многоархитектурные образы контейнеров Ключ-АСТРОМ, поддерживающие архитектуры ЦП ARM64 (AArch64) и x86-64 на Linux, обеспечивающие совместимость на различных платформах, доступны только из общедоступных директорий. Встроенная директория Ключ-АСТРОМ предоставляет образы только x86-64.

Развертывание

Ключ-АСТРОМ предоставляет подписанные образы контейнеров для обеспечения подлинности и целостности, а также SBOM, в которых перечислены все включенные программные компоненты. Проверка подписей и просмотр SBOM позволяют эффективно управлять уязвимостями и снижать риски. Подробности проверки см. в разделе Проверка подписей образов Ключ-АСТРОМ.

Частная или общедоступная директория

  1. Создайте выделенное пространство имен.
    1. Kubernetes kubectl create namespace astromkey
    2. OpenShift oc adm new-project --node-selector="" astromkey
  2. Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивныйШлюз.
    1. Kubernetes kubectl -n astromkey create secret generic astromkey-tokens \ --from-literal=tenant-token=<YOUR_TENANT_TOKEN> \ --from-literal=auth-token=<YOUR_AUTH_TOKEN>
    2. 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> с индивидуальным токеном АктивногоШлюза, полученным в Предустановке.
  3. Создайте файл ag-deployment-example.yaml со следующим содержимым: ag-deployment-example.yaml apiVersion: v1 kind: Service metadata:   name: astromkey-activegate   namespace: astromkey spec:   type: ClusterIP   selector:     app.kubernetes.io/component: activegate     component.astromkey.com/feature: activegate   ports:     - protocol: TCP       port: 443       targetPort: ag-https --- apiVersion: apps/v1 kind: StatefulSet metadata:   name: astromkey-activegate   namespace: astromkey   labels:     app.kubernetes.io/component: activegate     component.astromkey.com/feature: activegate spec:   podManagementPolicy: Parallel   serviceName: ""   selector:     matchLabels:       app.kubernetes.io/component: activegate       component.astromkey.com/feature: activegate   template:     metadata:       labels:         app.kubernetes.io/component: activegate         component.astromkey.com/feature: activegate     spec:       affinity:         nodeAffinity:           requiredDuringSchedulingIgnoredDuringExecution:             nodeSelectorTerms:               - matchExpressions:                   - key: kubernetes.io/arch                     operator: In                     values:                       - <CPU_ARCHITECTURE>                   - key: kubernetes.io/os                     operator: In                     values:                       - linux       containers:         - name: activegate           image: <REPOSITORY_URL>/astromkey-activegate:<IMAGE_TAG>           imagePullPolicy: Always           ports:             - containerPort: 9999               name: ag-https               protocol: TCP           env:             - name: DT_TENANT               value: <YOUR_ENVIRONMENT_ID>             - name: DT_SERVER               value: <YOUR_COMMUNICATION_ENDPOINTS>             - name: DT_ID_SEED_NAMESPACE               value: astromkey             - name: DT_ID_SEED_K8S_CLUSTER_ID               value: <YOUR_KUBE-SYSTEM_NAMESPACE_UUID>             - name: DT_CAPABILITIES               value: restInterface,kubernetes_monitoring,MSGrouter,metrics_ingest             - name: DT_DEPLOYMENT_METADATA               value: orchestration_tech=handcrated-ag-sts;script_version=none;orchestrator_id=none             - name: DT_DNS_ENTRY_POINT               value: https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communication           volumeMounts:             - name: astromkey-tokens               mountPath: /var/lib/astromkey/secrets/tokens             - name: truststore-volume               mountPath: /opt/astromkey/gateway/jre/lib/security/cacerts               readOnly: true               subPath: k8s-local.jks             - name: server-certs-storage               mountPath: /var/lib/astromkey/gateway/ssl             - name: ag-lib-gateway-config               mountPath: /var/lib/astromkey/gateway/config             - name: ag-lib-gateway-temp               mountPath: /var/lib/astromkey/gateway/temp             - name: ag-lib-gateway-data               mountPath: /var/lib/astromkey/gateway/data             - name: ag-log-gateway               mountPath: /var/log/astromkey/gateway             - name: ag-tmp-gateway               mountPath: /var/tmp/astromkey/gateway           livenessProbe:             failureThreshold: 2             httpGet:               path: /rest/state               port: ag-https               scheme: HTTPS             initialDelaySeconds: 30             periodSeconds: 30             successThreshold: 1             timeoutSeconds: 1           readinessProbe:             failureThreshold: 3             httpGet:               path: /rest/health               port: ag-https               scheme: HTTPS             initialDelaySeconds: 30             periodSeconds: 15             successThreshold: 1             timeoutSeconds: 1           resources:             requests:               cpu: 500m               memory: 512Mi             limits:               cpu: 1000m               memory: 1.5Gi           securityContext:             allowPrivilegeEscalation: false             capabilities:               drop:                 - all             privileged: false             readOnlyRootFilesystem: true             runAsNonRoot: true             seccompProfile:               type: RuntimeDefault       initContainers:         - name: certificate-loader           image: <REPOSITORY_URL>/astromkey-activegate:<IMAGE_TAG>           workingDir: /var/lib/astromkey/gateway           command: ['/bin/bash']           args: ['-c', '/opt/astromkey/gateway/k8scrt2jks.sh']           volumeMounts:             - mountPath: /var/lib/astromkey/gateway/ssl               name: truststore-volume       volumes:         - name: truststore-volume           emptyDir: {}         - name: astromkey-tokens           secret:             secretName: astromkey-tokens         - name: server-certs-storage           emptyDir: {}         - name: ag-lib-gateway-config           emptyDir: {}         - name: ag-lib-gateway-temp           emptyDir: {}         - name: ag-lib-gateway-data           emptyDir: {}         - name: ag-log-gateway           emptyDir: {}         - name: ag-tmp-gateway           emptyDir: {}   updateStrategy:     type: RollingUpdate
  4. Измените файл YAML развертывания. Добавьте в файл ag-deployment-example.yaml сведения о конфигурации среды, обязательно заменив:
    • CPU_ARCHITECTURE c архитектурой вашего процессора. Возможные значения: 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}
    • <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
    • необязательный Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. Дополнительные параметры конфигурации см. в разделе Конфигурация АктивныхШлюзов.
  5. Развертывание АктивногоШлюза.
    1. Kubernetes kubectl apply -f ./ag-deployment-example.yaml
    2. OpenShift oc apply -f ./ag-deployment-example.yaml
  6. Чтобы убедиться, что АктившныйШлюз успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > АктивныйШлюз.

Встроенная директория Ключ-АСТРОМ

  1. Создайте выделенное пространство имен.
    1. Kubernetes kubectl create namespace astromkey
    2. OpenShift oc adm new-project --node-selector="" astromkey
  2. Создайте ключ, содержащий URL-адрес среды и данные аутентификации для этого реестра.
    1. 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>
    2. 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 с областью действия, созданной вами в разделе Предустановка.
  3. Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивнымШлюзом.
    1. Kubernetes kubectl -n astromkey create secret generic astromkey-tokens \ --from-literal=tenant-token=<YOUR_TENANT_TOKEN> \ --from-literal=auth-token=<YOUR_AUTH_TOKEN>
    2. 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> с индивидуальным токеном АктивногоШлюза, полученным в Предустановке.
  4. Создайте файл ag-deployment-example.yaml со следующим содержимым: ag-deployment-example.yaml apiVersion: v1 kind: Service metadata:   name: astromkey-activegate   namespace: astromkey spec:   type: ClusterIP   selector:     app.kubernetes.io/component: activegate     component.astromkey.com/feature: activegate   ports:     - protocol: TCP       port: 443       targetPort: ag-https --- apiVersion: apps/v1 kind: StatefulSet metadata:   name: astromkey-activegate   namespace: astromkey   labels:     app.kubernetes.io/component: activegate     component.astromkey.com/feature: activegate spec:   podManagementPolicy: Parallel   serviceName: ""   selector:     matchLabels:       app.kubernetes.io/component: activegate       component.astromkey.com/feature: activegate   template:     metadata:       labels:         app.kubernetes.io/component: activegate         component.astromkey.com/feature: activegate     spec:       affinity:         nodeAffinity:           requiredDuringSchedulingIgnoredDuringExecution:             nodeSelectorTerms:               - matchExpressions:                   - key: kubernetes.io/arch                     operator: In                     values:                       - amd64                   - key: kubernetes.io/os                     operator: In                     values:                       - linux       containers:         - name: activegate           image: <YOUR_ENVIRONMENT_URL>/linux/activegate:raw           imagePullPolicy: Always           ports:             - containerPort: 9999               name: ag-https               protocol: TCP           env:             - name: DT_TENANT               value: <YOUR_ENVIRONMENT_ID>             - name: DT_SERVER               value: <YOUR_COMMUNICATION_ENDPOINTS>             - name: DT_ID_SEED_NAMESPACE               value: astromkey             - name: DT_ID_SEED_K8S_CLUSTER_ID               value: <YOUR_KUBE-SYSTEM_NAMESPACE_UUID>             - name: DT_CAPABILITIES               value: restInterface,kubernetes_monitoring,MSGrouter,metrics_ingest             - name: DT_DEPLOYMENT_METADATA               value: orchestration_tech=handcrated-ag-sts;script_version=none;orchestrator_id=none             - name: DT_DNS_ENTRY_POINT               value: https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communication           volumeMounts:             - name: astromkey-tokens               mountPath: /var/lib/astromkey/secrets/tokens             - name: truststore-volume               mountPath: /opt/astromkey/gateway/jre/lib/security/cacerts               readOnly: true               subPath: k8s-local.jks             - name: server-certs-storage               mountPath: /var/lib/astromkey/gateway/ssl             - name: ag-lib-gateway-config               mountPath: /var/lib/astromkey/gateway/config             - name: ag-lib-gateway-temp               mountPath: /var/lib/astromkey/gateway/temp             - name: ag-lib-gateway-data               mountPath: /var/lib/astromkey/gateway/data             - name: ag-log-gateway               mountPath: /var/log/astromkey/gateway             - name: ag-tmp-gateway               mountPath: /var/tmp/astromkey/gateway           livenessProbe:             failureThreshold: 2             httpGet:               path: /rest/state               port: ag-https               scheme: HTTPS             initialDelaySeconds: 30             periodSeconds: 30             successThreshold: 1             timeoutSeconds: 1           readinessProbe:             failureThreshold: 3             httpGet:               path: /rest/health               port: ag-https               scheme: HTTPS             initialDelaySeconds: 30             periodSeconds: 15             successThreshold: 1             timeoutSeconds: 1           resources:             requests:               cpu: 500m               memory: 512Mi             limits:               cpu: 1000m               memory: 1.5Gi           securityContext:             allowPrivilegeEscalation: false             capabilities:               drop:                 - all             privileged: false             readOnlyRootFilesystem: true             runAsNonRoot: true             seccompProfile:               type: RuntimeDefault       initContainers:         - name: certificate-loader           image: <YOUR_ENVIRONMENT_URL>/linux/activegate:raw           workingDir: /var/lib/astromkey/gateway           command: ['/bin/bash']           args: ['-c', '/opt/astromkey/gateway/k8scrt2jks.sh']           volumeMounts:             - mountPath: /var/lib/astromkey/gateway/ssl               name: truststore-volume       imagePullSecrets:         - name: astromkey-docker-registry       volumes:         - name: truststore-volume           emptyDir: {}         - name: astromkey-tokens           secret:             secretName: astromkey-tokens         - name: server-certs-storage           emptyDir: {}         - name: ag-lib-gateway-config           emptyDir: {}         - name: ag-lib-gateway-temp           emptyDir: {}         - name: ag-lib-gateway-data           emptyDir: {}         - name: ag-log-gateway           emptyDir: {}         - name: ag-tmp-gateway           emptyDir: {}   updateStrategy:     type: RollingUpdate
  5. Измените файл 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}
    • <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
    • необязательно Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру.
  6. Развертывание АктивногоШлюза.
    1. Kubernetes kubectl apply -f ./ag-deployment-example.yaml
    2. OpenShift oc apply -f ./ag-deployment-example.yaml
  7. Чтобы убедиться, что АктивныйШлюз успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > АктивныеШлюзы.

Выделенные развертывания

  • Для мониторинга Kubernetes/Openshift выберите один из следующих вариантов:
    • Использовать оператор Ключ-АСТРОМ
    • Развертывание АктивногоШлюза напрямую как StatefulSet
  • Для сбора логов из Kubernetes используйте Мониторинг журналов.

Образы, соответствующие стандарту FIPS

АктивныйШлюз версии 1.315+

Доступен выделенный образ АктивногоШлюза, соответствующий FIPS.