MID-Server-Docker-Image für Linux erstellen

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 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 skalieren können.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Richten Sie den Indikator für die Konfigurationsphase einStellen Sie sicher, dass der MID-Server eine Verbindung zu Elementen innerhalb und außerhalb Ihres Netzwerks herstellen kannLaden Sie den MID-Server herunter, und installieren Sie ihn auf einem Linux- oder Windows-HostKonfigurieren Sie Ihren MID-ServerKonfigurieren Sie die MID-ServersicherheitStellen Sie sicher, dass der MID-Server eine Verbindung zu Elementen innerhalb und außerhalb Ihres Netzwerks herstellen kannLaden Sie den MID-Server herunter, und installieren Sie ihn auf einem Linux- oder Windows-HostKonfigurieren Sie Ihren MID-ServerKonfigurieren Sie die MID-Serversicherheit

    Voraussetzungen:

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

    Aktualisieren Sie die Bibliothek auf die neueste verfügbare Version oder mindestens die höchste Version mit einer Sicherheitskorrektur. Wenn identifizierte Probleme Teil einer transitiven Abhängigkeit sind, suchen Sie nach einer Version der abhängigen Bibliothek, die eine neuere transitive Version enthält. Wenn die transitive Abhängigkeit nicht durch ein Upgrade der abhängigen Bibliothek aktualisiert werden kann, erwägen Sie, 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. Siehe Die Dokumentation zum Docker-Versionsbefehl Für weitere Informationen.

    Prozedur

    1. Laden Sie die ZIP-Datei für Linux Docker-Rezept von der Downloadseite des MID-Servers herunter, und überprüfen Sie ihre Signatur.
      Weitere Informationen zur Downloadseite des MID-Servers und zur Signaturverifizierung finden Sie unter MID-Serverdateien 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 Build-Befehl aus: > Docker-Build-<path-to-docker-recipe> [ --Tag <docker-tag> ]

      Weitere Informationen zum Befehl finden Sie unter Die 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 sofort in der .env-Datei mit bereitgestellt DOCKER_TAG Parameter. Sie können diesen Parameter exportieren, bevor Sie einen Docker-Befehl ausführen, indem Sie den folgenden Befehl ausführen: > $(grep DOCKER_TAG .env) exportieren . Sie können ersetzen <docker-tag> Mit DOCKER_TAG Wert in allen folgenden Befehlen.

      Der Build-Befehl verwendet die folgenden Build-Argumente:

      Eigenschaft Beschreibung
      MID_INSTALLATION_URL Der Link zum Herunterladen von MID-ServerInstallationsdatei. Standardmäßig ist dies auf den Download-Link für die Linux 64-Bit-Installations-ZIP-Datei festgelegt, die auf bereitgestellt wird MID-ServerSeite herunterladen.
      MID_INSTALLATION_FILE Der Name eines lokalen MID-ServerInstallationsdatei. 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 kopiert werden Asset/ Unterordner des Rezeptverzeichnisses. MID-ServerReleases vor RomeWerden nicht unterstützt.

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

      MID_SIGNATURE_VERIFICATION Die Signatur von MID-ServerInstallationsdatei muss verifiziert werden. Der Standardwert ist „WAHR“. Bei „WAHR“ überprüft der Build-Prozess immer die digitale Signatur von MID-ServerInstallationsdatei, ob sie vom Remote-Server oder 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   MID-ServerAnwender mit Anwender-ID = 1001 und Gruppen-ID = 1001. Sie können eine anwenderdefinierte Anwender-ID und Gruppen-ID an den Container übergeben, indem Sie die    Build-Argumente USER_ID und GROUP_ID verwenden. Docker erstellt einen Anwender für  MID-Server Mit der angegebenen Anwender-ID und Gruppen-ID Im Container-Image alle Dateien unter MID-ServerInstallationsordner gehören diesem Anwender und der Stammgruppe (ID=0).

      Wenn das Image auf der Kubernetes-Plattform bereitgestellt wird, dies MID-ServerAnwender wird zum Containeranwender, der den MID-Server ausführt.

      Wenn das Image auf einer OpenShift- Plattform bereitgestellt wird, kann OpenShift eine beliebige nicht-Administratoranwender-ID als Containeranwender zuweisen, der den ausführt MID-Server. Dieser Anwender gehört jedoch immer zur Stammgruppe.

      In beiden Fällen hat der Containeranwender vollständigen Zugriff auf MID-ServerDateien. 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 Image auflisten, das mit dem folgenden Befehl erstellt wurde: > Docker-Image-LS

    Nächste Maßnahme

    Um Speicherplatz zu sparen, führen Sie die folgenden Befehle aus, um die freistehenden Bilder zu entfernen, wenn nicht verwendete Bilder oder Zwischenbilder vorhanden sind:
    $ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    Beispiel: Vor dem Entfernen von freistehenden Bildern der Befehl docker-Image-LS Zeigt möglicherweise etwas Ähnliches 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
    
    Nachdem Sie die freistehenden Bilder entfernt haben, den Befehl docker-Image-LS Zeigt 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 skalieren können. MID-Server werden mit Orchestration-Tools wie Docker Swarm bereitgestellt.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Voraussetzungen:

    Prozedur

    1. Sobald das Image verfügbar ist, starten Sie den neuen MID-Server mit dem Docker-Befehl „Ausführen“, und geben Sie eine Umgebungsdatei oder Umgebungsvariable an: docker-Ausführung –-env-file <env_file_name_here> <Docker_Tag oder image_ID>
      Hinweis:
      Übergeben Sie mit diesem Befehl keine vertraulichen Daten, da Sicherheitsschwachstellen auftreten können. Verwenden Sie die Verfahren, um vertrauliche Daten zu übergeben Übergeben Sie vertrauliche Daten an einen containerisierten MID-Server mit Docker-GeheimnissenUnd Übergeben Sie vertrauliche Daten an einen containerisierten MID-Server mit Kubernetes-Geheimnissen.

      Weitere Informationen finden Sie auf den Docker-Dokumentationsseiten für Der LS-Befehl des Docker-Images , Der Docker-Ausführungsbefehl , Und Gibt Optionen für eine Umgebungsdatei oder eine Umgebungsvariable an . Die Umgebungsdatei ist eine einfache Textdatei im Format Name=Wert. Wenn eine Variable sowohl in der Umgebungsdatei als auch in angegeben ist --env Option, hat die in der Befehlszeile definierte Variable Vorrang.

      Bereitstellungsanforderungen sind zwar die empfohlene Methode zum Starten containerisierter MID-Server, können aber alternativ mit Umgebungsvariablen konfiguriert werden. Wenn der Container zum ersten Mal gestartet wird, verwendet 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_USERNAME
      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 wird.
      MID_PROXY_PORT
      Diese Variable legt den Konfigurationsparameter „mid.proxy.port’ fest.
      MID_PROXY_USERNAME
      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 Zertifikat 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 von Containern anzuzeigen, führen Sie den Docker-Container-LS-Befehl aus: docker-Container-LS [-a]

    Übergeben Sie vertrauliche Daten an einen 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: Docker-Swarm-Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    Sie können vertrauliche Daten, z. B. Passwörter oder Zertifikate, mit an einen containerisierten MID-Server übergeben Docker-Geheimnis . Setup und Start Docker-Swarm Bevor Sie dieses Verfahren verwenden.

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

    Prozedur

    1. Platzieren Sie die sensiblen Daten in mid-secrets.properties
    2. Erstellen Sie ein Docker-Geheimnis mit dem Befehl „Docker-Geheimnis erstellen“: docker-Geheimnis MID-Secrets erstellen mid-secrets.properties

      Die erste Mid-Geheimnisse Stellt das Geheimnis im Docker-Swarm dar, während das zweite mid-secrets.properties Parameter stellt den Dateipfad zum Lesen des Geheimnisses im Dateisystem des Hostcomputers dar. Sie können alle erstellten Geheimnisse auflisten, indem Sie den Befehl ausführen docker-Geheimnisliste .

      Weitere Informationen zum Docker-Geheimnisbefehl finden Sie unter Die geheime Docker-Dokumentation .

    3. Aktualisieren Sie MID_SECRETS_FILE Umgebungsvariable mit dem Pfad zur geheimen Datei im Container.
      Der Standardpfad für Docker-Swarm-Geheimnisse auf Linux ist /Run/Secrets/mid-secrets.properties .
    4. Stellen Sie den MID-Server-Image-Container mit dem Befehl zum Erstellen des Docker-Service für Swarm bereit: docker-Service erstellen --Name MID-Service --Secret mid-secrets.properties --env-file Mid.env <Docker-Tag oder image-ID>

      Stellen Sie sicher, dass --Secret-Kennzeichnung Wird bereitgestellt, damit der Containerservice den angegebenen Geheimnissen zugeordnet werden kann.

    Ü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: Administrator

    Erforderliche Rolle: Docker-Swarm-Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    Wenn Zertifikatbasierte Authentifizierung Ist auf aktiviert Instanz , Der MID-Server kann für konfiguriert werden automatische Validierung mit einem Client-Zertifikat für gegenseitige Authentifizierung (PEM-Datei). Dies kann durch Festlegen des vollständigen Pfads zur PEM-Zertifikatdatei im Container mit erfolgen MID_MUTUAL_AUTH_PEM_FILE Umgebungsvariable. Sie können beispielsweise die Variable auf aktualisieren MID_MUTUAL_AUTH_PEM_FILE= /Run/secrets/certificate.pem In Mid.Umgebung Datei.

    Sie können die PEM-Zertifikatdatei mithilfe von Docker oder an einen Container übergeben Kubernetes Geheimnis. Im Folgenden finden Sie einen Beispielbefehl zum Übergeben der PEM-Zertifikatdatei an einen Container: docker-Service erstellen --Name MID-Service --Secret mid-secrets.properties --Secret <certificate-secret-name> --env-file Mid.env <Docker-Tag oder 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 validiert automatisch. Wenn der MID-Server eine Verbindung mit der Instanz herstellt und die gegenseitige Authentifizierung erfolgreich aktiviert ist, haben Sie M Beachten Sie einige der folgenden Einträge im MID-Agenten-Protokoll:

    • Anwenderdefiniertes Zertifikat wurde 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-Secret – <mutual-auth-pem-file-on-local-filesystem> für gegenseitige Authentifizierung erstellen.

      Sie können alle erstellten Geheimnisse auflisten, indem Sie den Befehl ausführen docker-Geheimnisliste .

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

      Der Standardpfad für Docker-Swarm-Geheimnisse auf Linux ist /Run/Secrets/<mutual-auth-pem-file-name> .

    4. Stellen Sie den MID-Server-Image-Container mit dem Befehl „Erstellen“ des Docker-Service für Swarm bereit: d ocker-Service erstellen --Name MID-Service --Secret Mutual-auth-Secret --env-file Mid.env <Docker-Tag oder image-ID>

      Stellen Sie sicher, dass --Secret Kennzeichnung wird angegeben, damit der Containerservice den angegebenen Geheimnissen zugeordnet werden kann.

    5. Stellen Sie den containerisierten MID-Server auf dem Pod mit bereit Bereitstellung.yml Und führen Sie den Befehl aus: Kubectl create -f Deployment.yml

    Übergeben Sie vertrauliche Daten an einen 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

    Setup und Start Kubernertes-Cluster Bevor Sie dieses Verfahren verwenden. Weitere Informationen zu Kubernetes-Geheimnissen finden Sie unter Dokumentation zu Kubernertes-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. Siehe Die offizielle Docker-Anweisung Beim Erstellen einer Docker-Registrierung.

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

    Prozedur

    1. Platzieren Sie die sensiblen Daten entsprechend in mid-secrets.properties.
    2. Erstellen Sie ein Kubernetes-Geheimnis mit dem folgenden Befehl: Kubectl erstellt generisches Geheimnis MID-Secret --from-file=mid-secrets.properties
    3. Wahlweise: Sie können alle erstellten Geheimnisse auflisten, indem Sie den folgenden Befehl ausführen: Kubectl ruft Geheimnisse ab
    4. Aktualisieren Sie MID_SECRETS_FILE Umgebungsvariable mit dem Pfad zur geheimen Datei im Container.
    5. Erstellen Sie eine Bereitstellung mit dem folgenden Beispiel -YML- Inhalt:
      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 unter Kubernetes-Bereitstellungsanweisungen .  
    6. Stellen Sie den containerisierten MID-Server mit „Deployment.yml“ auf dem Pod 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 Zertifikatbasierte Authentifizierung Ist auf aktiviert Instanz , Der MID-Server kann für konfiguriert werden automatische Validierung mit einem Client-Zertifikat für gegenseitige Authentifizierung (PEM-Datei). Dies kann durch Festlegen des vollständigen Pfads zur PEM-Zertifikatdatei im Container mit erfolgen MID_MUTUAL_AUTH_PEM_FILE Umgebungsvariable. Sie können die PEM-Zertifikatdatei mit an einen Container übergeben Kubernetes Geheimnis.

    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 validiert automatisch. Wenn der MID-Server eine Verbindung mit der Instanz herstellt und die gegenseitige Authentifizierung erfolgreich aktiviert ist, haben Sie M Beachten Sie einige der folgenden Einträge im MID-Agenten-Protokoll:

    • Anwenderdefiniertes Zertifikat wurde 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 erstellt ein generisches Generic Mutual-auth-Secret --from-file=<mutual-auth-pem-file>
    3. Wahlweise: Sie können alle erstellten Geheimnisse überprüfen, indem Sie den folgenden Befehl ausführen: Kubectl ruft Geheimnisse ab
    4. Aktualisieren Sie MID_MUTUAL_AUTH_PEM_FILE Umgebungsvariable mit dem Pfad zur geheimen Datei im Container.
    5. Erstellen Sie eine Bereitstellung mit dem folgenden Beispiel-YML-Inhalt:
      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 auf dem Pod mit bereit Bereitstellung.yml Und führen Sie den Befehl aus: Kubectl create -f Deployment.yml