Skip to content

Instantly share code, notes, and snippets.

@usrbinkat
Last active March 30, 2022 20:15
Show Gist options
  • Select an option

  • Save usrbinkat/9d4004465dadae663184d495dede74cb to your computer and use it in GitHub Desktop.

Select an option

Save usrbinkat/9d4004465dadae663184d495dede74cb to your computer and use it in GitHub Desktop.
Kong API Configuration via Curl

Setup RBAC & Portal via Kong API

Tested against a local TheKongLaboratory deployment.

#!/bin/bash
set -xe

################################################################################
## This script is designed to perform initial RBAC & Dev Portal enablement
## post deploy on a new Kong API Gateway

## Authors:
## - Kat Morgan (consultant @konghq.com)
## - 

## Dependencies:
## - curl
## - jq


################################################################################
# Top Level Variables
export TOKEN='Kong-Admin-Token:kong_admin'
export HOST='https://manager.kong.kind.home.arpa/api'
export HOST_RESOLVE='manager.kong.kind.home.arpa:443:127.0.0.1'

# Example new admin variables
export WORKSPACE='public'
export USERNAME='new_admin'
export PASSWORD='new_admin_password'
export EMAIL='[email protected]'
export ADMIN_TOKEN='Kong-Admin-Token:new_admin_password'


################################################################################
# Developer Portal

# Enable developer portal
curl -sk -H "${TOKEN}" ${HOST}/workspaces/${WORKSPACE} -X PATCH --data "config.portal=true" | jq .


#################################################################################
# RBAC

# Create administrator role for workspace
API_ENDPOINT="${HOST}/${WORKSPACE}/rbac/roles"
cat <<EOF | curl -Lks -H "${TOKEN}" ${API_ENDPOINT} \
                 -H "Content-Type: application/json" \
                 --data-binary @- | jq .
          {
            "name":"workspace-admin",
            "comment":"Workspace Admin"
          }
EOF

# Create Administrator
API_ENDPOINT="${HOST}/${WORKSPACE}/admins"
cat <<EOF | curl -Lks -H "${TOKEN}" ${API_ENDPOINT} \
                 -H "Content-Type: application/json" \
                 --data-binary @- | jq .
          {
            "email": "${EMAIL}",
            "username": "${USERNAME}",
            "rbac_token_enabled": true
          }
EOF

# Pull Admin User Registration Token
API_ENDPOINT="${HOST}/${WORKSPACE}/admins/${USERNAME}"
export REGISTER_TOKEN=$(curl -Lks -H "${TOKEN}" ${API_ENDPOINT}?generate_register_url=true | jq .token -r)

# Register Admin User with Registration Token
API_ENDPOINT="${HOST}/${WORKSPACE}/admins/register"
cat <<EOF | curl -Lks -H "${TOKEN}" ${API_ENDPOINT} \
                 -H "Content-Type: application/json" \
                 --data-binary @- | jq .
          {
            "token": "${REGISTER_TOKEN}",
            "username": "${USERNAME}",
            "password": "${PASSWORD}",
            "email": "${EMAIL}"
          }
EOF

Create a mockbin.com service via Kong API

Tested against a local TheKongLaboratory deployment.

#!/bin/bash
#set -xe

################################################################################
## This script demonstrates scripted creation of a mockbin service with curl

## Authors:
## - Kat Morgan (consultant @konghq.com)
## - 

## Dependencies:
## - curl
## - jq


################################################################################
# Top Level Variables
export HOST='https://manager.kong.kind.home.arpa/api'
export HOST_RESOLVE='manager.kong.kind.home.arpa:443:127.0.0.1'
export TOKEN='Kong-Admin-Token:kong_admin'
export WORKSPACE='default'


################################################################################
# Create Service Mockbin

nameService="mockbin_service"
urlMockbin="http://mockbin.org/"

API_ENDPOINT="${HOST}/${WORKSPACE}/services"
cat <<EOF | curl -Lks -H "${TOKEN}" ${API_ENDPOINT} \
                 -H "Content-Type: application/json" \
                 --data-binary @- | jq .
          {
            "url": "${urlMockbin}",
            "name": "${nameService}"
          }
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment