Образ АтивногоШюза в контейнере: различия между версиями
(Новая страница: «Ключ-АСТРОМ поддерживает запуск АктивногоШлюза в контейнере. В качестве примера развер...») |
|||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 33: | Строка 33: | ||
# Создайте выделенное пространство имен. | # Создайте выделенное пространство имен. | ||
## '''Kubernetes''' <code>kubectl create namespace astromkey</code> | ## '''Kubernetes''' <code>kubectl create namespace astromkey</code> | ||
## '''OpenShift''' <code>oc adm new-project --node-selector="" astromkey</code> | ## '''OpenShift''' <code>oc adm new-project --node-selector="" astromkey</code><br /> | ||
# Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивныйШлюз. | # Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивныйШлюз. | ||
## '''Kubernetes''' | ## '''Kubernetes''' <br /><code>kubectl -n astromkey create secret generic astromkey-tokens \</code> <br /><code>--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \</code> <br /><code>--from-literal=auth-token=<YOUR_AUTH_TOKEN></code> | ||
## '''OpenShift''' <code>oc -n astromkey create secret generic astromkey-tokens \</code> | ## '''OpenShift''' <br /><code>oc -n astromkey create secret generic astromkey-tokens \</code> <br /><code>--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \</code> <br /><code>--from-literal=auth-token=<YOUR_AUTH_TOKEN></code> <br /><br />Вам нужно заменить | ||
##* <code><YOUR_TENANT_TOKEN></code> c значением <code>tenantToken</code>, полученным в '''Предустановке''' из информации о подключении. | ##* <code><YOUR_TENANT_TOKEN></code> c значением <code>tenantToken</code>, полученным в '''Предустановке''' из информации о подключении. | ||
##* <code><YOUR_AUTH_TOKEN></code> с индивидуальным токеном АктивногоШлюза, полученным в '''Предустановке'''. | ##* <code><YOUR_AUTH_TOKEN></code> с индивидуальным токеном АктивногоШлюза, полученным в '''Предустановке'''. <br /><br /> | ||
# Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым: '''<u>''ag-deployment-example.yaml''</u>''' | # Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым: <br />'''<u>''ag-deployment-example.yaml''</u>''' | ||
{| class="wikitable" | |||
|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: <nowiki>https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communication</nowiki> | |||
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''' развертывания. Добавьте в файл <code>ag-deployment-example.yaml</code> сведения о конфигурации среды, обязательно заменив: | # Измените файл '''YAML''' развертывания. Добавьте в файл <code>ag-deployment-example.yaml</code> сведения о конфигурации среды, обязательно заменив: | ||
#* <code>CPU_ARCHITECTURE</code> c архитектурой вашего процессора. Возможные значения: <code>amd64</code>, <code>arm64</code>, и<code>s390x</code> | #* <code>CPU_ARCHITECTURE</code> c архитектурой вашего процессора. Возможные значения: <code>amd64</code>, <code>arm64</code>, и <code>s390x</code> | ||
#* <code><REPOSITORY_URL></code> c одним из поддерживаемых реестров | #* <code><REPOSITORY_URL></code> c одним из поддерживаемых реестров | ||
#* <code><IMAGE_TAG></code> c правильным тегом образа | #* <code><IMAGE_TAG></code> c правильным тегом образа | ||
#* <code><YOUR_ENVIRONMENT_ID></code> с вашим идентификатором среды Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже. | #* <code><YOUR_ENVIRONMENT_ID></code> с вашим идентификатором среды Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже. | ||
#** SaaS: <code><nowiki>https://{your-environment-id}.live.astromkey.com</nowiki></code> | #** SaaS: <code><nowiki>https://{your-environment-id}.live.astromkey.com</nowiki></code> | ||
#** Managment: <code><nowiki>https://{your-domain}/e/{your-environment-id}</nowiki></code> | #** Managment: <code><nowiki>https://{your-domain}/e/{your-environment-id}</nowiki></code> | ||
#* <code><YOUR_COMMUNICATION_ENDPOINTS></code> c значением <code>communicationEndpoints</code>, полученным в '''Предустановке''' из информации о подключении | #* <code><YOUR_COMMUNICATION_ENDPOINTS></code> c значением <code>communicationEndpoints</code>, полученным в '''Предустановке''' из информации о подключении. <br /><br />Список конечных точек связи с сервером (<code>communicationEndpoints</code>) может со временем меняться. | ||
#* <code><YOUR_KUBE-SYSTEM_NAMESPACE_UUID></code> с '''UUID''' пространства имен '''kube-system''', полученным в '''Предустановке''' | #* <code><YOUR_KUBE-SYSTEM_NAMESPACE_UUID></code> с '''UUID''' пространства имен '''kube-system''', полученным в '''Предустановке.''' <br /><br />Параметры: | ||
#* '''необязательный''' Включите '''AppArmor''', если он доступен. | #* '''необязательный''' Включите '''AppArmor''', если он доступен. <br />Для обеспечения совместимости с более широким спектром кластеров '''Kubernetes''' профиль '''AppArmor''' не указан в <code>ag-deployment-example.yaml</code>. Если '''AppArmor''' доступен в вашем кластере '''Kubernetes''', мы рекомендуем вам дополнительно аннотировать '''StatefulSet''' с помощью профиля <code>runtime/default</code>. <br /><br /><code>spec:</code> <br /><code> template:</code> <br /><code> metadata:</code> <br /><code> annotations:</code> <br /><code> container.apparmor.security.beta.kubernetes.io/activegate: runtime/default</code> <br /> | ||
#* '''необязательный''' Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. Дополнительные параметры конфигурации см. в разделе [[Конфигурация АктивныхШлюзов|'''Конфигурация АктивныхШлюзов''']]. | #* '''необязательный''' Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. Дополнительные параметры конфигурации см. в разделе [[Конфигурация АктивныхШлюзов|'''Конфигурация АктивныхШлюзов''']]. <br /> | ||
# Развертывание '''АктивногоШлюза'''. | # Развертывание '''АктивногоШлюза'''. | ||
## '''Kubernetes''' <code>kubectl apply -f ./ag-deployment-example.yaml</code> | ## '''Kubernetes''' <code>kubectl apply -f ./ag-deployment-example.yaml</code> | ||
## '''OpenShift''' <code>oc apply -f ./ag-deployment-example.yaml</code> | ## '''OpenShift''' <code>oc apply -f ./ag-deployment-example.yaml</code><br /> | ||
# Чтобы убедиться, что '''АктившныйШлюз''' успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел '''Состояние развертывания > АктивныйШлюз'''. | # Чтобы убедиться, что '''АктившныйШлюз''' успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел '''Состояние развертывания > АктивныйШлюз'''. | ||
| Строка 60: | Строка 374: | ||
# Создайте выделенное пространство имен. | # Создайте выделенное пространство имен. | ||
## '''Kubernetes''' <code>kubectl create namespace astromkey</code> | ## '''Kubernetes''' <code>kubectl create namespace astromkey</code> | ||
## '''OpenShift''' <code>oc adm new-project --node-selector="" astromkey</code> | ## '''OpenShift''' <code>oc adm new-project --node-selector="" astromkey</code><br /> | ||
# Создайте ключ, содержащий URL-адрес среды и данные аутентификации для этого реестра. | # Создайте ключ, содержащий URL-адрес среды и данные аутентификации для этого реестра. | ||
## '''Kubernetes''' | ## '''Kubernetes''' <br /><code>kubectl -n astromkey create secret docker-registry astromkey-docker-registry \</code> <br /><code>--docker-server=<YOUR_ENVIRONMENT_URL> \</code> <br /><code>--docker-username=<YOUR_ENVIRONMENT_ID> \</code> <br /><code>--docker-password=<YOUR_INSTALLER_DOWNLOAD_TOKEN></code> | ||
## '''OpenShift''' | ## '''OpenShift''' <br /><code>oc -n astromkey create secret docker-registry astromkey-docker-registry \</code> <br /><code>--docker-server=<YOUR_ENVIRONMENT_URL> \</code> <br /><code>--docker-username=<YOUR_ENVIRONMENT_ID> \</code> <br /><code>--docker-password=<YOUR_INSTALLER_DOWNLOAD_TOKEN> -n astromkey</code> <br /><br />Вам нужно заменить | ||
##* <code><YOUR_ENVIRONMENT_URL></code> с URL вашей среды (без <code>https://</code>). Пример:<code>abc12345.live.astromkey.com</code> | ##* <code><YOUR_ENVIRONMENT_URL></code> с URL вашей среды (без <code>https://</code>). Пример:<code>abc12345.live.astromkey.com</code> | ||
##* <code><YOUR_ENVIRONMENT_ID></code> с именем пользователя учетной записи Docker (таким же, как идентификатор в URL-адресе вашей среды выше). | ##* <code><YOUR_ENVIRONMENT_ID></code> с именем пользователя учетной записи Docker (таким же, как идентификатор в URL-адресе вашей среды выше). <br />Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже. | ||
##** SaaS-решение: <code><nowiki>https://{your-environment-id}.live.astromkey.com</nowiki></code> | ##** SaaS-решение: <code><nowiki>https://{your-environment-id}.live.astromkey.com</nowiki></code> | ||
##** Managed: <code><nowiki>https://{your-domain}/e/{your-environment-id}</nowiki></code> | ##** Managed: <code><nowiki>https://{your-domain}/e/{your-environment-id}</nowiki></code> | ||
##** <code><YOUR_INSTALLER_DOWNLOAD_TOKEN></code> с токеном доступа <code>InstallerDownload</code> с областью действия, созданной вами в разделе '''Предустановка'''. | ##** <code><YOUR_INSTALLER_DOWNLOAD_TOKEN></code> с токеном доступа <code>InstallerDownload</code> с областью действия, созданной вами в разделе '''Предустановка'''. <br /> | ||
# Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивнымШлюзом. | # Создайте ключ, содержащий данные аутентификации на сервере Ключ-АСТРОМ, используемом АктивнымШлюзом. | ||
## '''Kubernetes''' | ## '''Kubernetes''' <br /><code>kubectl -n astromkey create secret generic astromkey-tokens \</code> <br /><code>--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \</code> <br /><code>--from-literal=auth-token=<YOUR_AUTH_TOKEN></code> | ||
## '''OpenShift''' | ## '''OpenShift''' <br /><code>oc -n astromkey create secret generic astromkey-tokens \</code> <br /><code>--from-literal=tenant-token=<YOUR_TENANT_TOKEN> \</code> <br /><code>--from-literal=auth-token=<YOUR_AUTH_TOKEN></code> <br /><br />Вам нужно заменить | ||
##* <code><YOUR_TENANT_TOKEN></code> с значением <code>tenantToken</code>, полученным в '''Предустановке''' из информации о подключении. | ##* <code><YOUR_TENANT_TOKEN></code> с значением <code>tenantToken</code>, полученным в '''Предустановке''' из информации о подключении. | ||
##* <code><YOUR_AUTH_TOKEN></code> с индивидуальным токеном АктивногоШлюза, полученным в '''Предустановке'''. | ##* <code><YOUR_AUTH_TOKEN></code> с индивидуальным токеном АктивногоШлюза, полученным в '''Предустановке'''. <br /> | ||
# Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым: '''''<u>ag-deployment-example.yaml</u>''''' | # Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым: <br />'''''<u>ag-deployment-example.yaml</u>''''' | ||
{| class="wikitable" | |||
|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: <nowiki>https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communication</nowiki> | |||
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''' развертывания. Добавьте в файл <code>ag-deployment-example.yaml</code> сведения о конфигурации среды, обязательно заменив: | # Измените файл '''YAML''' развертывания. Добавьте в файл <code>ag-deployment-example.yaml</code> сведения о конфигурации среды, обязательно заменив: | ||
#* <code><YOUR_ENVIRONMENT_URL></code> с URL вашей среды (без <code>https://</code>). Пример: <code>abc12345.live.astromkey.com</code> | #* <code><YOUR_ENVIRONMENT_URL></code> с URL вашей среды (без <code>https://</code>). Пример: <code>abc12345.live.astromkey.com</code> | ||
#* <code><YOUR_ENVIRONMENT_ID></code> с именем пользователя учетной записи Docker (таким же, как идентификатор в URL-адресе вашей среды выше) | #* <code><YOUR_ENVIRONMENT_ID></code> с именем пользователя учетной записи Docker (таким же, как идентификатор в URL-адресе вашей среды выше) <br /><br />Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже. | ||
#** SaaS-решение: <code><nowiki>https://{your-environment-id}.live.astromkey.com</nowiki></code> | #** SaaS-решение: <code><nowiki>https://{your-environment-id}.live.astromkey.com</nowiki></code> | ||
#** Managed: <code><nowiki>https://{your-domain}/e/{your-environment-id}</nowiki></code> | #** Managed: <code><nowiki>https://{your-domain}/e/{your-environment-id}</nowiki></code> | ||
#* <code><YOUR_COMMUNICATION_ENDPOINTS></code> c значением <code>communicationEndpoints</code>, полученным в '''Предустановке''' из информации о подключении. | #* <code><YOUR_COMMUNICATION_ENDPOINTS></code> c значением <code>communicationEndpoints</code>, полученным в '''Предустановке''' из информации о подключении. <br />Список конечных точек связи с сервером (<code>communicationEndpoints</code>) может со временем меняться. | ||
#* <code><YOUR_KUBE-SYSTEM_NAMESPACE_UUID></code> с UUID пространства имен kube-system, полученным в '''Предустановке.''' | #* <code><YOUR_KUBE-SYSTEM_NAMESPACE_UUID></code> с UUID пространства имен kube-system, полученным в '''Предустановке.''' <br /><br />Параметры: | ||
#* '''необязательно''' Вы можете изменить версию образа, используя другой тег версии. | #* '''необязательно''' Вы можете изменить версию образа, используя другой тег версии. | ||
#** <code>raw</code>— Последний доступный образ | #** <code>raw</code>— Последний доступный образ | ||
#** <code>1.sprint.patchlevel-raw</code>— Образ для конкретной версии АктивногоШлюза (например, <code>1.297.0-raw</code>) | #** <code>1.sprint.patchlevel-raw</code>— Образ для конкретной версии АктивногоШлюза (например, <code>1.297.0-raw</code>) | ||
#* '''необязательно''' Включите AppArmor, если он доступен. | #* '''необязательно''' Включите AppArmor, если он доступен. <br />Для обеспечения совместимости с более широким спектром кластеров '''Kubernetes''' профиль '''AppArmor''' не указан в <code>ag-deployment-example.yaml</code>. Если '''AppArmor''' доступен в вашем кластере '''Kubernetes''', мы рекомендуем вам дополнительно аннотировать '''StatefulSet''' с помощью профиля <code>runtime/default</code>. <br /><br /><code>spec:</code> <br /><code> template:</code> <br /><code> metadata:</code> <br /><code> annotations:</code> <br /><code> container.apparmor.security.beta.kubernetes.io/activegate: runtime/default</code> <br /> | ||
#* '''необязательно''' Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. | #* '''необязательно''' Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. <br /> | ||
# Развертывание '''АктивногоШлюза'''. | # Развертывание '''АктивногоШлюза'''. | ||
## '''Kubernetes''' <code>kubectl apply -f ./ag-deployment-example.yaml</code> | ## '''Kubernetes''' <code>kubectl apply -f ./ag-deployment-example.yaml</code> | ||
## '''OpenShift''' <code>oc apply -f ./ag-deployment-example.yaml</code> | ## '''OpenShift''' <code>oc apply -f ./ag-deployment-example.yaml</code><br /> | ||
# Чтобы убедиться, что '''АктивныйШлюз''' успешно подключился к серверу '''Ключ-АСТРОМ''', перейдите в раздел '''Состояние развертывания > АктивныеШлюзы'''. | # Чтобы убедиться, что '''АктивныйШлюз''' успешно подключился к серверу '''Ключ-АСТРОМ''', перейдите в раздел '''Состояние развертывания > АктивныеШлюзы'''. | ||
Текущая версия на 19:41, 25 мая 2025
Ключ-АСТРОМ поддерживает запуск АктивногоШлюза в контейнере. В качестве примера развертывания на основе контейнера эта страница описывает, как развернуть АктивныйШлюз на основе контейнера с использованием 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.