Образ АтивногоШюза в контейнере
Ключ-АСТРОМ поддерживает запуск АктивногоШлюза в контейнере. В качестве примера развертывания на основе контейнера эта страница описывает, как развернуть АктивныйШлюз на основе контейнера с использованием 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.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 |
- Измените файл 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.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 |
- Измените файл 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.