From 52783df3a8942cc882ebeb6168f80e1876a2f129 Mon Sep 17 00:00:00 2001 From: Manabu McCloskey Date: Tue, 12 Mar 2024 16:45:22 -0700 Subject: [PATCH] re-work ref impl to use path based routing instead (#169) Signed-off-by: Manabu McCloskey --- .devcontainer/devcontainer.json | 5 +- examples/ref-implementation/README.md | 33 +++++---- .../argo-workflows/manifests/dev/ingress.yaml | 19 ++++- .../dev/patches/cm-argo-workflows.yaml | 4 +- .../dev/patches/deployment-argo-server.yaml | 3 + .../backstage-templates.yaml | 1 - .../skeleton/catalog-info.yaml | 2 +- .../entities/app-with-bucket/template.yaml | 2 +- .../argo-workflows/skeleton/catalog-info.yaml | 2 +- .../entities/argo-workflows/template.yaml | 2 +- .../entities/basic/skeleton/catalog-info.yaml | 2 +- .../entities/basic/template.yaml | 2 +- .../backstage/manifests/install.yaml | 38 ++++++---- examples/ref-implementation/codespaces.md | 69 ++++++++++++++++++ .../coredns/manifests/cm-coredns.yaml | 12 +-- .../images/codespaces-create.png | Bin 0 -> 122148 bytes examples/ref-implementation/images/port.png | Bin 0 -> 6619 bytes .../keycloak/manifests/ingress.yaml | 18 ++++- .../keycloak/manifests/install.yaml | 15 +++- .../keycloak/manifests/keycloak-config.yaml | 62 ++++++++-------- examples/ref-implementation/replace-port.sh | 20 ----- examples/ref-implementation/replace.sh | 36 +++++++++ hack/argo-cd/ingress.yaml.tmpl | 10 +++ hack/gitea/ingress.yaml.tmpl | 10 +++ .../cm-ingress-nginx-controller.yaml | 1 + .../localbuild/resources/argo/ingress.yaml | 10 +++ .../resources/gitea/k8s/install.yaml | 10 +++ .../resources/nginx/k8s/ingress-nginx.yaml | 1 + 28 files changed, 285 insertions(+), 104 deletions(-) create mode 100644 examples/ref-implementation/codespaces.md create mode 100644 examples/ref-implementation/images/codespaces-create.png create mode 100644 examples/ref-implementation/images/port.png delete mode 100755 examples/ref-implementation/replace-port.sh create mode 100755 examples/ref-implementation/replace.sh diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f38df91..4090fb5 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -8,5 +8,8 @@ }, "postCreateCommand": ".devcontainer/postCreateCommand.sh", "workspaceFolder": "/home/vscode/idpbuilder", - "workspaceMount": "source=${localWorkspaceFolder},target=/home/vscode/idpbuilder,type=bind" + "workspaceMount": "source=${localWorkspaceFolder},target=/home/vscode/idpbuilder,type=bind", + "hostRequirements": { + "cpus": 4 + } } diff --git a/examples/ref-implementation/README.md b/examples/ref-implementation/README.md index 4fc8871..1073f97 100644 --- a/examples/ref-implementation/README.md +++ b/examples/ref-implementation/README.md @@ -18,15 +18,20 @@ Ensure you have the following tools installed on your computer. ## Installation +**_NOTE:_** +- If you'd like to run this in your web browser through Codespaces, please follow [the instructions here](./codespaces.md) to install instead. + +- _This example assumes that you run the reference implementation with the default port configguration of 8443 for the idpBuilder. +If you happen to configure a different host or port for the idpBuilder, the manifests in the reference example need to be updated +and be configured with the new host and port. you can use the [replace.sh](replace.sh) to change the port as desired prior to applying the manifest as instructed in the command above._ + Run the following command from the root of this repository. ```bash -idpbuilder create --package-dir examples/ref-implementation +idpbuilder create --use-path-routing --package-dir examples/ref-implementation ``` -This will take ~6 minutes for everything to come up. To track the progress, you can go to the [ArgoCD UI](https://argocd.cnoe.localtest.me:8443/applications). - -**_NOTE:_**: _This example assumes that you run the reference implementation with the default port configguration of 8443 for the idpBuilder. If you happen to configure a different port for the idpBuilder, the manifests in the reference example need to be updated and be configured with the new port. you can use the [replace-port.sh](replace-port.sh) to change the port as desired prior to applying the manifest as instructed in the command above._ +This will take ~6 minutes for everything to come up. To track the progress, you can go to the [ArgoCD UI](https://cnoe.localtest.me:8443/argocd/applications). ### What was installed? @@ -49,15 +54,15 @@ The only package that cannot be removed this way is Keycloak because other packa #### Accessing UIs -- Argo CD: https://argocd.cnoe.localtest.me:8443 -- Argo Workflows: https://argo.cnoe.localtest.me:8443 -- Backstage: https://backstage.cnoe.localtest.me:8443 -- Gitea: https://gitea.cnoe.localtest.me:8443 -- Keycloak: https://keycloak.cnoe.localtest.me:8443/admin/master/console/ +- Argo CD: https://cnoe.localtest.me:8443/argocd +- Argo Workflows: https://cnoe.localtest.me:8443/argo +- Backstage: https://cnoe.localtest.me:8443/ +- Gitea: https://cnoe.localtest.me:8443/gitea +- Keycloak: https://cnoe.localtest.me:8443/keycloak/admin/master/console/ # Using it -For this example, we will walk through a few demonstrations. Once applications are ready, go to the [backstage URL](https://backstage.cnoe.localtest.me:8443). +For this example, we will walk through a few demonstrations. Once applications are ready, go to the [backstage URL](https://cnoe.localtest.me:8443). Click on the Sign-In button, you will be asked to log into the Keycloak instance. There are two users set up in this configuration, and their password can be retrieved with the following command: @@ -73,7 +78,7 @@ Both users use the same password retrieved above. If you want to create a new user or change existing users: -1. Go to the [Keycloak UI](https://keycloak.cnoe.localtest.me:8443/admin/master/console/). +1. Go to the [Keycloak UI](https://cnoe.localtest.me:8443/keycloak/admin/master/console/). Login with the username `cnoe-admin`. Password is the `KEYCLOAK_ADMIN_PASSWORD` field from the command above. 2. Select `cnoe` from the realms drop down menu. 3. Select users tab. @@ -100,9 +105,9 @@ You can click on the ArgoCD Application name to see more details. ### What just happened? -1. Backstage created [a git repository](https://gitea.cnoe.localtest.me:8443/giteaAdmin/demo), then pushed templated contents to it. -2. Backstage created [an ArgoCD Application](https://argocd.cnoe.localtest.me:8443/applications/argocd/demo?) and pointed it to the git repository. -3. Backstage registered the application as [a component](https://gitea.cnoe.localtest.me:8443/giteaAdmin/demo/src/branch/main/catalog-info.yaml) in Backstage. +1. Backstage created [a git repository](https://cnoe.localtest.me:8443/gitea/giteaAdmin/demo), then pushed templated contents to it. +2. Backstage created [an ArgoCD Application](https://cnoe.localtest.me:8443/argocd/applications/argocd/demo?) and pointed it to the git repository. +3. Backstage registered the application as [a component](https://cnoe.localtest.me:8443/gitea/giteaAdmin/demo/src/branch/main/catalog-info.yaml) in Backstage. 4. ArgoCD deployed the manifests stored in the repo to the cluster. 5. Backstage retrieved application health from ArgoCD API, then displayed it. diff --git a/examples/ref-implementation/argo-workflows/manifests/dev/ingress.yaml b/examples/ref-implementation/argo-workflows/manifests/dev/ingress.yaml index 8df5e07..b4ccaff 100644 --- a/examples/ref-implementation/argo-workflows/manifests/dev/ingress.yaml +++ b/examples/ref-implementation/argo-workflows/manifests/dev/ingress.yaml @@ -3,14 +3,27 @@ kind: Ingress metadata: name: argo-workflows-ingress namespace: argo + annotations: + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: ingressClassName: "nginx" rules: - - host: argo.cnoe.localtest.me + - host: localhost http: paths: - - path: / - pathType: Prefix + - path: /argo-workflows(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: argo-server + port: + name: web + - host: cnoe.localtest.me + http: + paths: + - path: /argo-workflows(/|$)(.*) + pathType: ImplementationSpecific backend: service: name: argo-server diff --git a/examples/ref-implementation/argo-workflows/manifests/dev/patches/cm-argo-workflows.yaml b/examples/ref-implementation/argo-workflows/manifests/dev/patches/cm-argo-workflows.yaml index ecf4659..911dadc 100644 --- a/examples/ref-implementation/argo-workflows/manifests/dev/patches/cm-argo-workflows.yaml +++ b/examples/ref-implementation/argo-workflows/manifests/dev/patches/cm-argo-workflows.yaml @@ -7,14 +7,14 @@ data: config: | sso: insecureSkipVerify: true - issuer: https://keycloak.cnoe.localtest.me:8443/realms/cnoe + issuer: https://cnoe.localtest.me:8443/keycloak/realms/cnoe clientId: name: keycloak-oidc key: client-id clientSecret: name: keycloak-oidc key: secret-key - redirectUrl: https://argo.cnoe.localtest.me:8443/oauth2/callback + redirectUrl: https://cnoe.localtest.me:8443/argo-workflows/oauth2/callback rbac: enabled: true scopes: diff --git a/examples/ref-implementation/argo-workflows/manifests/dev/patches/deployment-argo-server.yaml b/examples/ref-implementation/argo-workflows/manifests/dev/patches/deployment-argo-server.yaml index 2776ac4..bcc03d5 100644 --- a/examples/ref-implementation/argo-workflows/manifests/dev/patches/deployment-argo-server.yaml +++ b/examples/ref-implementation/argo-workflows/manifests/dev/patches/deployment-argo-server.yaml @@ -13,6 +13,9 @@ spec: path: / port: 2746 scheme: HTTP + env: + - name: BASE_HREF + value: "/argo-workflows/" args: - server - --configmap=workflow-controller-configmap diff --git a/examples/ref-implementation/backstage-templates.yaml b/examples/ref-implementation/backstage-templates.yaml index e904058..6622720 100644 --- a/examples/ref-implementation/backstage-templates.yaml +++ b/examples/ref-implementation/backstage-templates.yaml @@ -21,4 +21,3 @@ spec: - CreateNamespace=true automated: selfHeal: true - diff --git a/examples/ref-implementation/backstage-templates/entities/app-with-bucket/skeleton/catalog-info.yaml b/examples/ref-implementation/backstage-templates/entities/app-with-bucket/skeleton/catalog-info.yaml index 1074ac8..90c4e32 100644 --- a/examples/ref-implementation/backstage-templates/entities/app-with-bucket/skeleton/catalog-info.yaml +++ b/examples/ref-implementation/backstage-templates/entities/app-with-bucket/skeleton/catalog-info.yaml @@ -19,7 +19,7 @@ metadata: backstage.io/kubernetes-namespace: default argocd/app-name: ${{values.name | dump}} links: - - url: https://gitea.cnoe.localtest.me:8443 + - url: https://cnoe.localtest.me:8443/gitea title: Repo URL icon: github spec: diff --git a/examples/ref-implementation/backstage-templates/entities/app-with-bucket/template.yaml b/examples/ref-implementation/backstage-templates/entities/app-with-bucket/template.yaml index 0a209a6..b1097c2 100644 --- a/examples/ref-implementation/backstage-templates/entities/app-with-bucket/template.yaml +++ b/examples/ref-implementation/backstage-templates/entities/app-with-bucket/template.yaml @@ -100,7 +100,7 @@ spec: input: description: This is an example app # Hard coded value for this demo purposes only. - repoUrl: gitea.cnoe.localtest.me:8443?repo=${{parameters.name}} + repoUrl: cnoe.localtest.me:8443/gitea?repo=${{parameters.name}} defaultBranch: main - id: create-argocd-app name: Create ArgoCD App diff --git a/examples/ref-implementation/backstage-templates/entities/argo-workflows/skeleton/catalog-info.yaml b/examples/ref-implementation/backstage-templates/entities/argo-workflows/skeleton/catalog-info.yaml index 23bc22d..d517d42 100644 --- a/examples/ref-implementation/backstage-templates/entities/argo-workflows/skeleton/catalog-info.yaml +++ b/examples/ref-implementation/backstage-templates/entities/argo-workflows/skeleton/catalog-info.yaml @@ -13,7 +13,7 @@ metadata: apache-spark.cnoe.io/label-selector: env=dev,entity-id=${{values.name}} apache-spark.cnoe.io/cluster-name: local links: - - url: https://gitea.cnoe.localtest.me:8443 + - url: https://cnoe.localtest.me:8443/gitea title: Repo URL icon: github spec: diff --git a/examples/ref-implementation/backstage-templates/entities/argo-workflows/template.yaml b/examples/ref-implementation/backstage-templates/entities/argo-workflows/template.yaml index 7bbc0a8..448b32f 100644 --- a/examples/ref-implementation/backstage-templates/entities/argo-workflows/template.yaml +++ b/examples/ref-implementation/backstage-templates/entities/argo-workflows/template.yaml @@ -35,7 +35,7 @@ spec: input: description: This is an example app # Hard coded value for this demo purposes only. - repoUrl: gitea.cnoe.localtest.me:8443?repo=${{parameters.name}} + repoUrl: cnoe.localtest.me:8443/gitea?repo=${{parameters.name}} defaultBranch: main - id: create-argocd-app name: Create ArgoCD App diff --git a/examples/ref-implementation/backstage-templates/entities/basic/skeleton/catalog-info.yaml b/examples/ref-implementation/backstage-templates/entities/basic/skeleton/catalog-info.yaml index 1394ee2..cf9b024 100644 --- a/examples/ref-implementation/backstage-templates/entities/basic/skeleton/catalog-info.yaml +++ b/examples/ref-implementation/backstage-templates/entities/basic/skeleton/catalog-info.yaml @@ -9,7 +9,7 @@ metadata: backstage.io/kubernetes-namespace: default argocd/app-name: ${{values.name | dump}} links: - - url: https://gitea.cnoe.localtest.me:8443 + - url: https://cnoe.localtest.me:8443/gitea title: Repo URL icon: github spec: diff --git a/examples/ref-implementation/backstage-templates/entities/basic/template.yaml b/examples/ref-implementation/backstage-templates/entities/basic/template.yaml index 81f1737..8b02b37 100644 --- a/examples/ref-implementation/backstage-templates/entities/basic/template.yaml +++ b/examples/ref-implementation/backstage-templates/entities/basic/template.yaml @@ -31,7 +31,7 @@ spec: input: description: This is an example app # Hard coded value for this demo purposes only. - repoUrl: gitea.cnoe.localtest.me:8443?repo=${{parameters.name}} + repoUrl: cnoe.localtest.me:8443/gitea?repo=${{parameters.name}} defaultBranch: main - id: create-argocd-app name: Create ArgoCD App diff --git a/examples/ref-implementation/backstage/manifests/install.yaml b/examples/ref-implementation/backstage/manifests/install.yaml index 6df4652..788950b 100644 --- a/examples/ref-implementation/backstage/manifests/install.yaml +++ b/examples/ref-implementation/backstage/manifests/install.yaml @@ -70,7 +70,7 @@ data: app-config.yaml: | app: title: CNOE Backstage - baseUrl: ${BACKSTAGE_FRONTEND_URL} + baseUrl: https://cnoe.localtest.me:8443 organization: name: CNOE backend: @@ -80,7 +80,7 @@ data: # auth: # keys: # - secret: ${BACKEND_SECRET} - baseUrl: ${BACKSTAGE_FRONTEND_URL} + baseUrl: https://cnoe.localtest.me:8443 listen: port: 7007 # Uncomment the following host directive to bind to specific interfaces @@ -90,7 +90,7 @@ data: # Content-Security-Policy directives follow the Helmet format: https://helmetjs.github.io/#reference # Default Helmet Content-Security-Policy values can be removed by setting the key to false cors: - origin: ${BACKSTAGE_FRONTEND_URL} + origin: https://cnoe.localtest.me:8443 methods: [GET, HEAD, PATCH, POST, PUT, DELETE] credentials: true database: @@ -106,12 +106,12 @@ data: integrations: gitea: - - baseUrl: https://gitea.cnoe.localtest.me:8443 - host: gitea.cnoe.localtest.me:8443 + - baseUrl: https://cnoe.localtest.me:8443/gitea + host: cnoe.localtest.me:8443 username: ${GITEA_USERNAME} password: ${GITEA_PASSWORD} - - baseUrl: https://gitea.cnoe.localtest.me - host: gitea.cnoe.localtest.me + - baseUrl: https://cnoe.localtest.me/gitea + host: cnoe.localtest.me username: ${GITEA_USERNAME} password: ${GITEA_PASSWORD} # github: @@ -166,7 +166,7 @@ data: locations: # Examples from a public GitHub repository. - type: url - target: https://gitea.cnoe.localtest.me:8443/giteaAdmin/idpbuilder-localdev-backstage-templates-entities/raw/branch/main/catalog-info.yaml + target: https://cnoe.localtest.me/gitea/giteaAdmin/idpbuilder-localdev-backstage-templates-entities/raw/branch/main/catalog-info.yaml ## Uncomment these lines to add an example org # - type: url # target: https://github.com/backstage/backstage/blob/master/packages/catalog-model/examples/acme-corp.yaml @@ -184,7 +184,7 @@ data: - type: 'config' instances: - name: in-cluster - url: https://argocd.cnoe.localtest.me:8443 + url: https://cnoe.localtest.me:8443/argocd username: admin password: ${ARGOCD_ADMIN_PASSWORD} argoWorkflows: @@ -234,6 +234,8 @@ kind: Deployment metadata: name: backstage namespace: backstage + annotations: + argocd.argoproj.io/sync-wave: "10" spec: replicas: 1 selector: @@ -362,14 +364,14 @@ spec: template: engineVersion: v2 data: - BACKSTAGE_FRONTEND_URL: https://backstage.cnoe.localtest.me:8443 + BACKSTAGE_FRONTEND_URL: https://cnoe.localtest.me:8443/backstage POSTGRES_HOST: postgresql.backstage.svc.cluster.local POSTGRES_PORT: '5432' POSTGRES_DB: backstage POSTGRES_USER: backstage POSTGRES_PASSWORD: "{{.POSTGRES_PASSWORD}}" - ARGO_WORKFLOWS_URL: https://argo.cnoe.localtest.me:8443 - KEYCLOAK_NAME_METADATA: https://keycloak.cnoe.localtest.me:8443/realms/cnoe/.well-known/openid-configuration + ARGO_WORKFLOWS_URL: https://cnoe.localtest.me:8443/argo-workflows + KEYCLOAK_NAME_METADATA: https://cnoe.localtest.me:8443/keycloak/realms/cnoe/.well-known/openid-configuration KEYCLOAK_CLIENT_SECRET: "{{.BACKSTAGE_CLIENT_SECRET}}" ARGOCD_AUTH_TOKEN: "argocd.token={{.ARGOCD_SESSION_TOKEN}}" ARGO_CD_URL: 'https://argocd-server.argocd.svc.cluster.local/api/v1/' @@ -422,7 +424,17 @@ metadata: spec: ingressClassName: "nginx" rules: - - host: backstage.cnoe.localtest.me + - host: localhost + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: backstage + port: + name: http + - host: cnoe.localtest.me http: paths: - path: / diff --git a/examples/ref-implementation/codespaces.md b/examples/ref-implementation/codespaces.md new file mode 100644 index 0000000..6507be9 --- /dev/null +++ b/examples/ref-implementation/codespaces.md @@ -0,0 +1,69 @@ +## Running idpbuilder in Codespaces in Browser + +**_NOTE:_**: __Steps described below applies to running this implementation in Codespaces in **web browsers** (e.g. Firefox and Chrome). +If you are using Codespaces with GitHub CLI, steps described here do not apply to you.__ + + +Let's create an instance of Codespaces. + +![img.png](images/codespaces-create.png) + +It may take a few minutes for it to be ready. Once it's ready, you can either get the latest release of idpbuilder or build from the main branch. +Build the idpbuilder binary. + + +- Get the latest release: + ```bash + version=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/cnoe-io/idpbuilder/releases/latest) + version=${version##*/} + wget https://github.com/cnoe-io/idpbuilder/releases/download/${version}/idpbuilder-linux-amd64.tar.gz + tar xzf idpbuilder-linux-amd64.tar.gz + sudo mv ./idpbuilder /usr/local/bin/ + ``` +- Alternatively, build from the main branch + ```bash + make build + sudo mv ./idpbuilder /usr/local/bin/ + ``` + +Codespaces assigns random hostname to your specific instance. You need to make sure they are reflected correctly. +Instance host name is available as an environment variable (`CODESPACE_NAME`). Let's use it to setup our host names. +Run the following commands to update host name and ports. Port is set to 443 because this is the port used by the browser to access your instance. + + +```bash +cd examples/ref-implementation + +./replace.sh ${CODESPACE_NAME}-8080.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN} 443 + +cd - +``` + +Now you are ready to run idpbuilder with reference implementation. + +```bash +idpbuilder create --protocol http \ + --host ${CODESPACE_NAME}-8080.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN} \ + --port 8080 --use-path-routing --package-dir examples/ref-implementation +``` +Once idpbuilder finishes bootstrapping, you should have port 8080 forward in the port tab within Codespaces. + +![](images/port.png) + +You may get a 404 page after clicking the port 8080 forwarded address. This is completely normal because Backstage may not be ready yet. +Give it a few more minutes and it should redirect you to a Backstage page. + +If you'd like to track progress of deployment, go to `/argocd` path and login with your ArgoCD credentials. +For example run this command to get the URL for Argo CD: +```bash +echo https://${CODESPACE_NAME}-8080.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}/argocd +``` + +From here on, you can follow the instructions in the [README](./README.md) file. The only difference is that the URL to access UIs is given by: + +```echo +echo https://${CODESPACE_NAME}-8080.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN} +``` + +For example, if you need to access Argo Workflows UI, instead of going to `https://cnoe.localtest.me:8443/argo`, +you go to `https://${CODESPACE_NAME}-8080.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}/argo` diff --git a/examples/ref-implementation/coredns/manifests/cm-coredns.yaml b/examples/ref-implementation/coredns/manifests/cm-coredns.yaml index 1038f8a..9cf733a 100644 --- a/examples/ref-implementation/coredns/manifests/cm-coredns.yaml +++ b/examples/ref-implementation/coredns/manifests/cm-coredns.yaml @@ -1,5 +1,6 @@ -# the only purpose of this is to resolve `keycloak.cnoe.localtest.me` to a cluster IP -# normally, `keycloak.cnoe.localtest.me` resolves to 127.0.0.1 and thus oidc endpoint configurations cannot be obtained. +# the only purpose of this is to resolve external DNS entries such as `redesigned-bassoon-r4jjwpvv99vhx9gp-8080.app.github.dev` to a cluster IP +# normally, `redesigned-bassoon-r4jjwpvv99vhx9gp-8080.app.github.dev` resolves to 127.0.0.1 and thus oidc endpoint configurations cannot be obtained. +# in addition, we need to ensure traffic do not go out of cluster when not necessary. apiVersion: v1 kind: ConfigMap metadata: @@ -13,10 +14,9 @@ data: lameduck 5s } ready - rewrite name keycloak.cnoe.localtest.me ingress-nginx-controller.ingress-nginx.svc.cluster.local - rewrite name gitea.cnoe.localtest.me ingress-nginx-controller.ingress-nginx.svc.cluster.local - rewrite name argocd.cnoe.localtest.me ingress-nginx-controller.ingress-nginx.svc.cluster.local - rewrite name argo.cnoe.localtest.me ingress-nginx-controller.ingress-nginx.svc.cluster.local + + rewrite name cnoe.localtest.me ingress-nginx-controller.ingress-nginx.svc.cluster.local + kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa diff --git a/examples/ref-implementation/images/codespaces-create.png b/examples/ref-implementation/images/codespaces-create.png new file mode 100644 index 0000000000000000000000000000000000000000..39bbb27f18c0a254df8665f0ab34b8bc9cdedfc0 GIT binary patch literal 122148 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%0Aj7F`*N{OY+FLG;H>o2idpO1lsFQ^zKpFSfU)E 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�W=oeB< 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 /dev/null + curl --fail-with-body -H "Authorization: bearer ${KEYCLOAK_TOKEN}" "${KYECLOAK_URL}/admin/realms/cnoe" &> /dev/null if [ $? -eq 0 ]; then exit 0 fi @@ -248,47 +250,47 @@ spec: curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/realm-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms + ${KYECLOAK_URL}/admin/realms curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/client-scope-groups-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/client-scopes + ${KYECLOAK_URL}/admin/realms/cnoe/client-scopes curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/group-admin-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/groups + ${KYECLOAK_URL}/admin/realms/cnoe/groups curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/group-base-user-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/groups + ${KYECLOAK_URL}/admin/realms/cnoe/groups # Create scope mapper echo 'adding group claim to tokens' - CLIENT_SCOPE_GROUPS_ID=$(curl -sS -H "Content-Type: application/json" -H "Authorization: bearer ${KEYCLOAK_TOKEN}" -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/client-scopes | jq -e -r '.[] | select(.name == "groups") | .id') + CLIENT_SCOPE_GROUPS_ID=$(curl -sS -H "Content-Type: application/json" -H "Authorization: bearer ${KEYCLOAK_TOKEN}" -X GET ${KYECLOAK_URL}/admin/realms/cnoe/client-scopes | jq -e -r '.[] | select(.name == "groups") | .id') curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/group-mapper-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/client-scopes/${CLIENT_SCOPE_GROUPS_ID}/protocol-mappers/models + ${KYECLOAK_URL}/admin/realms/cnoe/client-scopes/${CLIENT_SCOPE_GROUPS_ID}/protocol-mappers/models echo "creating test users" curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/user-user1.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/users + ${KYECLOAK_URL}/admin/realms/cnoe/users curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/user-user2.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/users + ${KYECLOAK_URL}/admin/realms/cnoe/users USER1ID=$(curl -sS -H "Content-Type: application/json" \ - -H "Authorization: bearer ${KEYCLOAK_TOKEN}" 'http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/users?lastName=one' | jq -r '.[0].id') + -H "Authorization: bearer ${KEYCLOAK_TOKEN}" "${KYECLOAK_URL}/admin/realms/cnoe/users?lastName=one" | jq -r '.[0].id') USER2ID=$(curl -sS -H "Content-Type: application/json" \ - -H "Authorization: bearer ${KEYCLOAK_TOKEN}" 'http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/users?lastName=two' | jq -r '.[0].id') + -H "Authorization: bearer ${KEYCLOAK_TOKEN}" "${KYECLOAK_URL}/admin/realms/cnoe/users?lastName=two" | jq -r '.[0].id') echo "setting user passwords" jq -r --arg pass ${USER1_PASSWORD} '.value = $pass' /var/config/user-password.json > /tmp/user-password-to-be-applied.json @@ -296,54 +298,54 @@ spec: curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X PUT --data @/tmp/user-password-to-be-applied.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/users/${USER1ID}/reset-password + ${KYECLOAK_URL}/admin/realms/cnoe/users/${USER1ID}/reset-password curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X PUT --data @/tmp/user-password-to-be-applied.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/users/${USER2ID}/reset-password + ${KYECLOAK_URL}/admin/realms/cnoe/users/${USER2ID}/reset-password echo "creating Argo Workflows client" curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/argo-client-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients + ${KYECLOAK_URL}/admin/realms/cnoe/clients CLIENT_ID=$(curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ - -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients | jq -e -r '.[] | select(.clientId == "argo-workflows") | .id') + -X GET ${KYECLOAK_URL}/admin/realms/cnoe/clients | jq -e -r '.[] | select(.clientId == "argo-workflows") | .id') CLIENT_SCOPE_GROUPS_ID=$(curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ - -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/client-scopes | jq -e -r '.[] | select(.name == "groups") | .id') + -X GET ${KYECLOAK_URL}/admin/realms/cnoe/client-scopes | jq -e -r '.[] | select(.name == "groups") | .id') curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ - -X PUT http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients/${CLIENT_ID}/default-client-scopes/${CLIENT_SCOPE_GROUPS_ID} + -X PUT ${KYECLOAK_URL}/admin/realms/cnoe/clients/${CLIENT_ID}/default-client-scopes/${CLIENT_SCOPE_GROUPS_ID} ARGO_WORKFLOWS_CLIENT_SECRET=$(curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ - -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients/${CLIENT_ID} | jq -e -r '.secret') + -X GET ${KYECLOAK_URL}/admin/realms/cnoe/clients/${CLIENT_ID} | jq -e -r '.secret') echo "creating Backstage client" curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ -X POST --data @/var/config/backstage-client-payload.json \ - http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients + ${KYECLOAK_URL}/admin/realms/cnoe/clients CLIENT_ID=$(curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ - -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients | jq -e -r '.[] | select(.clientId == "backstage") | .id') + -X GET ${KYECLOAK_URL}/admin/realms/cnoe/clients | jq -e -r '.[] | select(.clientId == "backstage") | .id') - CLIENT_SCOPE_GROUPS_ID=$(curl -sS -H "Content-Type: application/json" -H "Authorization: bearer ${KEYCLOAK_TOKEN}" -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/client-scopes | jq -e -r '.[] | select(.name == "groups") | .id') - curl -sS -H "Content-Type: application/json" -H "Authorization: bearer ${KEYCLOAK_TOKEN}" -X PUT http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients/${CLIENT_ID}/default-client-scopes/${CLIENT_SCOPE_GROUPS_ID} + CLIENT_SCOPE_GROUPS_ID=$(curl -sS -H "Content-Type: application/json" -H "Authorization: bearer ${KEYCLOAK_TOKEN}" -X GET ${KYECLOAK_URL}/admin/realms/cnoe/client-scopes | jq -e -r '.[] | select(.name == "groups") | .id') + curl -sS -H "Content-Type: application/json" -H "Authorization: bearer ${KEYCLOAK_TOKEN}" -X PUT ${KYECLOAK_URL}/admin/realms/cnoe/clients/${CLIENT_ID}/default-client-scopes/${CLIENT_SCOPE_GROUPS_ID} BACKSTAGE_CLIENT_SECRET=$(curl -sS -H "Content-Type: application/json" \ -H "Authorization: bearer ${KEYCLOAK_TOKEN}" \ - -X GET http://keycloak.keycloak.svc.cluster.local:8080/admin/realms/cnoe/clients/${CLIENT_ID} | jq -e -r '.secret') + -X GET ${KYECLOAK_URL}/admin/realms/cnoe/clients/${CLIENT_ID} | jq -e -r '.secret') ARGOCD_PASSWORD=$(./kubectl -n argocd get secret argocd-initial-admin-secret -o go-template='{{.data.password | base64decode }}') - ARGOCD_SESSION_TOKEN=$(curl -k -sS https://argocd-server.argocd.svc.cluster.local:443/api/v1/session -d "{\"username\":\"admin\",\"password\":\"${ARGOCD_PASSWORD}\"}" | jq -r .token) + ARGOCD_SESSION_TOKEN=$(curl -k -sS http://argocd-server.argocd.svc.cluster.local:443/api/v1/session -d "{\"username\":\"admin\",\"password\":\"${ARGOCD_PASSWORD}\"}" | jq -r .token) echo \ "apiVersion: v1 diff --git a/examples/ref-implementation/replace-port.sh b/examples/ref-implementation/replace-port.sh deleted file mode 100755 index 0d52b4f..0000000 --- a/examples/ref-implementation/replace-port.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# Check if the new port number is provided as an argument -if [ "$#" -ne 1 ]; then - echo "Usage: $0 NEW_PORT" - exit 1 -fi - -# Assign the first script argument to NEW_PORT -NEW_PORT="$1" - -# Base directory to start from, "." means the current directory -BASE_DIRECTORY="." - -# Find all .yaml files recursively starting from the base directory -# and perform an in-place search and replace from 8443 to the new port -find "$BASE_DIRECTORY" -type f -name "*.yaml" -exec sed -i '' "s/8443/${NEW_PORT}/g" {} + - -echo "Replacement complete. All occurrences of 8443 have been changed to ${NEW_PORT}." - diff --git a/examples/ref-implementation/replace.sh b/examples/ref-implementation/replace.sh new file mode 100755 index 0000000..365a0c9 --- /dev/null +++ b/examples/ref-implementation/replace.sh @@ -0,0 +1,36 @@ +# this script replaces hostname and port used by this implementation. +# intended for use in environments such as Codespaces where external host and port need to be updated to access in-cluster resources. + +#!/bin/bash +set -e +# Check if the new port number is provided as an argument +if [ "$#" -ne 2 ]; then + echo "Usage: NEW_HOST NEW_PORT" + exit 1 +fi + +# Assign the first script argument to NEW_PORT +NEW_HOST="$1" +NEW_PORT="$2" + +# Base directory to start from, "." means the current directory +CURRENT_DIR=$(echo "${PWD##*/}") +if [[ ${CURRENT_DIR} != "ref-implementation" ]]; then + echo "please run this script from the examples/ref-implementation directory" + exit 10 +fi +BASE_DIRECTORY="." + +# Find all .yaml files recursively starting from the base directory +# and perform an in-place search and replace from 8443 to the new port +find "$BASE_DIRECTORY" -type f -name "*.yaml" -exec sed -i "s/8443/${NEW_PORT}/g" {} + +find "$BASE_DIRECTORY" -type f -name "*.yaml" -exec sed -i "s/cnoe\.localtest\.me/${NEW_HOST}/g" {} + + +# Remove hostname-port configuration if the new port is 443. Browsers strip 443 but keycloak still expects 443 in url. +if [[ ${NEW_PORT} == "443" ]]; then + sed -i "/hostname-port/d" keycloak/manifests/install.yaml + sed -i "/hostname-admin/d" keycloak/manifests/install.yaml + sed -i '0,/:443/{s/:443//}' argo-workflows/manifests/dev/patches/cm-argo-workflows.yaml +fi + +echo "Replacement complete." diff --git a/hack/argo-cd/ingress.yaml.tmpl b/hack/argo-cd/ingress.yaml.tmpl index 529516e..30149da 100644 --- a/hack/argo-cd/ingress.yaml.tmpl +++ b/hack/argo-cd/ingress.yaml.tmpl @@ -22,6 +22,16 @@ spec: name: argocd-server port: name: http + - host: localhost + http: + paths: + - path: /argocd(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: argocd-server + port: + name: http {{- else -}} --- diff --git a/hack/gitea/ingress.yaml.tmpl b/hack/gitea/ingress.yaml.tmpl index 9f70341..effb6dd 100644 --- a/hack/gitea/ingress.yaml.tmpl +++ b/hack/gitea/ingress.yaml.tmpl @@ -22,6 +22,16 @@ spec: number: 3000 path: /gitea(/|$)(.*) pathType: ImplementationSpecific + - host: localhost + http: + paths: + - backend: + service: + name: my-gitea-http + port: + number: 3000 + path: /gitea(/|$)(.*) + pathType: ImplementationSpecific {{ else if ( ne .Host "cnoe.localtest.me") }} --- apiVersion: networking.k8s.io/v1 diff --git a/hack/ingress-nginx/cm-ingress-nginx-controller.yaml b/hack/ingress-nginx/cm-ingress-nginx-controller.yaml index 665a6ef..a996854 100644 --- a/hack/ingress-nginx/cm-ingress-nginx-controller.yaml +++ b/hack/ingress-nginx/cm-ingress-nginx-controller.yaml @@ -6,3 +6,4 @@ metadata: data: allow-snippet-annotations: "true" proxy-buffer-size: "32k" + use-forwarded-headers: "true" diff --git a/pkg/controllers/localbuild/resources/argo/ingress.yaml b/pkg/controllers/localbuild/resources/argo/ingress.yaml index 529516e..30149da 100644 --- a/pkg/controllers/localbuild/resources/argo/ingress.yaml +++ b/pkg/controllers/localbuild/resources/argo/ingress.yaml @@ -22,6 +22,16 @@ spec: name: argocd-server port: name: http + - host: localhost + http: + paths: + - path: /argocd(/|$)(.*) + pathType: ImplementationSpecific + backend: + service: + name: argocd-server + port: + name: http {{- else -}} --- diff --git a/pkg/controllers/localbuild/resources/gitea/k8s/install.yaml b/pkg/controllers/localbuild/resources/gitea/k8s/install.yaml index bc0918e..937aa0e 100644 --- a/pkg/controllers/localbuild/resources/gitea/k8s/install.yaml +++ b/pkg/controllers/localbuild/resources/gitea/k8s/install.yaml @@ -576,6 +576,16 @@ spec: number: 3000 path: /gitea(/|$)(.*) pathType: ImplementationSpecific + - host: localhost + http: + paths: + - backend: + service: + name: my-gitea-http + port: + number: 3000 + path: /gitea(/|$)(.*) + pathType: ImplementationSpecific {{ else if ( ne .Host "cnoe.localtest.me") }} --- apiVersion: networking.k8s.io/v1 diff --git a/pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml b/pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml index 1797504..50914b9 100644 --- a/pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml +++ b/pkg/controllers/localbuild/resources/nginx/k8s/ingress-nginx.yaml @@ -324,6 +324,7 @@ apiVersion: v1 data: allow-snippet-annotations: "true" proxy-buffer-size: 32k + use-forwarded-headers: "true" kind: ConfigMap metadata: labels: