kannengi
Elite Observer

REST API returned code 403: 'Forbidden'

Jump to solution

Hallo CaaS-Community,

ich versuche gerade den CaaS zum ersten Mal zu befüllen.

FirstSpirit-seitig habe ich soweit alles konfiguriert (hoffe ich).

In der Caas-Generierung liegt nur eine Datenquellenseite (Teilgenerierung).

Die letzte Aktion im Auftrag ("Finalize Caas Generation") liefert folgendes Log:

INFO  20.09.2017 08:40:30.133 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): starting task 'Finalize CaaS Generation' - schedule entry 'CaaS Full' (id=18910)

INFO  20.09.2017 08:42:20.136 (com.espirit.caas.generation.listener.ReportGenerationResultListener): generated messages: 2

ERROR 20.09.2017 08:42:20.137 (com.espirit.caas.generation.listener.ReportGenerationResultListener): Deployment for target failed: CaaSEntity{uuid=caas_news_448_de, startTime=1505896829150, schedulerId=18910, projectId=10708, uidType=entity}

ERROR 20.09.2017 08:42:20.137 (com.espirit.caas.generation.listener.ReportGenerationResultListener): with message: REST API returned code 403: 'Forbidden'

INFO  20.09.2017 08:42:20.137 (com.espirit.caas.generation.listener.ReportGenerationResultListener): Time for CaaSEntity{uuid=null, startTime=1505896829150, schedulerId=18910, projectId=10708, uidType=null}: 135ms

INFO  20.09.2017 08:42:20.137 (com.espirit.caas.generation.listener.ReportGenerationResultListener): 1/2 deployed successfully.

INFO  20.09.2017 08:42:20.138 (com.espirit.caas.service.util.CaaSConnectionImpl): Send CaaS entity...

INFO  20.09.2017 08:42:20.140 (com.espirit.caas.service.util.CaaSConnectionImpl): Close CaaS connection...

INFO  20.09.2017 08:42:20.152 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'Finalize CaaS Generation' - schedule entry 'CaaS Full' (id=18910)

Heißt das, dass ich im CaaS noch irgendetwas konfigurieren muss?

Im CaaS-Admin-Interface werdenn keine Projekte angezeigt...

Danke für Eure Hilfe!

Gruß,

Benny Kannengießer

Nachricht geändert durch Benny Kannengießer
Umformatierung des Logs

0 Kudos
1 Solution

Accepted Solutions

Hallo Benny,

aktuell ist gerade Version 1.3.11. Soweit ich sehe bzw. auch selbst sehen kannst in den Release-Notes zu dieser Version (hier in der Gruppe als Blogpost verfügbar) gibt es in den Bereich im Moment keine Probleme. Natürlich muss der CaaS-Bus die CaaS-Rest-API intern in Kubernetes erreichen, um die Daten dort abzulegen (am besten via Name-Space oder gemeinsamen Netzwerksegment). Mit CaaS 1.3.8 wurde auch das Kapitel 3.13 überarbeitet, dass ich Dir genannt hatte.

Ich würde aber empfehlen möglichst bald auf die letzte Version zu gehen, da dort auch ein paar Verbesserungen bzw. der Arbeitsspeichereinstellungen vorgenommen wurden, vor allem Java betreffend. Kubernetes ist so eine Sache, von wem habt ihr denn die Konfiguration bekommen? Wir arbeiten zur Zeit noch an einer, die wir dann bald in einem der nächsten Releases mitliefern wollen (als Beispiel, dann auch mit Liveness und Readiness Probes damit auch Auto-Scaling möglich wird). Vielleicht solltest Du über den TechnicalSupport die YAMLs verfügbar machen, damit einer von uns mal ein Blick darauf werfen kann. Wenn die Konfigurations- bzw. Secret-Volume nicht nicht konfiguriert wurde, dann kommen die Docker-Container unter Kubernetes nicht an ihre Konfiguration, was auch das Problem mit der Lizenz erklären könnte.

Schönes Wochenende,

Marian

View solution in original post

0 Kudos
12 Replies
kannengi
Elite Observer

Ich sehe gerade, dass über die CaaS REST-Api auch keine Projekte angezeigt werden.

Hier die JSON-Antwort:

{

  "_size":1,

  "_total_pages":1,

  "_returned":1,

  "_embedded":{

    "rh:db":[{

      "_id":"caas_admin"

    }]

  }

}

Wie bekomme ich mein Projekt in den CaaS?

Wie gesagt, im CaaS Admin-Interface bekomme ich "No projects found".

Danke...

Gruß,

Benny Kannengießer

0 Kudos

Hallo Benny,

wie hast Du den CaaS installiert? Standalone oder per Docker? Welche Version des CaaS setzt Du ein? Mit der Lizenz auf dem CaaS alles in Ordnung?

Zu dem Http-403-Fehler müsste in den CaaS-Logs mehr zu finden sein, die Info brauchen wir hier. Bitte schau dort mal nach.

Http-403-Fehler sind eigentlich Authentifizierungsprobleme. Ich vermute hier ein Konfigurationsproblem.

Grüße Marian

