Образ АтивногоШюза в контейнере: различия между версиями

Материал из Документация Ключ-АСТРОМ
 
Строка 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'''    <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>
## '''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'''  <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 />Вам нужно заменить
## '''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> с индивидуальным токеном АктивногоШлюза, полученным в '''Предустановке'''. <br />
##* <code><YOUR_AUTH_TOKEN></code> с индивидуальным токеном АктивногоШлюза, полученным в '''Предустановке'''. <br /><br />
# Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым:  <br />'''<u>''ag-deployment-example.yaml''</u>'''   
# Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым:  <br />'''<u>''ag-deployment-example.yaml''</u>'''   
{| class="wikitable"
{| class="wikitable"
Строка 46: Строка 46:
metadata:
metadata:


  name: dynatrace-activegate
  name: astromkey-activegate


  namespace: dynatrace
  namespace: astromkey


spec:
spec:
Строка 58: Строка 58:
    app.kubernetes.io/component: activegate
    app.kubernetes.io/component: activegate


    component.dynatrace.com/feature: activegate
    component.astromkey.com/feature: activegate


  ports:
  ports:
Строка 76: Строка 76:
metadata:
metadata:


  name: dynatrace-activegate
  name: astromkey-activegate


  namespace: dynatrace
  namespace: astromkey


  labels:
  labels:
Строка 84: Строка 84:
    app.kubernetes.io/component: activegate
    app.kubernetes.io/component: activegate


    component.dynatrace.com/feature: activegate
    component.astromkey.com/feature: activegate


spec:
spec:
Строка 98: Строка 98:
      app.kubernetes.io/component: activegate
      app.kubernetes.io/component: activegate


      component.dynatrace.com/feature: activegate
      component.astromkey.com/feature: activegate


  template:
  template:
Строка 108: Строка 108:
        app.kubernetes.io/component: activegate
        app.kubernetes.io/component: activegate


        component.dynatrace.com/feature: activegate
        component.astromkey.com/feature: activegate


    spec:
    spec:
Строка 142: Строка 142:
        - name: activegate
        - name: activegate


          image: <REPOSITORY_URL>/dynatrace-activegate:<IMAGE_TAG>
          image: <REPOSITORY_URL>/astromkey-activegate:<IMAGE_TAG>


          imagePullPolicy: Always
          imagePullPolicy: Always
Строка 166: Строка 166:
            - name: DT_ID_SEED_NAMESPACE
            - name: DT_ID_SEED_NAMESPACE


              value: dynatrace
              value: astromkey


            - name: DT_ID_SEED_K8S_CLUSTER_ID
            - name: DT_ID_SEED_K8S_CLUSTER_ID
Строка 182: Строка 182:
            - name: DT_DNS_ENTRY_POINT
            - name: DT_DNS_ENTRY_POINT


              value: <nowiki>https://$(DYNATRACE_ACTIVEGATE_SERVICE_HOST):$(DYNATRACE_ACTIVEGATE_SERVICE_PORT)/communication</nowiki>
              value: <nowiki>https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communication</nowiki>


          volumeMounts:
          volumeMounts:


            - name: dynatrace-tokens
            - name: astromkey-tokens


              mountPath: /var/lib/dynatrace/secrets/tokens
              mountPath: /var/lib/astromkey/secrets/tokens


            - name: truststore-volume
            - name: truststore-volume


              mountPath: /opt/dynatrace/gateway/jre/lib/security/cacerts
              mountPath: /opt/astromkey/gateway/jre/lib/security/cacerts


              readOnly: true
              readOnly: true
Строка 200: Строка 200:
            - name: server-certs-storage
            - name: server-certs-storage


              mountPath: /var/lib/dynatrace/gateway/ssl
              mountPath: /var/lib/astromkey/gateway/ssl


            - name: ag-lib-gateway-config
            - name: ag-lib-gateway-config


              mountPath: /var/lib/dynatrace/gateway/config
              mountPath: /var/lib/astromkey/gateway/config


            - name: ag-lib-gateway-temp
            - name: ag-lib-gateway-temp


              mountPath: /var/lib/dynatrace/gateway/temp
              mountPath: /var/lib/astromkey/gateway/temp


            - name: ag-lib-gateway-data
            - name: ag-lib-gateway-data


              mountPath: /var/lib/dynatrace/gateway/data
              mountPath: /var/lib/astromkey/gateway/data


            - name: ag-log-gateway
            - name: ag-log-gateway


              mountPath: /var/log/dynatrace/gateway
              mountPath: /var/log/astromkey/gateway


            - name: ag-tmp-gateway
            - name: ag-tmp-gateway


              mountPath: /var/tmp/dynatrace/gateway
              mountPath: /var/tmp/astromkey/gateway


          livenessProbe:
          livenessProbe:
Строка 300: Строка 300:
        - name: certificate-loader
        - name: certificate-loader


          image: <REPOSITORY_URL>/dynatrace-activegate:<IMAGE_TAG>
          image: <REPOSITORY_URL>/astromkey-activegate:<IMAGE_TAG>


          workingDir: /var/lib/dynatrace/gateway
          workingDir: /var/lib/astromkey/gateway


          command: ['/bin/bash']
          command: ['/bin/bash']


          args: ['-c', '/opt/dynatrace/gateway/k8scrt2jks.sh']
          args: ['-c', '/opt/astromkey/gateway/k8scrt2jks.sh']


          volumeMounts:
          volumeMounts:


            - mountPath: /var/lib/dynatrace/gateway/ssl
            - mountPath: /var/lib/astromkey/gateway/ssl


              name: truststore-volume
              name: truststore-volume
Строка 320: Строка 320:
          emptyDir: {}
          emptyDir: {}


        - name: dynatrace-tokens
        - name: astromkey-tokens


          secret:
          secret:


            secretName: dynatrace-tokens
            secretName: astromkey-tokens


        - name: server-certs-storage
        - name: server-certs-storage
Строка 361: Строка 361:
#** 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>, полученным в '''Предустановке''' из информации о подключении. <br />Список конечных точек связи с сервером (<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''', полученным в '''Предустановке.''' <br />Параметры:
#* <code><YOUR_KUBE-SYSTEM_NAMESPACE_UUID></code> с '''UUID''' пространства имен '''kube-system''', полученным в '''Предустановке.''' <br /><br />Параметры:
#* '''необязательный''' Включите '''AppArmor''', если он доступен.  <br />Для обеспечения совместимости с более широким спектром кластеров '''Kubernetes''' профиль '''AppArmor''' не указан в <code>ag-deployment-example.yaml</code>. Если '''AppArmor''' доступен в вашем кластере '''Kubernetes''', мы рекомендуем вам дополнительно аннотировать '''StatefulSet''' с помощью профиля <code>runtime/default</code>.   <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>
#* '''необязательный''' Включите '''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 />
# Чтобы убедиться, что '''АктившныйШлюз''' успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел '''Состояние развертывания > АктивныйШлюз'''.
# Чтобы убедиться, что '''АктившныйШлюз''' успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел '''Состояние развертывания > АктивныйШлюз'''.


Строка 374: Строка 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'''  <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>
## '''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>
Строка 382: Строка 382:
##** 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'''  <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>
## '''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'''  <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 />Вам нужно заменить
## '''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> со следующим содержимым:  <br />'''''<u>ag-deployment-example.yaml</u>'''''  
# Создайте файл <code>ag-deployment-example.yaml</code> со следующим содержимым:  <br />'''''<u>ag-deployment-example.yaml</u>'''''  
{| class="wikitable"
{| class="wikitable"
Строка 395: Строка 395:
metadata:
metadata:


  name: dynatrace-activegate
  name: astromkey-activegate


  namespace: dynatrace
  namespace: astromkey


spec:
spec:
Строка 407: Строка 407:
    app.kubernetes.io/component: activegate
    app.kubernetes.io/component: activegate


    component.dynatrace.com/feature: activegate
    component.astromkey.com/feature: activegate


  ports:
  ports:
Строка 425: Строка 425:
metadata:
metadata:


  name: dynatrace-activegate
  name: astromkey-activegate


  namespace: dynatrace
  namespace: astromkey


  labels:
  labels:
Строка 433: Строка 433:
    app.kubernetes.io/component: activegate
    app.kubernetes.io/component: activegate


    component.dynatrace.com/feature: activegate
    component.astromkey.com/feature: activegate


spec:
spec:
Строка 447: Строка 447:
      app.kubernetes.io/component: activegate
      app.kubernetes.io/component: activegate


      component.dynatrace.com/feature: activegate
      component.astromkey.com/feature: activegate


  template:
  template:
Строка 457: Строка 457:
        app.kubernetes.io/component: activegate
        app.kubernetes.io/component: activegate


        component.dynatrace.com/feature: activegate
        component.astromkey.com/feature: activegate


    spec:
    spec:
Строка 515: Строка 515:
            - name: DT_ID_SEED_NAMESPACE
            - name: DT_ID_SEED_NAMESPACE


              value: dynatrace
              value: astromkey


            - name: DT_ID_SEED_K8S_CLUSTER_ID
            - name: DT_ID_SEED_K8S_CLUSTER_ID
Строка 531: Строка 531:
            - name: DT_DNS_ENTRY_POINT
            - name: DT_DNS_ENTRY_POINT


              value: <nowiki>https://$(DYNATRACE_ACTIVEGATE_SERVICE_HOST):$(DYNATRACE_ACTIVEGATE_SERVICE_PORT)/communication</nowiki>
              value: <nowiki>https://$(astromkey_ACTIVEGATE_SERVICE_HOST):$(astromkey_ACTIVEGATE_SERVICE_PORT)/communication</nowiki>


          volumeMounts:
          volumeMounts:


            - name: dynatrace-tokens
            - name: astromkey-tokens


              mountPath: /var/lib/dynatrace/secrets/tokens
              mountPath: /var/lib/astromkey/secrets/tokens


            - name: truststore-volume
            - name: truststore-volume


              mountPath: /opt/dynatrace/gateway/jre/lib/security/cacerts
              mountPath: /opt/astromkey/gateway/jre/lib/security/cacerts


              readOnly: true
              readOnly: true
Строка 549: Строка 549:
            - name: server-certs-storage
            - name: server-certs-storage


              mountPath: /var/lib/dynatrace/gateway/ssl
              mountPath: /var/lib/astromkey/gateway/ssl


            - name: ag-lib-gateway-config
            - name: ag-lib-gateway-config


              mountPath: /var/lib/dynatrace/gateway/config
              mountPath: /var/lib/astromkey/gateway/config


            - name: ag-lib-gateway-temp
            - name: ag-lib-gateway-temp


              mountPath: /var/lib/dynatrace/gateway/temp
              mountPath: /var/lib/astromkey/gateway/temp


            - name: ag-lib-gateway-data
            - name: ag-lib-gateway-data


              mountPath: /var/lib/dynatrace/gateway/data
              mountPath: /var/lib/astromkey/gateway/data


            - name: ag-log-gateway
            - name: ag-log-gateway


              mountPath: /var/log/dynatrace/gateway
              mountPath: /var/log/astromkey/gateway


            - name: ag-tmp-gateway
            - name: ag-tmp-gateway


              mountPath: /var/tmp/dynatrace/gateway
              mountPath: /var/tmp/astromkey/gateway


          livenessProbe:
          livenessProbe:
Строка 651: Строка 651:
          image: <YOUR_ENVIRONMENT_URL>/linux/activegate:raw
          image: <YOUR_ENVIRONMENT_URL>/linux/activegate:raw


          workingDir: /var/lib/dynatrace/gateway
          workingDir: /var/lib/astromkey/gateway


          command: ['/bin/bash']
          command: ['/bin/bash']


          args: ['-c', '/opt/dynatrace/gateway/k8scrt2jks.sh']
          args: ['-c', '/opt/astromkey/gateway/k8scrt2jks.sh']


          volumeMounts:
          volumeMounts:


            - mountPath: /var/lib/dynatrace/gateway/ssl
            - mountPath: /var/lib/astromkey/gateway/ssl


              name: truststore-volume
              name: truststore-volume
Строка 665: Строка 665:
      imagePullSecrets:
      imagePullSecrets:


        - name: dynatrace-docker-registry
        - name: astromkey-docker-registry


      volumes:
      volumes:
Строка 673: Строка 673:
          emptyDir: {}
          emptyDir: {}


        - name: dynatrace-tokens
        - name: astromkey-tokens


          secret:
          secret:


            secretName: dynatrace-tokens
            secretName: astromkey-tokens


        - name: server-certs-storage
        - name: server-certs-storage
Строка 709: Строка 709:
# Измените файл '''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-адресе вашей среды выше)  <br />Чтобы определить идентификатор вашей среды, смотрите синтаксис ниже.
#* <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>, полученным в '''Предустановке''' из информации о подключении.  <br />Список конечных точек связи с сервером (<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, полученным в '''Предустановке.'''  <br />Параметры:
#* <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, если он доступен.  <br />Для обеспечения совместимости с более широким спектром кластеров '''Kubernetes''' профиль '''AppArmor''' не указан в <code>ag-deployment-example.yaml</code>. Если '''AppArmor''' доступен в вашем кластере '''Kubernetes''', мы рекомендуем вам дополнительно аннотировать '''StatefulSet''' с помощью профиля <code>runtime/default</code>.   <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>
#* '''необязательно''' Включите 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.

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

  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

  1. Измените файл 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
    • необязательный Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру. Дополнительные параметры конфигурации см. в разделе Конфигурация АктивныхШлюзов.
  2. Развертывание АктивногоШлюза.
    1. Kubernetes kubectl apply -f ./ag-deployment-example.yaml
    2. OpenShift oc apply -f ./ag-deployment-example.yaml
  3. Чтобы убедиться, что АктившныйШлюз успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > АктивныйШлюз.

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

  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

  1. Измените файл 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
    • необязательно Применяйте ограничения ресурсов в соответствии с рекомендациями по размеру.
  2. Развертывание АктивногоШлюза.
    1. Kubernetes kubectl apply -f ./ag-deployment-example.yaml
    2. OpenShift oc apply -f ./ag-deployment-example.yaml
  3. Чтобы убедиться, что АктивныйШлюз успешно подключился к серверу Ключ-АСТРОМ, перейдите в раздел Состояние развертывания > АктивныеШлюзы.

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

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

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

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

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