diff --git a/.github/workflows/selftest.yml b/.github/workflows/selftest.yml index 086e377..161b938 100644 --- a/.github/workflows/selftest.yml +++ b/.github/workflows/selftest.yml @@ -15,5 +15,5 @@ jobs: path: e2e - uses: ./e2e with: - controller-ref: main + controller-ref: oidc-ca jumpstarter-ref: main diff --git a/action.yml b/action.yml index f7b4509..687e774 100644 --- a/action.yml +++ b/action.yml @@ -30,36 +30,12 @@ runs: - name: Deploy dex shell: bash run: | - go run github.com/cloudflare/cfssl/cmd/cfssl@latest gencert -initca "$GITHUB_ACTION_PATH"/ca-csr.json | \ - go run github.com/cloudflare/cfssl/cmd/cfssljson@latest -bare ca - - go run github.com/cloudflare/cfssl/cmd/cfssl@latest gencert -ca=ca.pem -ca-key=ca-key.pem \ - -config="$GITHUB_ACTION_PATH"/ca-config.json -profile=www "$GITHUB_ACTION_PATH"/dex-csr.json | \ - go run github.com/cloudflare/cfssl/cmd/cfssljson@latest -bare server - - cp "$GITHUB_ACTION_PATH"/kind_cluster.yaml ./controller/hack/kind_cluster.yaml make -C controller cluster - kubectl create namespace dex - kubectl -n dex create secret tls dex-tls \ - --cert=server.pem \ - --key=server-key.pem - - go run github.com/mikefarah/yq/v4@latest -i \ - '.jumpstarter-controller.config.authentication.jwt[0].issuer.certificateAuthority = load_str("ca.pem")' \ - "$GITHUB_ACTION_PATH"/values.kind.yaml - # important! kubectl create clusterrolebinding oidc-reviewer \ --clusterrole=system:service-account-issuer-discovery \ --group=system:unauthenticated - - helm repo add dex https://charts.dexidp.io - helm install --namespace dex --wait -f "$GITHUB_ACTION_PATH"/dex.values.yaml dex dex/dex - - sudo cp ca.pem /usr/local/share/ca-certificates/dex.crt - sudo update-ca-certificates - - echo "127.0.0.1 dex.dex.svc.cluster.local" | sudo tee -a /etc/hosts - name: Deploy jumpstarter controller shell: bash run: | @@ -77,107 +53,6 @@ runs: - name: Run jumpstarter shell: bash run: | - ENDPOINT=$(helm get values jumpstarter --output json | jq -r '."jumpstarter-controller".grpc.endpoint') - - sudo mkdir -p /etc/jumpstarter/exporters - sudo chown $USER /etc/jumpstarter/exporters - - . .venv/bin/activate - - export JUMPSTARTER_GRPC_INSECURE=1 - - kubectl create -n default sa test-client-sa - kubectl create -n default sa test-exporter-sa - - jmp admin create client test-client-oidc --unsafe --out /dev/null \ - --oidc-username dex:test-client-oidc - jmp admin create client test-client-sa --unsafe --out /dev/null \ - --oidc-username dex:system:serviceaccount:default:test-client-sa - jmp admin create client test-client-legacy --unsafe --save - - jmp admin create exporter test-exporter-oidc --out /dev/null \ - --oidc-username dex:test-exporter-oidc \ - --label example.com/board oidc - jmp admin create exporter test-exporter-sa --out /dev/null \ - --oidc-username dex:system:serviceaccount:default:test-exporter-sa \ - --label example.com/board sa - jmp admin create exporter test-exporter-legacy --save \ - --label example.com/board legacy - - jmp config client list - jmp config exporter list - - jmp login --client test-client-oidc \ - --endpoint "$ENDPOINT" --namespace default --name test-client-oidc \ - --issuer https://dex.dex.svc.cluster.local:5556 \ - --username test-client-oidc@example.com --password password --unsafe - - jmp login --client test-client-sa \ - --endpoint "$ENDPOINT" --namespace default --name test-client-sa \ - --issuer https://dex.dex.svc.cluster.local:5556 \ - --connector-id kubernetes \ - --token $(kubectl create -n default token test-client-sa) --unsafe - - jmp login --exporter test-exporter-oidc \ - --endpoint "$ENDPOINT" --namespace default --name test-exporter-oidc \ - --issuer https://dex.dex.svc.cluster.local:5556 \ - --username test-exporter-oidc@example.com --password password - - jmp login --exporter test-exporter-sa \ - --endpoint "$ENDPOINT" --namespace default --name test-exporter-sa \ - --issuer https://dex.dex.svc.cluster.local:5556 \ - --connector-id kubernetes \ - --token $(kubectl create -n default token test-exporter-sa) - - go run github.com/mikefarah/yq/v4@latest -i ". * load(\"$GITHUB_ACTION_PATH/exporter.yaml\")" \ - /etc/jumpstarter/exporters/test-exporter-oidc.yaml - go run github.com/mikefarah/yq/v4@latest -i ". * load(\"$GITHUB_ACTION_PATH/exporter.yaml\")" \ - /etc/jumpstarter/exporters/test-exporter-sa.yaml - go run github.com/mikefarah/yq/v4@latest -i ". * load(\"$GITHUB_ACTION_PATH/exporter.yaml\")" \ - /etc/jumpstarter/exporters/test-exporter-legacy.yaml - - jmp config client list - jmp config exporter list - - jmp run --exporter test-exporter-oidc & - jmp run --exporter test-exporter-sa & - jmp run --exporter test-exporter-legacy & - - kubectl -n default wait --for=condition=Online exporters.jumpstarter.dev/test-exporter-oidc - kubectl -n default wait --for=condition=Online exporters.jumpstarter.dev/test-exporter-sa - kubectl -n default wait --for=condition=Online exporters.jumpstarter.dev/test-exporter-legacy - - jmp config client use test-client-oidc - - jmp create lease --selector example.com/board=oidc --duration 1d - jmp get leases - jmp get exporters - jmp delete leases --all - - jmp admin get client - jmp admin get exporter - jmp admin get lease - - jmp run --exporter test-exporter-oidc & - kubectl -n default wait --for=condition=Online exporters.jumpstarter.dev/test-exporter-oidc - - jmp shell --client test-client-oidc --selector example.com/board=oidc < /shared/endpoint + containers: + - name: jumpstarter-exporter + image: quay.io/ncao/jumpstarter:summit + imagePullPolicy: IfNotPresent + volumeMounts: + - mountPath: /shared + name: shared + env: + - name: JUMPSTARTER_GRPC_INSECURE + value: "1" + command: + - /bin/bash + - -c + - | + set -euxo pipefail + + cat < qemu.yaml + apiVersion: jumpstarter.dev/v1alpha1 + kind: ExporterConfig + metadata: + namespace: $(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace) + name: $(cat /etc/hostname) + endpoint: $(cat /shared/endpoint) + token: $(cat /var/run/secrets/kubernetes.io/serviceaccount/token) + export: + qemu: + type: jumpstarter_driver_qemu.driver.Qemu + EOF + + jmp run --exporter-config qemu.yaml diff --git a/values.kind.yaml b/values.kind.yaml index baa65f2..6965aa6 100644 --- a/values.kind.yaml +++ b/values.kind.yaml @@ -1,21 +1,14 @@ -global: - baseDomain: jumpstarter.127.0.0.1.nip.io - metrics: - enabled: false - jumpstarter-controller: - grpc: - mode: "ingress" config: authentication: jwt: - - issuer: - url: https://dex.dex.svc.cluster.local:5556 - audiences: - - jumpstarter-cli - audienceMatchPolicy: MatchAny - certificateAuthority: placeholder - claimMappings: - username: - claim: "name" - prefix: "dex:" + - issuer: + url: https://kubernetes.default.svc.cluster.local + audiences: + - https://kubernetes.default.svc.cluster.local + audienceMatchPolicy: MatchAny + certificateAuthority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + claimMappings: + username: + claim: "sub" + prefix: "kubernetes:"