0 Kudos

Die CaaS Installation ist ist im kubernetes über Docker glaube ich. Das hat unser Hoster gemacht.

Ich habe mir jetzt mal die Log files besorgt (siehe anbei). Die sind voller Einträge "Server shutdown - Your License Key has expired."

Die License wird aus /opt/caas-api/config/fs-license.conf geladen.

Jetzt habe ich nach der initialen CaaS-Installation (Juli) das FirstSpirit von der temporären auf die richtige, IP-gebundene Lizenz umgestellt.

Im CaaS wurde aber lizenzmäßig nichts gemacht.

Heute habe ich den Hoster kontaktiert und die haben die neue Lizenz (die auch der FS Server hat) eingespielt.

Hat aber nichts gebracht, die Fehler tauchen immer noch auf.

Die REST Api gibt mir übigens auch einen http response header "X-CAAS-HEADER:  Invalid CaaS License!".

Muss man vielleicht für den CaaS eine eigene Lizenz einspielen?

Es ist ein CaaS-RampUp Projekt, wär nett wenn wir das morgen lösen könnten, danke!

Viele Grüße,

Benny

0 Kudos

Hallo,

also ich habe jetzt auch ein Helpdesk-Ticket dazu erstellt. Vielleicht gehört das eher dahin.

Danke und Gruß,

Benny

0 Kudos

Hallo Benny,

in der Docker-Dokumentation (3.1.3. Übertragung der Lizenz in den CaaS) wird beschrieben, was mit der Lizenz auf dem CaaS passieren muss. Das muss natürlich euer Hoster beachten, sonst bekommst Du die genannten Probleme, weil die Lizenz nicht gefunden wird.

Laut Log wurde außerdem ohne API-Key auf die REST-API zugriffen. Dann klappt das Befüllen mit Daten nicht. Läuft da ein Proxy, der vielleicht HTTP-Header entfernt? Das sind in meinen Augen erstmal alles IT-Betriebsprobleme, die gelöst werden sollten. Grundsätzlich solltest Du in der Lage sein, per Werkzeug wie Postman, curl oder wget einen erfolgreichen HTTP-GET auf die Wurzel-Adresse des CaaS (z.B. https://mein-caas:8080/) mit API-Key durchzuführen.

Auf jeden Fall ist es schon mal gut, dass Du Dich an meine Kollegen des Technical Support gewandt hast, die kennen sich auch mit den Lizenzen sehr gut aus.

Trotzdem wäre die Version des CaaS ganz sinnvoll zu erfahren, nicht dass Du da eine einsetzt, bei der ggf. ein Problem behoben wurde. Ich bzw. wir aus meinem Team bekommen aber auch vom Technical Support Bescheid, falls Du noch weitere Hilfe benötigst. Der CaaS befindet sich immer noch in der RampUp-Phase, d.h. es wird noch aktiv daran entwickelt.

Viele Grüße

Marian

0 Kudos

Danke Marian,

ich habe das alles weitergegeben.

Vom Helpdesk habe ich auch schon eine neue LIzenz ohne IP.

Installiert ist wohl die CaaS Version 1.3.8.

Gab es da noch Bugs, die ev. Ursache des Problems sind?

Auf die REST Api komme ich (von außen) mit dem entsprechenden http header drauf. Ich weiß nicht, ob beim Schreiben in den CaaS vom FirstSpirit aus, auch auf die REST Api zugegriffen wird? Ich dachte nur auf den Caas-Bus (in der Modul-Konfiguration gibt es da keine Fehler beim Verbindungstest).

Danke und Gruß,

Benny

0 Kudos

Hallo Benny,

aktuell ist gerade Version 1.3.11. Soweit ich sehe bzw. auch selbst sehen kannst in den Release-Notes zu dieser Version (hier in der Gruppe als Blogpost verfügbar) gibt es in den Bereich im Moment keine Probleme. Natürlich muss der CaaS-Bus die CaaS-Rest-API intern in Kubernetes erreichen, um die Daten dort abzulegen (am besten via Name-Space oder gemeinsamen Netzwerksegment). Mit CaaS 1.3.8 wurde auch das Kapitel 3.13 überarbeitet, dass ich Dir genannt hatte.

Ich würde aber empfehlen möglichst bald auf die letzte Version zu gehen, da dort auch ein paar Verbesserungen bzw. der Arbeitsspeichereinstellungen vorgenommen wurden, vor allem Java betreffend. Kubernetes ist so eine Sache, von wem habt ihr denn die Konfiguration bekommen? Wir arbeiten zur Zeit noch an einer, die wir dann bald in einem der nächsten Releases mitliefern wollen (als Beispiel, dann auch mit Liveness und Readiness Probes damit auch Auto-Scaling möglich wird). Vielleicht solltest Du über den TechnicalSupport die YAMLs verfügbar machen, damit einer von uns mal ein Blick darauf werfen kann. Wenn die Konfigurations- bzw. Secret-Volume nicht nicht konfiguriert wurde, dann kommen die Docker-Container unter Kubernetes nicht an ihre Konfiguration, was auch das Problem mit der Lizenz erklären könnte.

Schönes Wochenende,

Marian

0 Kudos

Hallo Benny,

um es vielleicht abzukürzen... wir benutzen bei Kubernetes intern bereits das sog. Secret-Volume, welches für die Speicherung von sensiblen Konfigurationsdaten wie Passwörtern etc. gedacht ist:

apiVersion: v1

kind: Secret

metadata:

  name: caas-secret

type: Opaque

data:

  caas.bus.module.password: <pwd>

  caas.bus.adapter.password: <pwd>

  caas.bus.system.password: <pwd>

  ...

  caas.cluster.admin.user: <user>

  caas.cluster.admin.password: <pwd>

  caas.master.api: <api-key>

  caas.admin.user: <user>

  caas.admin.password: <pwd>

  caas.server.keystore.password: <pwd>

  caas.client.keystore.password: <pwd>

  caas.client.truststore.password: <pwd>

  file.caas-client.keystore: <base64-codierter string>

  file.caas-client.ts: <base64-codierter string>

  file.caas-server.keystore: <base64-codierter string>

  file.fs-license.conf: <base64-codierter string>

Dann im YAML des entsprechenden Container machen z.B. bzgl. der Lizenz folgendes:

...

env:

        - name: CAAS_BUS_MODULE_PASSWORD

          valueFrom:

            secretKeyRef:

              name: caas-secret

              key: caas.bus.module.password

...

volumes:

        - name: caas-secret

          secret:

            secretName: caas-secret

            items:

            - key: file.fs-license.conf

              path: fs-license.conf

            - key: file.caas-server.keystore

              path: SSL/caas-server.keystore

...

Bitte bei YAML-Code höllisch aufpassen, da die Whitespaces sehr wichtig sind, denn intern wird bei Kubernetes daraus JSON erzeugt. Bei falscher Einrückung landet das dann in einer anderen JSON-Entity und kubctl meldet einen Syntaxfehler, den man dann der YAML nicht direkt 100% zuordnen kann.

Ich hoffe ich konnte Dir einen Hinweis in die richtige Richtung geben.

Viele Grüße

Marian

0 Kudos

Hi Marian,

vielen Dank für deine detaillierten Infos, die ich alle weitergegeben habe.

Unser Hoster hat das wohl jetzt hingekriegt mit der Lizenz.

Nach dem CaaS-Deployment habe ich dann auch zum ersten Mal ein Projekt im CaaS-Admin Interface gesehen und konnte auch erfolgreich per REST-Api auf die Daten zugreifen. Allerdings gab es Deployment Task "Finalize CaaS Generation" Warnings des Typs "Deployment for target expired".

Ich habe dann im SiteArchirect die Collection-Namen verändert (von "content" auf spezifischere Namen) und seitdem deployed es gar keine Daten mehr.

Ich habe dann mal im Caas Admin Interface die "content" Collection gelöscht und dann auch das ganze Projekt. Leider kommt es nicht wieder (im Admni Interface, nach Deployment).

Hier das Log des Tasks "Finalize CaaS Generation":

INFO  26.09.2017 11:40:02.250 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): starting task 'Finalize CaaS Generation' - schedule entry 'CaaS Full' (id=18910)

