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

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 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 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 die Docker-Engine und die 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 einer Sicherheitskorrektur. Wenn identifizierte Probleme Teil einer Transitabhängigkeit sind, suchen Sie nach einer Version der abhängigen Bibliothek, die eine neuere Transitversion enthält. Wenn die Transitabhängigkeit nicht durch ein Upgrade der abhängigen Bibliothek aktualisiert werden kann, sollten Sie die Abhängigkeit ausschließen und direkt eine sichere Version einbeziehen.

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

    Prozedur

    1. Laden Sie die ZIP-Datei mit dem Linux-Docker-Rezept von der MID Server-Downloadseite herunter, und überprüfen Sie die Signatur.
      Weitere Informationen zur MID Server-Downloadseite und zur Signaturüberprüfung finden Sie unter MID Server-Dateien herunterladen.
    2. Entpacken 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 Befehl build 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 Build-Befehl verwendet 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_FILE Der Name einer lokalen MID-Server -Installationsdatei 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_VERIFIZIERUNG Die Signatur der Installationsdatei MID-Server muss überprüft werden. Der Standardwert ist TRUE. Wenn dies der Fall ist, überprüft der Build-Prozess immer die digitale Signatur der Installationsdatei MID-Server, unabhängig davon, ob sie vom Remote-Server oder einer lokalen Datei heruntergeladen wird. Andernfalls wird die Signaturüberprüfung übersprungen.

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

      USER_ID und GROUP_ID

      Wenn nichts angegeben ist, erstellt Docker standardmäßig einen MID-Server -Benutzer mit der Benutzer-ID = 1001 und der Gruppen-ID = 1001. Sie können eine benutzerdefinierte Benutzer-ID und Gruppen-ID an den Container übergeben, indem Sie die Build-Argumente USER_ID und GROUP_ID verwenden. Docker erstellt einen Benutzer für MID-Server mit der angegebenen Benutzer-ID und Gruppen-ID. Innerhalb des Container-Image befinden sich alle Dateien im Installationsordner MID-Server im Besitz dieses Benutzers und der Stammgruppe (ID = 0).

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

      Wenn das Image auf einer OpenShift-Plattform bereitgestellt wird, kann OpenShift eine beliebige Nicht-Admin-Benutzer-ID als Containerbenutzer 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 auf Kubernetes als auch auf 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, wenn nicht verwendete Images oder Zwischen-Images vorhanden sind, führen Sie die folgenden Befehle aus, um diese baumelnden Images zu entfernen:
    $ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    Vor dem Entfernen von baumelnden Images kann der Befehl „ docker image ls “ beispielsweise Folgendes anzeigen:
    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 baumelnden Images zeigt der Befehl docker image ls Folgendes:
    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 run --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 für den Befehl „ ls“ des Docker-Image, den Befehl „docker run“ und die Optionen zum Angeben einer ENV-Datei oder einer ENV-Variable. Die ENV-Datei ist eine einfache Textdatei mit dem Format name=value. Wenn eine Variable sowohl in der ENV-Datei als auch in der Option --env angegeben ist, hat die in der Befehlszeile definierte Variable Vorrang.

      Während Bereitstellungsanforderungen die empfohlene Methode zum Starten von containerisierten MID Servern sind, können sie alternativ mit Umgebungsvariablen konfiguriert werden. Wenn der Container zum ersten Mal gestartet wird, übernimmt das Initialisierungsskript die Umgebungsvariablen und konfiguriert die MID Server-Anwendung mit den folgenden Umgebungsvariablen:
      MID_INSTANCE_URL
      Diese Variable legt den Konfigurationsparameter „url“ fest.
      MID_INSTANCE_BENUTZERNAME
      Diese Variable legt den Konfigurationsparameter „mid.instance.username“ fest.
      MID_INSTANCE_PASSWORD
      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_BENUTZERNAME
      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 geheimen Dateinamen an, der 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 containerisierte MID Server 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 mit dem Docker-Geheimnisan 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 die Replikate auf 1 gehalten werden.

    Prozedur

    1. Platzieren Sie die vertraulichen Daten in mid-secrets.properties
    2. Erstellen Sie ein Docker-Geheimnis mit dem Befehl „docker secret create“: docker secret create mid-secrets mid-secrets.properties

      Das erste mid-secrets stellt 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 geheimen Schlüssel auflisten, indem Sie den Befehl docker secret ls ausführen.

      Weitere Informationen zum Befehl „docker secret“ finden Sie in der Dokumentationzu „docker secret“.

    3. Aktualisieren Sie die Umgebungsvariable MID_SECRETS_FILE mit dem Pfad zur geheimen Datei im Container.
      Der Standardpfad für geheime Docker-Swarm-Schlüssel unter Linux lautet /run/secrets/mid-secrets.properties.
    4. Stellen Sie den MID Server-Image-Container für Swarm mit dem Befehl „docker service create“ bereit: docker service create --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 bereitgestellt wird, der den angegebenen Geheimnissen zugeordnet werden soll.

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

    Sie können containerisierte MID Server 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 zertifikatsbasierte Authentifizierung für die Instanzaktiviert ist, kann der MID Server für die automatische Validierung mithilfe eines Client-Zertifikats für gegenseitige Authentifizierung (PEM-Datei) konfiguriert werden. Dies kann erreicht werden, indem der vollständige Pfad zur PEM-Zertifikatdatei im Container mit der Umgebungsvariablen MID_MUTUAL_AUTH_PEM_FILE festgelegt wird. Beispielsweise können Sie 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- oder 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-file mid.env<docker-tag or image-id>

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

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

    Prozedur

    1. Bereiten Sie das PEM-Bundle für die gegenseitige Authentifizierung vor.
    2. Erstellen Sie einen geheimen Docker-Schlüssel mit dem Befehl „docker secret create“: Docker-Secret Create Mutual-Auth-Secret<mutual-auth-pem-file-on-local-filesystem> .

      Sie können alle erstellten geheimen Schlüssel auflisten, indem Sie den Befehl docker secret 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 geheime Docker-Swarm-Schlüssel unter Linux lautet /run/secrets/.<mutual-auth-pem-file-name> .

    4. Stellen Sie den MID Server-Image-Container für Swarm mit dem Befehl „docker service create“ bereit: docker service create --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 bereitgestellt wird, um die angegebenen Geheimnisse zuzuordnen.

    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 containerisierte MID Server mit Konfigurationsparametern konfigurieren, die über Umgebungsvariablen oder geheime Dateien übergeben werden.

    Vorbereitungen

    Erforderliche Rolle: Kubernetest-Administrator

    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 Registrierung hoch, oder richten Sie eine lokale Registrierung ein. Weitere Informationen zum Erstellen einer Docker-Registrierung finden Sie in der offiziellen Docker-Anweisung.

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

    Prozedur

    1. Platzieren Sie die vertraulichen Daten entsprechend in mid-secrets.properties.
    2. Erstellen Sie ein Kubernetes-Geheimnis mit folgendem Befehl: kubectl create secret generic mid-secret --from-file=mid-secrets.properties
    3. Wahlweise: Sie können alle erstellten geheimen Schlüssel auflisten, indem Sie den folgenden Befehl ausführen: kubectl get secrets
    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 Kubernetes-Bereitstellungsanweisungen.  
    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 containerisierte MID Server mit Konfigurationsparametern konfigurieren, die über Umgebungsvariablen oder geheime Dateien übergeben werden.

    Vorbereitungen

    Erforderliche Rolle: Kubernetest-Administrator

    Voraussetzungen:

    Wenn die zertifikatsbasierte Authentifizierung für die Instanzaktiviert ist, kann der MID Server für die automatische Validierung mithilfe eines Client-Zertifikats für gegenseitige Authentifizierung (PEM-Datei) konfiguriert werden. Dies kann erreicht werden, 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 geheimen Schlüssel [ Kubernetes an einen Container übergeben.

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

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

    Prozedur

    1. Bereiten Sie das PEM-Bundle für die gegenseitige Authentifizierung vor.
    2. Erstellen Sie ein Kubernetes-Geheimnis mit folgendem Befehl: kubectl create secret generisches Mutual-auth-secret --from-file=<mutual-auth-pem-file>
    3. Wahlweise: Sie können alle erstellten geheimen Schlüssel überprüfen, indem Sie den folgenden Befehl ausführen: kubectl get secrets
    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