Erstellen Sie ein MID-Server-Docker-Image für Linux

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 11 Minuten Lesedauer
  • Stellen Sie containerisierte MID-Server unter Linux bereit, indem Sie ein Docker-Image mit den bereitgestellten Rezepten erstellen. Der containerisierte MID-Server verwendet ein Docker-Image des MID-Servers, mit dem Sie MID-Server schnell und bedarfsgerecht bereitstellen können.

    Vorbereitungen

    Erforderliche Rolle: admin

    Setup-Indikator für die KonfigurationsphaseSicherstellen, dass vom MID Server eine Verbindung zu Elementen inner- und außerhalb Ihres Netzwerks hergestellt werden kannMID Server auf einem Linux- oder Windows-Host herunterladen und installierenMID Server konfigurierenSicherheit des MID Servers konfigurierenSicherstellen, dass vom MID Server eine Verbindung zu Elementen inner- und außerhalb Ihres Netzwerks hergestellt werden kannMID Server auf einem Linux- oder Windows-Host herunterladen und installierenMID Server konfigurierenSicherheit des MID Servers konfigurieren

    Voraussetzungen:

    Der Host muss Docker-Engine und Befehlszeilenschnittstelle (CLI) 20.10.4 oder höher verwenden.

    Aktualisieren Sie die Bibliothek auf die neueste verfügbare Version oder mindestens die höchste Version mit einem Sicherheitsfix. Wenn die identifizierten Probleme Teil einer vorübergehenden Abhängigkeit sind, suchen Sie eine Version der abhängigen Bibliothek, die eine neuere Übergangsversion enthält. Wenn die vorübergehende Abhängigkeit nicht durch ein Upgrade der abhängigen Bibliothek aktualisiert werden kann, ziehen Sie in Betracht, die Abhängigkeit auszuschließen und direkt eine sichere Version einzubeziehen.

    Hinweis:
    Überprüfen Sie die Docker-Verfügbarkeit, indem Sie den Docker-Versionsbefehl als Administrator ausführen. Weitere Informationen finden Sie in der Dokumentation zum Befehl für die Docker-Version.

    Prozedur

    1. Laden Sie die ZIP-Datei mit dem Linux-Docker-Rezept von der MID-Server-Downloadseite herunter, und überprüfen Sie ihre Signatur.
      Weitere Informationen zur Downloadseite des MID-Servers und zur Signaturverifizierung finden Sie unter MID- Server-Dateien herunterladen.
    2. Extrahieren Sie die ZIP-Datei in einen Ordner.
    3. Wahlweise: Sie können das aktuelle Verzeichnis in den neuen Ordner ändern.
    4. Um ein Image zu erstellen, führen Sie den folgenden Build-Befehl aus: > Docker Build<path-to-docker-recipe> [ --tag<docker-tag> ]

      Weitere Informationen zum Befehl finden Sie in der Dokumentation zum Docker-Build-Befehl. Der Pfad zur Docker-Datei kann ein relativer Pfad oder das aktuelle Verzeichnis sein, wenn sich die Datei im Docker-Rezeptverzeichnis befindet.

      Das Standard-Image-Tag wird standardmäßig in der ENV-Datei mit dem Parameter DOCKER_TAG bereitgestellt. Sie können diesen Parameter exportieren, bevor Sie einen Docker-Befehl ausführen, indem Sie den folgenden Befehl ausführen: > export $(grep Docker_TAG .env). Sie können ersetzen<docker-tag> mit dem Wert DOCKER_TAG in allen folgenden Befehlen.

      Der Befehl build akzeptiert die folgenden Build-Argumente:

      Eigenschaft Beschreibung
      MID_INSTALLATION_URL Der Link zum Herunterladen der Installationsdatei MID-Server. Standardmäßig ist dies auf den Download-Link für die ZIP-Datei der Linux-64-Bit-Installation festgelegt, die auf der Download-Seite MID-Server bereitgestellt wird.
      MID_INSTALLATION_DATEI Der Name einer lokalen Installationsdatei MID-Server. Der Standardwert ist leer. Wenn dieser Parameter nicht leer ist, verwendet das Rezept die lokale Datei, anstatt sie vom Installationsserver herunterzuladen. Dieser Parameter verwendet nur den Dateinamen, nicht den vollständigen Pfad. Vor dem Build muss die lokale Datei in den Unterordner „ asset “ des Rezeptverzeichnisses kopiert werden. MID-Server Releases vor Rome werden nicht unterstützt.

      Beispiel: > Docker-Build<path-to-dockerfile> --build-arg MID_INSTALLATION_FILE=<mid.installation.file.name> ) --tag<docker-tag>

      MID_SIGNATUR_VERIFICATION Die Signatur der Installationsdatei MID-Server muss verifiziert werden. Der Standardwert ist WAHR. Bei Festlegung auf WAHR überprüft der Build-Prozess immer die digitale Signatur der Installationsdatei MID-Server, unabhängig davon, ob sie vom Remote-Server oder aus einer lokalen Datei heruntergeladen wird. Andernfalls wird die Signaturverifizierung übersprungen.

      Beispiel: > Docker-Build<path-to-dockerfile> --build-arg MID_SIGNATURE_VERIFICATION=false --tag<docker-tag>

      USER_ID und GROUP_ID

      Wenn nicht angegeben, erstellt Docker standardmäßig einen -Anwender MID-Server mit Anwender-ID = 1001 und Gruppen-ID = 1001. Sie können eine anwenderdefinierte Anwender-ID und Gruppen-ID mithilfe der Build-Argumente USER_ID und GROUP_ID an den Container übergeben. Docker erstellt einen Anwender für MID-Server mit der angegebenen Anwender-ID und Gruppen-ID. Im Containerimage befinden sich alle Dateien im Installationsordner MID-Server im Besitz dieses Anwenders und der Stammgruppe (ID = 0).

      Wenn das Image auf der Kubernetes-Plattform bereitgestellt wird, wird der -Benutzer MID-Server zum Container-Benutzer, der den MID-Server ausführt.

      Wenn das Image auf einer OpenShift-Plattform bereitgestellt wird, kann OpenShift eine beliebige Benutzer-ID ohne Administratorrechte als Container-Anwender zuweisen, der MID-Serverausführt. Dieser Benutzer gehört jedoch immer zur Stammgruppe.

      In beiden Fällen hat der Containerbenutzer vollständigen Zugriff auf die Dateien MID-Server. Auf diese Weise kann dasselbe Image sowohl in Kubernetes als auch in OpenShift bereitgestellt werden.

    5. Wahlweise: Nachdem das Image erfolgreich erstellt wurde, können Sie das mit dem folgenden Befehl erstellte Image auflisten: > Docker Image ls

    Nächste Maßnahme

    Um Speicherplatz zu sparen und nicht verwendete Images oder Zwischenimages vorhanden sind, führen Sie die folgenden Befehle aus, um diese hängenden Images zu entfernen:
    $ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    Vor dem Entfernen von Baumeln (baumelnden Images) zeigt der Befehl „ docker image ls “ möglicherweise Folgendes an:
    REPOSITORY                                TAG                                           IMAGE ID       CREATED              SIZE
    mid                                       trackdiscocopper-10-09-2020_10-14-2021_2200   4542b6ab34af   21 seconds ago       1.01GB
    <none>                                    <none>                                        1cdae087a970   About a minute ago   1.38GB
    
    Nach dem Entfernen der hängenden Bilder zeigt der Befehl Docker Bild ls Folgendes an:
    REPOSITORY                                TAG                                           IMAGE ID       CREATED              SIZE
    mid                                       trackdiscocopper-10-09-2020_10-14-2021_2200   4542b6ab34af   About a minute ago   1.01GB
    

    Starten Sie den containerisierten MID Server

    Der containerisierte MID-Server verwendet ein Docker-Image des MID-Servers, mit dem Sie MID-Server schnell und bedarfsgerecht bereitstellen können. MID-Server werden mit Orchestration-Tools wie Docker Swarm bereitgestellt.

    Vorbereitungen

    Erforderliche Rolle: admin

    Voraussetzungen:

    Prozedur

    1. Sobald das Image verfügbar ist, starten Sie den neuen MID-Server mit dem Befehl „docker run“, und geben Sie eine env-Datei oder env-Variablenoptionen an: Docker-Ausführung --env-file<env_file_name_here><docker_tag or image_id>
      Hinweis:
      Übergeben Sie keine vertraulichen Daten mit diesem Befehl, da dies zu Sicherheitsschwachstellen führen kann. Um vertrauliche Daten zu übergeben, verwenden Sie die Verfahren Übergeben Sie vertrauliche Daten an einen MID-Server in Containern mit Docker-Geheimnissen und Übergeben Sie vertrauliche Daten an einen MID-Server in Containern mit Kubernetes-Geheimnissen.

      Weitere Informationen finden Sie auf den Docker-Dokumentationsseiten unter dem Befehl „ ls“ des Docker-Images, dem Befehl „docker run“ und den Optionen zum Angeben einer env-Datei oder env-Variablen. Die ENV-Datei ist eine einfache Textdatei im Format „Name=Wert“. Wenn eine Variable sowohl in der env-Datei als auch in der Option --env angegeben ist, hat die in der Befehlszeile definierte Variable Vorrang.

      Obwohl Bereitstellungsanforderungen die empfohlene Methode zum Starten von MID-Servern in Containern sind, können sie alternativ mit Umgebungsvariablen konfiguriert werden. Beim ersten Start des Containers verwendet das Initialisierungsskript die Umgebungsvariablen und konfiguriert die MID-Server-Anwendung anhand der folgenden Umgebungsvariablen:
      MID_INSTANZ_URL
      Diese Variable legt den Konfigurationsparameter „url“ fest.
      MID_INSTANZ_ANWENDERNAME
      Diese Variable legt den Konfigurationsparameter „mid.instance.username“ fest.
      MID_INSTANZ_PASSWORT
      Diese Variable legt den Konfigurationsparameter „mid.instance.password“ fest.
      MID_SERVER_NAME
      Diese Variable legt den Konfigurationsparameter „name“ fest.
      MID_PROXY_HOST
      Diese Variable legt den Konfigurationsparameter „mid.proxy.host“ fest. Diese Variable ist nicht obligatorisch und nur erforderlich, wenn ein Proxy eingerichtet ist.
      MID_PROXY_PORT
      Diese Variable legt den Konfigurationsparameter „mid.proxy.port“ fest.
      MID_PROXY_ANWENDERNAME
      Diese Variable legt den Konfigurationsparameter „mid.proxy.username“ fest.
      MID_PROXY_PASSWORD
      Diese Variable legt den Konfigurationsparameter „mid.proxy.password“ fest.
      MID_SECRETS_FILE
      Diese Variable gibt den vollständigen Namen der geheimen Datei an, die vertrauliche Daten wie Passwörter oder Zertifikate enthält.
      MID_MUTUAL_Auth_PEM_FILE
      Diese Variable gibt den vollständigen Dateinamen der Client-Zertifikatdatei an, die für das Setup der automatischen Validierung verwendet wird.
    2. Wahlweise: Um eine Liste der Container anzuzeigen, führen Sie den Befehl Docker Container ls aus: Docker Container ls [-a]

    Übergeben Sie vertrauliche Daten an einen MID-Server in Containern mit Docker-Geheimnissen

    Sie können MID-Server in Containern mit Konfigurationsparametern konfigurieren, die über Umgebungsvariablen oder geheime Dateien übergeben werden.

    Vorbereitungen

    Erforderliche Rolle: Docker Swarm-Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    Sie können vertrauliche Daten wie Passwörter oder Zertifikate mithilfe des Docker-Geheimnissesan einen MID-Server in Containern übergeben. Richten Sie Docker Swarm ein, und starten Sie es, bevor Sie dieses Verfahren verwenden.

    Stellen Sie beim Erstellen von Bereitstellungen sicher, dass Replikate auf 1 festgelegt werden.

    Prozedur

    1. Platzieren Sie die vertraulichen Daten in mid-secrets.properties
    2. Erstellen Sie ein Docker-Geheimnis mit dem Befehl Docker-Geheimnis erstellen: Docker-Geheimnis erstellen mid-secrets mid-secrets.properties

      Die ersten „ mid-secrets “ stellen das Geheimnis im Docker-Swarm dar, während der zweite Parameter „mid-secrets.properties“ den Dateipfad zum Lesen des Geheimnisses im Dateisystem des Hostcomputers darstellt. Sie können alle erstellten Geheimnisse auflisten, indem Sie den Befehl Docker-Geheimnis ls ausführen.

      Weitere Informationen zum geheimen Docker-Befehl finden Sie in der geheimen Docker-Dokumentation.

    3. Aktualisieren Sie die Umgebungsvariable MID_SECRETS_FILE mit dem Pfad zur geheimen Datei im Container.
      Der Standardpfad für Docker-Swarm-Geheimnisse unter Linux lautet /run/secrets/mid-secrets.properties.
    4. Stellen Sie den MID-Server-Image-Container mit dem Befehl „docker service create“ im Swarm bereit: Docker-Service erstellen --name mid-service --secret mid-secrets.properties --env-file mid.env<docker-tag or image-id>

      Stellen Sie sicher, dass die Kennzeichnung „--secret“ für den Containerservice zur Zuordnung zu den angegebenen Geheimnissen angegeben ist.

    Übergeben Sie vertrauliche Daten an einen gegenseitig authentifizierten containerisierten MID-Server mit Docker-Geheimnissen

    Sie können MID-Server in Containern mit Konfigurationsparametern konfigurieren, die über Umgebungsvariablen oder geheime Dateien übergeben werden.

    Vorbereitungen

    Erforderliche Rolle: admin

    Erforderliche Rolle: Docker Swarm-Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    Wenn die zertifikatbasierte Authentifizierung für die Instanzaktiviert ist, kann der MID-Server so konfiguriert werden, dass er automatisch mithilfe eines Client-Zertifikats für gegenseitige Authentifizierung (PEM-Datei) validiert. Dies kann erfolgen, indem der vollständige Pfad zur PEM-Zertifikatdatei im Container mit der Umgebungsvariablen MID_MUTUAL_Auth_PEM_FILE festgelegt wird. Sie können beispielsweise die Variable in der Datei mid.env auf MID_MUTUAL_Auth_PEM_FILE= /run/secrets/certificate.pem aktualisieren.

    Sie können die PEM-Zertifikatdatei mit dem Docker-Geheimnis oder dem Kubernetes-Geheimnis an einen Container übergeben. Im Folgenden finden Sie einen Beispielbefehl zum Übergeben der PEM-Zertifikatdatei an einen Container: docker service create --name mid-service --secret mid-secrets.properties --secret<certificate-secret-name> --env-Datei mid.env<docker-tag or image-id>

    Das gegenseitige PEM-Zertifikat wird während der Initialisierung auf dem MID-Server installiert. Der MID Server stellt dann eine Verbindung zur Instanz her und führt eine automatische Validierung durch. Wenn der MID-Server bei erfolgreich aktivierter gegenseitiger Authentifizierung eine Verbindung zur Instanz herstellt, können Sie mmöglicherweise einige der folgenden Einträge im MID-Agent-Protokoll beobachten:

    • Anwenderdefiniertes Zertifikat im MID-Schlüsselspeicher installiert
    • MID für die Verwendung der gegenseitigen Authentifizierung konfiguriert

    Prozedur

    1. Bereiten Sie das PEM-Paket für die gegenseitige Authentifizierung vor.
    2. Erstellen Sie ein Docker-Geheimnis mit dem Befehl Docker-Geheimnis erstellen: Docker-Geheimnis erstellen Mutual-Auth-Secret<mutual-auth-pem-file-on-local-filesystem> .

      Sie können alle erstellten Geheimnisse auflisten, indem Sie den Befehl Docker-Geheimnis ls ausführen.

    3. Aktualisieren Sie die Umgebungsvariable MID_MUTUAL_Auth_PEM_FILE mit dem Pfad zur geheimen Datei im Container.

      Der Standardpfad für Docker Swarm-Geheimnisse unter Linux ist /run/secrets/<mutual-auth-pem-file-name> .

    4. Stellen Sie den MID-Server-Image-Container mit dem Befehl„docker service create“ im Swarm bereit: Docker-Service erstellen --name mid-service --secret Mutual-auth-secret --env-file mid.env<docker-tag or image-id>

      Stellen Sie sicher, dass die Kennzeichnung „--secret“ für den Containerservice zur Zuordnung zu den angegebenen Geheimnissen angegeben ist.

    5. Stellen Sie den containerisierten MID-Server im Pod mit „ deployment.yml “ bereit, und führen Sie den folgenden Befehl aus: kubectl create -f deployment.yml

    Übergeben Sie vertrauliche Daten an einen MID-Server in Containern mit Kubernetes-Geheimnissen

    Sie können MID-Server in Containern mit Konfigurationsparametern konfigurieren, die über Umgebungsvariablen oder geheime Dateien übergeben werden.

    Vorbereitungen

    Erforderliche Rolle: Kubernetes admin

    Richten Sie den Kubernertes-Cluster ein, und starten Sie ihn, bevor Sie dieses Verfahren verwenden. Weitere Informationen zu Kubernetes-Geheimnissen finden Sie in der Dokumentationzu Kubernetes-Geheimnissen.

    Hinweis:
    Kubernetes funktioniert nicht direkt mit einem lokalen Image. Laden Sie das MID-Server-Image in eine öffentliche Registry hoch, oder richten Sie eine lokale Registry ein. Lesen Sie die offiziellen Docker-Anweisungen zum Erstellen einer Docker-Registrierung.

    Stellen Sie beim Erstellen von Bereitstellungen sicher, dass Replikate auf 1 festgelegt werden.

    Prozedur

    1. Platzieren Sie die vertraulichen Daten entsprechend in mid-secrets.properties.
    2. Erstellen Sie ein Kubernetes-Geheimnis mit dem folgenden Befehl: kubectl create geheimes generisches mid-secret --from-file=mid-secrets.properties
    3. Wahlweise: Sie können alle erstellten Geheimnisse auflisten, indem Sie den folgenden Befehl ausführen: kubectl getsecrets
    4. Aktualisieren Sie die Umgebungsvariable MID_SECRETS_FILE mit dem Pfad zur geheimen Datei im Container.
    5. Erstellen Sie eine Bereitstellung mit dem folgenden YML-Beispielinhalt:
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: basic-example
      spec:
        selector:
          matchLabels:
            app: MIDServerManagement
            provider: ServiceNow
        replicas: 1
        template:
          metadata:
            labels:
              app: MIDServerManagement
              provider: ServiceNow
          spec:
            containers:
              - name: basic-example-container
                imagePullPolicy: IfNotPresent
                image: "mid:imageTag"
                env:
                  - name: MID_INSTANCE_URL
                    value: " https://exampleinstance.service-now.com/"
                  - name: MID_INSTANCE_USERNAME
                    value: "mid_server_user_name”
                  - name: MID_SECRETS_FILE
                    value: "/opt/snc_mid_server/secrets/mid-secrets.properties“
                  - name: MID_SERVER_NAME
                    value: "Basic-Example-MID"
                volumeMounts:
                  - mountPath: "/opt/snc_mid_server/secrets"
                    name: "mid-mount-secret"
                    readOnly: true
            volumes:
            - name: "mid-mount-secret"
              secret:
                secretName: "mid-secret"
      
      Hinweis:
      Es gibt viele Möglichkeiten, eine Bereitstellung oder einen Pod zu erstellen.Weitere Informationen finden Sie in den Anweisungen zur Kubernetes-Bereitstellung.  
    6. Stellen Sie den containerisierten MID-Server im Pod mit „deployment.yml“ bereit, und führen Sie den folgenden Befehl aus: kubectl create -f deployment.yml

    Übergeben Sie vertrauliche Daten an einen gegenseitig authentifizierten containerisierten MID-Server mit Kubernetes-Geheimnissen

    Sie können MID-Server in Containern mit Konfigurationsparametern konfigurieren, die über Umgebungsvariablen oder geheime Dateien übergeben werden.

    Vorbereitungen

    Erforderliche Rolle: Kubernetes admin

    Voraussetzungen:

    Wenn die zertifikatbasierte Authentifizierung für die Instanzaktiviert ist, kann der MID-Server so konfiguriert werden, dass er automatisch mithilfe eines Client-Zertifikats für gegenseitige Authentifizierung (PEM-Datei) validiert. Dies kann erfolgen, indem der vollständige Pfad zur PEM-Zertifikatdatei im Container mit der Umgebungsvariablen MID_MUTUAL_Auth_PEM_FILE festgelegt wird. Sie können die PEM-Zertifikatdatei mit dem Kubernetes-Geheimnis an einen Container übergeben.

    Das gegenseitige PEM-Zertifikat wird während der Initialisierung auf dem MID-Server installiert. Der MID Server stellt dann eine Verbindung zur Instanz her und führt eine automatische Validierung durch. Wenn der MID-Server bei erfolgreich aktivierter gegenseitiger Authentifizierung eine Verbindung zur Instanz herstellt, können Sie mmöglicherweise einige der folgenden Einträge im MID-Agent-Protokoll beobachten:

    • Anwenderdefiniertes Zertifikat im MID-Schlüsselspeicher installiert
    • MID für die Verwendung der gegenseitigen Authentifizierung konfiguriert

    Prozedur

    1. Bereiten Sie das PEM-Paket für die gegenseitige Authentifizierung vor.
    2. Erstellen Sie ein Kubernetes-Geheimnis mit dem folgenden Befehl: kubectl create geheimes generisches gegenseitiges Auth-Geheimnis --von-Datei=<mutual-auth-pem-file>
    3. Wahlweise: Sie können alle erstellten Geheimnisse überprüfen, indem Sie den folgenden Befehl ausführen: kubectl getsecrets
    4. Aktualisieren Sie die Umgebungsvariable MID_MUTUAL_Auth_PEM_FILE mit dem Pfad zur geheimen Datei im Container.
    5. Erstellen Sie eine Bereitstellung mit dem folgenden YML-Beispielinhalt:
      6.	apiVersion: apps/v1
      7.	kind: Deployment
      8.	metadata:
      9.	  name: mutual-auth-example
      10.	spec:
      11.	  selector:
      12.	    matchLabels:
      13.	      app: MIDServerManagement
      14.	      provider: ServiceNow
      15.	  replicas: 1
      16.	  template:
      17.	    metadata:
      18.	      labels:
      19.	        app: MIDServerManagement
      20.	        provider: ServiceNow
      21.	    spec:
      22.	      containers:
      23.	        - name: mutual-auth -container
      24.	          imagePullPolicy: IfNotPresent
      25.	          image: "mid:imageTag”
      26.	          env:
      27.	            - name: MID_INSTANCE_URL
      28.	              value: "https://exampleinstance.service-now.com/"
      29.	            - name: MID_INSTANCE_USERNAME
      30.	              value: "mid_server_user_name”
      31.	            - name: MID_SERVER_NAME
      32.	              value: "Mutual-Auth-Deployment-MID"
      33.	            - name: MID_MUTUAL_AUTH_PEM_FILE
      34.	              value: "/opt/snc_mid_server/mutual-auth/yourpemfile.pem"
      35.	          volumeMounts:
      36.	            - mountPath: "/opt/snc_mid_server/mutual-auth"
      37.	              name: "mid-mount-mutual-auth"
      38.	              readOnly: true
      39.	      volumes:
      40.	      - name: "mid-mount-mutual-auth"
      41.	        secret:
      42.	          secretName: "mid-mutual-auth-secret"
      
    6. Stellen Sie den containerisierten MID-Server im Pod mit „ deployment.yml “ bereit, und führen Sie den folgenden Befehl aus: kubectl create -f deployment.yml