INFO  26.09.2017 11:41:52.252 (com.espirit.caas.generation.listener.ReportGenerationResultListener): generated messages: 4

WARN  26.09.2017 11:41:52.252 (com.espirit.caas.generation.listener.ReportGenerationResultListener): Deployment for target expired: GenerationResult{uid=caas_news_960_de, uidType=entity, language=DE, startTime=1506426001855}

WARN  26.09.2017 11:41:52.252 (com.espirit.caas.generation.listener.ReportGenerationResultListener): Deployment for target expired: GenerationResult{uid=caas_news_768_de, uidType=entity, language=DE, startTime=1506426001855}

WARN  26.09.2017 11:41:52.252 (com.espirit.caas.generation.listener.ReportGenerationResultListener): Deployment for target expired: GenerationResult{uid=caas_contacts_1088_de, uidType=entity, language=DE, startTime=1506426001855}

WARN  26.09.2017 11:41:52.252 (com.espirit.caas.generation.listener.ReportGenerationResultListener): Deployment for target expired: GenerationResult{uid=null, uidType=null, language=null, startTime=1506426001855}

INFO  26.09.2017 11:41:52.252 (com.espirit.caas.generation.listener.ReportGenerationResultListener): 0/4 deployed successfully.

INFO  26.09.2017 11:41:52.253 (com.espirit.caas.service.util.CaaSConnectionImpl): Send CaaS entity...

INFO  26.09.2017 11:41:52.257 (com.espirit.caas.service.util.CaaSConnectionImpl): Close CaaS connection...

INFO  26.09.2017 11:41:52.278 (de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl): finished task 'Finalize CaaS Generation' - schedule entry 'CaaS Full' (id=18910)

Mache ich irgend falsch? Soll ich noch mal die CaaS-Logs anfordern? Oder einfach mal upgraden auf 1.3.10?

Danke und Gruß,

Benny

0 Kudos