ForgeOps Dok
ForgeOps Dok
David Goldsmith
Shankar Raman
ForgeRock AS.
201 Mission St., Suite 2900
San Francisco, CA 94105, USA
+1 415-599-1100 (US)
www.forgerock.com
Copyright © 2018-2019 ForgeRock AS.
Abstract
Step-by-step instructions for getting the CDM up and running on Google Kubernetes
Engine (GKE).
This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.
ForgeRock® and ForgeRock Identity Platform™ are trademarks of ForgeRock Inc. or its subsidiaries in the U.S. and in other countries. Trademarks are the property of their respective owners.
UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS,
IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT
OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH
EXCLUSION MAY NOT APPLY TO YOU.
EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY
DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
DejaVu Fonts
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is a trademark of Bitstream, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font
Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following
conditions:
The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are
renamed to names not containing either the words "Bitstream" or the word "Vera".
This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Bitstream Vera" names.
The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR
INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior
written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.
Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the modifications
to the Bitstream Vera Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so,
subject to the following conditions:
The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.
The Font Software may be modified, altered, or added to, and in particular the designs of glyphs or characters in the Fonts may be modified and additional glyphs or characters may be added to the Fonts, only if the fonts are
renamed to names not containing either the words "Tavmjong Bah" or the word "Arev".
This License becomes null and void to the extent applicable to Fonts or Font Software that has been modified and is distributed under the "Tavmjong Bah Arev" names.
The Font Software may be sold as part of a larger software package but no copy of one or more of the Font Software typefaces may be sold by itself.
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY
GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
Except as contained in this notice, the name of Tavmjong Bah shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from Tavmjong Bah.
For further information, contact: tavmjong @ free . fr.
FontAwesome Copyright
This Font Software is licensed under the SIL Open Font License, Version 1.1. See https://opensource.org/licenses/OFL-1.1.
Table of Contents
Preface ......................................................................................................................... iv
1. About the ForgeRock Cloud Deployment Model ......................................................... 1
How the CDM Relates to Your Deployment ........................................................... 2
CDM Overview ...................................................................................................... 2
Best Practices for Implementing the CDM ............................................................. 6
2. Setting Up the Deployment Environment .................................................................. 8
Installing Required Third-Party Software ............................................................... 8
Setting up a GCP Project for the CDM .................................................................. 9
Creating and Setting up a Kubernetes Cluster .................................................... 10
Setting up Your Local Computer to Push Docker Images ..................................... 19
3. Deploying the CDM ................................................................................................. 20
4. Using the CDM ....................................................................................................... 24
Accessing ForgeRock Identity Platform Services ................................................. 24
Monitoring the CDM ........................................................................................... 27
5. Benchmarking CDM Performance ............................................................................ 29
About CDM Benchmarking .................................................................................. 29
Running DS and AM Benchmark Tests ................................................................ 30
Running IDM Benchmark Tests ........................................................................... 34
6. Removing the CDM ................................................................................................. 36
7. Taking the Next Steps ............................................................................................. 38
A. Getting Support ...................................................................................................... 40
ForgeRock DevOps Support ................................................................................. 40
Accessing Documentation Online ......................................................................... 42
How to Report Problems or Provide Feedback ..................................................... 42
Getting Support and Contacting ForgeRock ........................................................ 43
B. Homebrew Package Names ..................................................................................... 44
Glossary ....................................................................................................................... 45
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. iii
Preface
The ForgeRock Cloud Deployment Model (CDM) demonstrates a common use ForgeRock Identity
Platform™ architecture installed on Kubernetes. This guide describes the CDM and its default
behaviors, and provides steps for replicating the model on GKE.
For information about how to customize the CDM after you've deployed it, and how to maintain the
deployment, see the Cloud Deployment Guide.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. iv
About the ForgeRock Cloud Deployment Model
Chapter 1
The CDM is a reference implementation for ForgeRock cloud deployments. You can get a sample
ForgeRock Identity Platform deployment up and running in the cloud quickly using the CDM. After
deploying the CDM, you can use it to explore how you might configure your Kubernetes cluster
before you deploy the platform in production.
The CDM is a robust sample deployment for demonstration and exploration purposes only. It is not a
production deployment.
This guide describes how to use the CDM to stand up a Kubernetes cluster in the cloud that runs the
ForgeRock Identity Platform, and then access the platform's GUIs and REST APIs and run lightweight
benchmarks. When you're done, you can use the CDM to explore deployment customizations:
Standing up a Kubernetes cluster and deploying the platform using the CDM is an activity you might
want to perform as a learning and exploration exercise before you put together a project plan for
deploying the platform in production. To better understand how this activity fits in to the overall
deployment process, see "Deploy the CDM" in the Start Here guide.
This chapter explains how the CDM relates to your deployment, and provides an overview of CDM
components and architecture.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 1
About the ForgeRock Cloud Deployment Model
How the CDM Relates to Your Deployment
Standardizes the process. The ForgeRock Cloud Deployment Team's mission is to standardize a
process for deploying ForgeRock Identity Platform natively in the cloud. The Team is made up
of technical consultants and cloud software developers. We've had numerous interactions with
ForgeRock customers, and discussed common deployment issues. Based on our interactions, we
standardized on Kubernetes as the cloud platform, and we developed the CDM artifacts to make
deployment of the platform easier in the cloud.
Eliminates guesswork. If you use our CDM artifacts and follow the CDM Cookbook instructions
without deviation, you can attain results similar to the benchmark results reported in this document.
The CDM takes the guesswork out of setting up a cloud environment. It bypasses the deploy-test-
integrate-test-repeat cycle many customers struggle through when spinning up the ForgeRock
Identity Platform in the cloud for the first time.
Prepares you to deploy in production. After you've deployed the CDM, you'll be ready to start
working with experts on deploying in production. We strongly recommend that you engage a
ForgeRock technical consultant or partner to assist you to deploy the platform in production.
CDM Overview
Once you deploy the CDM, the ForgeRock Identity Platform is fully operational within a Kubernetes
cluster. forgeops artifacts provide well-tuned JVM settings, memory, CPU limits, and other CDM
configurations. Here are some of the characteristics of the CDM:
ForgeRock Identity Platform is deployed in a Kubernetes cluster. For high availability, CDM
clusters are distributed across three zones.
For better node sizing, pods in CDM clusters are organized in two node pools.
Go here for a diagram that shows the organization of pods in zones and node pools in a CDM
cluster.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 2
About the ForgeRock Cloud Deployment Model
CDM Overview
• Helm for deploying Helm charts for the NGINX Ingress Controller, Prometheus, and Grafana.
• Multiple DS instances are deployed for higher availbility. Separate instances are deployed for
Core Token Service (CTS) tokens and identities. The instances for identities also contain:
• The amster pod facilitates AM deployment by setting up the AM server with configuration data in
the Amster Docker image.
• Multiple AM instances are deployed for higher availability. The AM instances are configured to
access the DS data stores.
• Multiple IDM instances are deployed for higher availability. The IDM instances are configured
to access the DS data stores.
Deployment across the three zones ensures that the ingress controller and all ForgeRock Identity
Platform components are highly available.
Distribution across the two node pools—primary and DS—groups like pods together, enabling
appropriate node sizing.
The following diagram shows how pods are organized in node pools and zones on CDM clusters:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 3
About the ForgeRock Cloud Deployment Model
CDM Overview
Ku b e r n e t e s Clu st e r
Zo n e 1 Zo n e 2 Zo n e 3
ns= prod n s = p ro d n s = p ro d
Pr im a r y Pr im a r y Pr im a r y
am -0 am -1 am -2
n s = c e rt -m a n a g e r n s = m o n it o rin g n s = m o n it o rin g
Pr im a r y Pr im a r y Pr im a r y
Cert ificat e post gres-
idm -0 idm -1 Grafana Prom et heus
Manager idm -0
Alert
am st er
Manager
DS DS DS
DS DS DS
Load balancing
The NGINX Ingress Controller provides load balancing services for CDM deployments. Ingress
controller pods run in the nginx namespace. Implementation varies by cloud provider.
Secured communication
The ingress controller is SSL-enabled. SSL is terminated at the ingress controller. Incoming
requests and outgoing responses are encrypted. For more information, see "Securing
Communication With ForgeRock Identity Platform Servers" in the Cloud Deployment Guide.
Stateful Sets
The CDM uses Kubernetes stateful sets to manage the DS pods. Stateful sets protect against data
loss if Kubernetes client containers fail.
The CTS data stores are configured for affinity load balancing for optimal performance:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 4
About the ForgeRock Cloud Deployment Model
CDM Overview
In g re s s
Co n t ro lle r
a m -0 am -1 a m -2
CTS
S t a t e fu l S e t s
To ke n Affin it y
d s -c t s -0 d s -c t s -1 d s -c t s -2
Re p lic a t io n
The AM configuration, policies, application data, and identities reside in the idrepo directory
service. The connection between each AM pod and the ds-idrepo-0 pod is the primary connection.
Connections between the AM pods and the other idrepo pods are secondary:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 5
About the ForgeRock Cloud Deployment Model
Best Practices for Implementing the CDM
In g re s s
Co n t ro lle r
am -0 am -1 am -2
ID Re p o
S t a t e fu l S e t s
Replicat ion
DS replication
All DS instances are configured for full replication of identities, configuration data, and session
tokens.
The CDM is ready to back up directory data, but backups are not scheduled by default. To
schedule backups, see "Backing Up and Restoring Directory Data" in the Cloud Deployment
Guide.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 6
About the ForgeRock Cloud Deployment Model
Begin at the Beginning
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 7
Setting Up the Deployment Environment
Installing Required Third-Party Software
Chapter 2
ForgeRock supports deploying the CDK and CDM using macOS and Linux. If you have a Windows
computer, you'll need to create a Linux VM. We tested using the following configurations:
Perform all the procedures in this guide within the Linux VM. In this guide, the local computer
refers to the Linux VM for Windows users.
ForgeRock recommends that you install third-party software using Homebrew on macOS and Linux.
For a list of the Homebrew packages to install, see "Homebrew Package Names".
The versions listed in the following table have been validated for deploying the CDM on Google Cloud
Platform. Earlier and later versions will probably work. If you want to try using versions that are not
in the tables, it is your responsibility to validate them.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 8
Setting Up the Deployment Environment
Setting up a GCP Project for the CDM
This section outlines how the Cloud Deployment Team created and configured our GCP project before
we created our cluster.
1. Log in to the Google Cloud Console and create a new GCP project.
2. Authenticate to the Google Cloud SDK to obtain the permissions you'll need to create a cluster:
a. Configure the Google Cloud SDK standard component to use your Google account. Run the
following command:
$ gcloud auth login
b. A browser window appears, prompting you to select a Google account. Select the account you
want to use for cluster creation.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 9
Setting Up the Deployment Environment
Creating and Setting up a Kubernetes Cluster
A third screen should appear with the heading, "You are now authenticated with the Google
Cloud SDK!"
c. Set the Google Cloud SDK configuration to reference your new project. Specify the project ID,
not the project name, in the gcloud config set project command:
$ gcloud config set project my-project-id
d. Acquire new user credentials to use for Google Cloud SDK application default credentials:
$ gcloud auth application-default login
e. A browser window appears, prompting you to select a Google account. Select the account you
want to use for cluster creation.
A third screen should appear with the heading, "You are now authenticated with the Google
Cloud SDK!"
3. Assign the following roles to users who will be creating Kubernetes clusters and deploying CDM:
• Editor
Remember, the CDM is a reference implementation, and is not for production use. The roles you
assign in this step are suitable for the CDM. When you plan your production deployment, you'll
need to determine which GCP roles are required.
4. As of this writing, the CDM uses the C2 machine type for the DS node pool. Make sure that your
project has an adequate quota for this machine type in the region where you'll deploy the CDM.
If the quota is lower than 96 CPUs, request a quota increase to 96 CPUs (or higher) before you
create the cluster for the CDM.
When you plan your production deployment, you'll need to determine which machine types are
needed, and, possibly, increase quotas.
The Cloud Deployment Team used Pulumi software to create the CDM cluster. This section describes
how the team used Pulumi to create and set up a Kubernetes cluster that can run the CDM. It covers
the following topics:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 10
Setting Up the Deployment Environment
Obtaining the forgeops Repository
The forgeops repository is a public Git repository. You do not need credentials to clone it.
2. Check out the 2020.05.13-AlPomodoro.1 release tag, creating a branch named my-branch:
$ cd forgeops
$ git checkout tags/2020.05.13-AlPomodoro.1 -b my-branch
The cluster directory in the forgeops repository contains Pulumi scripts for creating the CDM cluster.
The Pulumi scripts are written in TypeScript and run in the Node.js environment. Before running the
scripts, you'll need to install the Node.js dependencies listed in the /path/to/forgeops/cluster/pulumi/
package.json file as follows:
3. Install dependencies:
1
For the short term, follow the steps in the procedure to clone the forgeops repository and check out the 2020.05.13-
AlPomodoro.1 tag.
For the long term, you'll need to implement a strategy for managing updates, especially if a team of people in your organization
works with the repository. For example, you might want to adopt a workflow that uses a fork as your organization's common
upstream repository. For more information, see "About the forgeops Repository" in the Cloud Deployment Guide.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 11
Setting Up the Deployment Environment
Creating the Cluster
$ npm install
> [email protected] install /Users/someuser/Repositories/forgeops/cluster/pulumi/node_modules/deasync
> node ./build.js
. . .
added 415 packages from 508 contributors and audited 4469 packages in 22.036s
found 0 vulnerabilities
This section outlines how the Cloud Deployment Team created our cluster. The cluster has the
following characteristics:
• The ID of the GCP project in which to create the cluster. Be sure to obtain the project ID and
the project name.
• The GCP region in which to create the cluster. The CDM is deployed in three zones within a
single region.
The Cloud Deployment Team deployed the CDM in the us-east1 region. If you want to validate
your deployment against the benchmarks in "Benchmarking CDM Performance", use this
location when deploying the CDM, regardless of your actual location.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 12
Setting Up the Deployment Environment
Creating the Cluster
However, if you would like to deploy the CDM in a different GCP region, you may do so. The
region must support C2 instance types.
2. ForgeRock provides Pulumi scripts to use for cluster creation. Use them when you deploy
the CDM. After you've finished going through this CDM Cookbook, you can use the CDM as a
sandbox to explore a different infrastructure-as-code solution, if you like. When you plan your
production deployment, you'll need to identify your organization's preferred infrastructure-as-
code solution, and create your own cluster creation automation scripts, if necessary.
As of this writing, issues have been encountered when using cloud provider backends for storing
Pulumi stacks, a preview feature. Because of this, do not specify a cloud provider backend when
logging in to Pulumi.
a. Change to the directory that contains the GCP infrastructure stack configuration files:
$ cd /path/to/forgeops/cluster/pulumi/gcp/infra
Note that initializing a Pulumi stack also selects the stack, so you don't need to explicitly
execute the pulumi stack select command.
d. Configure the GCP project for the infrastructure stack. Use the project ID you obtained in
Step 1:
$ pulumi config set gcp:project my-project-id
e. (Optional) If you're deploying the CDM in a region other than us-east1, configure your
infrastructure stack with your region. Use the region you obtained in Step 1:
$ pulumi config set gcp:region my-region
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 13
Setting Up the Deployment Environment
Creating the Cluster
Pulumi provides a preview of the operation and issues the following prompt:
Do you want to perform this update?
Review the operation, and then select yes if you want to proceed.
g. To verify that Pulumi created the infrastructure components, log in to the GCP console. Select
the VPC Networks option. You should see a new network with a public subnet in the VPC
Networks list. The new network should be deployed in your region.
d. Configure the GCP project for the cluster stack. Use the project ID you obtained in Step 1:
$ pulumi config set gcp:project my-project-id
Pulumi provides a preview of the operation and issues the following prompt:
Do you want to perform this update?
Review the operation, and then select yes if you want to proceed.
Pulumi creates the cluster in the same region in which you created the infrastructure stack.
f. Make a note of the static IP address that Pulumi created. This IP address appears in the
output from the pulumi up command. Look for output similar to:
ip: "35.229.115.150"
You'll need this IP address when you deploy the NGINX ingress controller.
g. To verify that Pulumi created the cluster, log in to the GCP console. Select the Kubernetes
Engine option. You should see the new cluster in the list of Kubernetes clusters.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 14
Setting Up the Deployment Environment
Creating the Cluster
6. After creating a Kubernetes cluster, Pulumi does not write cluster configuration information to
the default Kubernetes configuration file, $HOME/.kube/config. Configure your local computer's
Kubernetes settings so that the kubectl command can access your new cluster:
b. Create a kubeconfig file with your new cluster's configuration in the current working directory:
$ pulumi stack output kubeconfig > kubeconfig
c. Configure Kubernetes to get cluster information from the union of the new kubeconfig file and
the default Kubernetes configuration file:
$ export KUBECONFIG=$PWD/kubeconfig:$HOME/.kube/config
The output should contain your newly-created cluster and any existing clusters.
The current context should be set to the context for your new cluster.
7. Check the status of the pods in your cluster until all the pods are ready:
• The READY column indicates all running containers are available. The entry in the READY
column represents [total number of containers/number of available containers].
c. If necessary, continue to query your cluster's status until all the pods are ready.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 15
Setting Up the Deployment Environment
Creating the Cluster
To Set up Helm
Because the NGINX Ingress Controller, Prometheus, and Grafana are distributed as Helm charts, you
must set up Helm on your local computer before you can deploy the other components:
2. If your working set of Helm chart repositories does not have the stable chart repository, add it:
$ helm repo add stable https://kubernetes-charts.storage.googleapis.com
Also, remember, the CDM is a reference implementation, and is not for production use. Use the
NGINX ingress controller when you deploy the CDM. After you've finished going through this CDM
Cookbook, you can use the CDM as a sandbox to explore deploying a different ingress controller.
When you plan your production deployment, you'll need to determine which ingress controller to use
in production.
1. Deploy the NGINX ingress controller in your cluster. For static-ip-address, specify the IP address
obtained when you performed Step 5.f of "To Create a Kubernetes Cluster for CDM":
$ /path/to/forgeops/bin/ingress-controller-deploy.sh -g -i static-ip-address
namespace/nginx created
Release "nginx-ingress" does not exist. Installing it now.
NAME: nginx-ingress
LAST DEPLOYED: Mon Feb 10 16:14:33 2020
NAMESPACE: nginx
STATUS: deployed
REVISION: 1
TEST SUITE: None
. . .
2. Check the status of the pods in the nginx namespace until all the pods are ready:
$ kubectl get pods --namespace nginx
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-69b755f68b-9l5n8 1/1 Running 0 4m38s
nginx-ingress-controller-69b755f68b-hp456 1/1 Running 0 4m38s
nginx-ingress-default-backend-576b86996d-qxst9 1/1 Running 0 4m38s
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 16
Setting Up the Deployment Environment
Creating the Cluster
4. You'll access ForgeRock Identity Platform services through the ingress controller. The URLs
you'll use must be resolvable from your local computer.
For ingress-ip-address, specify the IP address that you obtained in the preceding step.
The CDM is a reference implementation, and is not for production use. Use cert-manager when
you deploy the CDM. After you've finished going through this CDM Cookbook, you can use the CDM
as a sandbox to explore different certificate management tooling, if you like. When you plan your
production deployment, you'll need to determine how you want to manage certificates in production.
2. Check the status of the pods in the cert-manager namespace until all the pods are ready:
$ kubectl get pods --namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-6d5fd89bdf-khj5w 1/1 Running 0 3m57s
cert-manager-cainjector-7d47d59998-h5b48 1/1 Running 0 3m57s
cert-manager-webhook-6559cc8549-8vdtp 1/1 Running 0 3m56s
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 17
Setting Up the Deployment Environment
Creating the Cluster
1. The Helm charts for Prometheus, Grafana, and Alertmanager, formerly located in the coreos-
charts repository, now reside in Helm's stable chart repository. If a chart repository with the URL
https://s3-eu-west-1.amazonaws.com/coreos-charts/stable is in your working set, remove it.
2. Deploy Prometheus, Grafana, and Alertmanager in your cluster. You can safely ignore info:
skipping unknown hook: "crd-install" messages:
$ /path/to/forgeops/bin/prometheus-deploy.sh
namespace/monitoring created
"stable" has been added to your repositories
Release "prometheus-operator" does not exist. Installing it now.
manifest_sorter.go:175: info: skipping unknown hook: "crd-install"
. . .
NAME: prometheus-operator
LAST DEPLOYED: Mon Feb 10 16:47:45 2020
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
. . .
customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com condition met
customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com condition met
customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com condition met
customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com condition met
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com condition met
Release "forgerock-metrics" does not exist. Installing it now.
NAME: forgerock-metrics
LAST DEPLOYED: Mon Feb 10 16:48:27 2020
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
3. Check the status of the pods in the monitoring namespace until all the pods are ready:
$ kubectl get pods --namespace monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-prometheus-operator-alertmanager-0 2/2 Running 0 5m8s
prometheus-operator-grafana-7b8598c98f-glhmn 2/2 Running 0 5m16s
prometheus-operator-kube-state-metrics-... 1/1 Running 0 5m16s
prometheus-operator-operator-55966c69dd-76v46 2/2 Running 0 5m16s
prometheus-operator-prometheus-node-exporter-82r4b 1/1 Running 0 5m16s
prometheus-operator-prometheus-node-exporter-85ns8 1/1 Running 0 5m16s
prometheus-operator-prometheus-node-exporter-kgwln 1/1 Running 0 5m16s
prometheus-operator-prometheus-node-exporter-rrwrx 1/1 Running 0 5m16s
prometheus-operator-prometheus-node-exporter-vl8f9 1/1 Running 0 5m16s
prometheus-operator-prometheus-node-exporter-xmjrf 1/1 Running 0 5m16s
prometheus-prometheus-operator-prometheus-0 3/3 Running 1 4m57s
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 18
Setting Up the Deployment Environment
Setting up Your Local Computer to Push Docker Images
• Your local computer needs credentials that let Skaffold push the images to the Docker registry
available to your cluster.
Perform the following procedure to enable Skaffold to push Docker images to a registry accessible to
your cluster:
1. If it's not already running, start Docker on your local computer. For more information, see the
Docker documentation.
4. Configure Skaffold with the Docker registry location for your project and the Kubernetes context.
Use your project ID (not your project name) and the the Kubernetes context that you obtained in
the previous step:
$ skaffold config set default-repo gcr.io/my-project-ID -k my-kubernetes-context
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 19
Deploying the CDM
Chapter 3
1. Initialize the staging area for configuration profiles with the canonical CDK configuration profile
for the ForgeRock Identity Platform:
$ cd /path/to/forgeops/bin
$ ./config.sh init --profile cdk --version 6.5
The config.sh init command copies the canonical CDK configuration profile from the master
directory for configuration profiles to the staging area:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 20
Deploying the CDM
6. 5 6. 5
St aging
c dk Area
Copy
For more information about the management of ForgeRock Identity Platform configuration
profiles in the forgeops repository, see "Configuration Profiles" in the DevOps Developer's Guide:
Using a Shared Cluster.
2. Change to the /path/to/forgeops directory and execute the skaffold run command. Specify
skaffold-6.5.yaml as the Skaffold pipeline file:
$ cd /path/to/forgeops
$ skaffold run -f skaffold-6.5.yaml -p medium
4. Check the status of the pods in the prod namespace until all the pods are ready:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 21
Deploying the CDM
• The READY column indicates all running containers are available. The entry in the READY
column represents [total number of containers/number of available containers].
c. If necessary, continue to query your deployment's status until all the pods are ready.
a. Run the kubectl get pods command to get the AM pod's name.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 22
Deploying the CDM
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 23
Using the CDM
Accessing ForgeRock Identity Platform Services
Chapter 4
AM and IDM are configured for access through the CDM cluster's Kubernetes ingress controller. You
can access these components using their normal interfaces:
DS cannot be accessed through the ingress controller, but you can use Kubernetes methods to access
the DS pods.
For more information about how AM and IDM have been configured in the CDM, see Configuration in
the forgeops repository's top-level README file for more information about the configurations.
The CDM randomly generates administrator passwords. Obtain them by running the print-secrets.sh
script:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 24
Using the CDM
Accessing AM Services
$ cd /path/to/forgeops/bin
$ ./print-secrets.sh 6.5
Administrator passwords:
ForgeRock recommends that you back up these passwords to a file, following the method described
in the output. If you do not back up your passwords, and then you lose them, you won't be able to log
in to the platform in as an administrator.
Accessing AM Services
Access the AM console and REST APIs as follows:
2. Obtain the amadmin user's password from the print-secrets.sh output. See "Obtaining Administrator
Passwords".
The Kubernetes ingress controller handles the request, routing it to a running AM instance.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 25
Using the CDM
Accessing IDM Services
2. Run a curl command to verify that you can access the REST APIs through the ingress controller.
For example:
$ curl \
--insecure \
--request POST \
--header "Content-Type: application/json" \
--header "X-OpenAM-Username: amadmin" \
--header "X-OpenAM-Password: 179rd8en9rffa82rcf1qap1z0gv1hcej" \
--header "Accept-API-Version: resource=2.0" \
--data "{}" \
'https://prod.iam.example.com/am/json/realms/root/authenticate'
{
"tokenId":"AQIC5wM2...",
"successUrl":"/am/console",
"realm":"/"
}
2. Obtain the openidm-admin user's password from the print-secrets.sh output. See "Obtaining
Administrator Passwords".
The Kubernetes ingress controller handles the request, routing it to a running IDM instance.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 26
Using the CDM
Accessing DS
2. Run a curl command to verify that you can access the REST APIs through the ingress controller.
For example:
$ curl \
--request GET \
--insecure \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: 2732jd6bxpw1108ccdjsq4zkeoep0zsb" \
--data "{}" \
https://prod.iam.example.com/openidm/info/ping
{
"_id":" ",
"_rev":"",
" shortDesc":"OpenIDM ready",
"state":"ACTIVE_READY"
}
Accessing DS
The DS pods in the CDM are not exposed outside of the cluster. If you need to access one of the DS
pods, use a standard Kubernetes method:
• Forward a DS pod's LDAP port (1389) to your local computer. Then you can run LDAP CLI
commands, for example ldapsearch. You can also use an LDAP editor such as Apache Directory
Studio to access the directory.
For all CDM directory pods, the directory superuser DN is cn=Directory Manager. Obtain this user's
password from the print-secrets.sh output; see "Obtaining Administrator Passwords".
For information about the Grafana UI, see the Grafana documentation.
1. Forward port 3000 on your local computer to port 3000 on the Grafana web server:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 27
Using the CDM
Monitoring the CDM
$ kubectl \
port-forward \
$(kubectl get pods --selector=app.kubernetes.io/name=grafana \
--output=jsonpath="{.items..metadata.name}" --namespace=monitoring) \
3000 --namespace=monitoring
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
4. When you're done using the Grafana UI, enter Cntl+c in the terminal window to stop port
forwarding.
For information about the Prometheus web UI, see the Prometheus documentation.
1. Forward port 9090 on your local computer to port 9090 on the Prometheus web server:
$ kubectl \
port-forward \
$(kubectl get pods --selector=app=prometheus \
--output=jsonpath="{.items..metadata.name}" --namespace=monitoring) \
9090 --namespace=monitoring
Forwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090
3. When you're done using the Prometheus web UI, enter Cntl+c in the terminal window to stop
port forwarding.
For a description of the CDM monitoring architecture and information about how to customize CDM
monitoring, see "Monitoring Your Deployment" in the Cloud Deployment Guide.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 28
Benchmarking CDM Performance
About CDM Benchmarking
Chapter 5
To view the cost estimates for our benchmarked configuration, click the link for your platform in the
Sample Pricing column in the Configuration tab of the benchmarking results spreadsheet.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 29
Benchmarking CDM Performance
Running DS and AM Benchmark Tests
If you require higher performance than the benchmarks reported here, you can scale your
deployment horizontally and vertically. Vertically scaling ForgeRock Identity Platform works
particularly well in the cloud. For more information about scaling your deployment, contact your
qualified ForgeRock partner or technical consultant.
where x is 0, 1, or 2.
Be sure to run the script three times, once for each ds-idrepo pod in the CDM deployment. To save
time, run the script simultaneously in three separate terminal windows or tabs.
When the Cloud Deployment Team ran the make-users.sh script, it took approximately 15 minutes
to run.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 30
Benchmarking CDM Performance
Running DS Benchmark Tests
Searchrate
The DS searchrate test measures the search throughput and response time of a directory service.
Before running this test, the userstore must be provisioned with user entries. See "Generating Test
Users for DS and AM Benchmark Testing" for more information.
To run the searchrate test, open a shell in the ds-idrepo-0 pod and run the ds-bench.sh script with the
srch option. Example:
$ scripts/ds-bench.sh srch 60 localhost 10000000
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the Searchrate column on the DS tab.
Modrate
The DS modrate test measures the modify throughput and response time of a directory service. Before
running this test, the userstore must be provisioned with user entries. See "Generating Test Users for
DS and AM Benchmark Testing" for more information.
To run the modrate test, open a shell in the ds-idrepo-0 pod and run the ds-bench.sh script with the mod
option. Example:
$ scripts/ds-bench.sh mod 60 localhost 10000000
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the Modrate column on the DS tab.
Addrate
The DS addrate test measures the add throughput and response time of a directory server.
To run the addrate test, open a shell in the ds-idrepo-0 pod and run the ds-bench.sh script with the add
option. Example:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 31
Benchmarking CDM Performance
Running AM Benchmark Tests
When the addrate test has completed, it purges entries that it previously created. Be sure to let the
addrate test's purge phase finish to completion.
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the Addrate column on the DS tab.
The AMRestAuthNSim.scala simulation tests authentication rates using the REST API.
The AMAccessTokenSim.scala simulation tests OAuth 2.0 authorization code flow performance.
1. Make sure the userstore is provisioned, and the Directory Services cache is primed.
2. Set environment variables that specify the host on which to run the test, the number of
concurrent threads to spawn when running the test, the duration of the test (in seconds), the first
part of the user ID, and the number of users for the test:
$ export TARGET_HOST=prod.iam.example.com
$ export CONCURRENCY=300
$ export DURATION=60
$ export USER_PREFIX=user.
$ export PASSWORD=password
$ export USER_POOL=10000000
REST Login
This benchmark test measures throughput and response times of an AM server performing REST
authentications.
1. Make sure that you have fulfilled the prerequisites specified in "Before You Begin".
a. Log in to the AM console as the amadmin user. For details, see "Accessing AM Services".
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 32
Benchmarking CDM Performance
Running AM Benchmark Tests
c. Select Properties.
5. When the simulation is complete, the name of the file containing the test results appears near the
end of the output. Open the file in a browser to review the results.
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the REST Authentication columns on the AM tab.
1. Make sure that you have fulfilled the prerequisites specified in "Before You Begin".
a. Log in to the AM console as the amadmin user. For details, see "Accessing AM Services".
c. Select Properties.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 33
Benchmarking CDM Performance
Running IDM Benchmark Tests
6. When the simulation is complete, the name of the file containing the test results appears near the
end of the output. Open the file in a browser to review the results.
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the OAuth 2.0 Authorization Code Grant Flow columns on the AM tab.
• IDMReadCreateUsersSim65.scala
• IDMDeleteUsersSim65.scala
The IDM tests do not use the identities used for the DS and AM tests. Instead, you generate a
different set of identities when you run the IDMReadCreateUsersSim65 simulation. This additional set of
identities is also used by the IDMDeleteUsersSim65 simulation.
1. Set environment variables that specify the host on which to run the test, the number of
concurrent threads to spawn when running the test, the duration of the test (in seconds), the first
part of the user ID, and the number of users for the test:
$ export TARGET_HOST=prod.iam.example.com
$ export CONCURRENCY=300
$ export DURATION=60
$ export USER_PREFIX=usertest
$ export PASSWORD=Passw0rd
$ export USER_POOL=10000
1. Make sure that you have fulfilled the prerequisites specified in "Before You Begin".
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 34
Benchmarking CDM Performance
Query and Delete
4. When the simulation is complete, the name of the file containing the test results appears near the
end of the output. Open the file in a browser to review the results.
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the Query and Create columns on the IDM tab.
1. Make sure that you have fulfilled the prerequisites specified in "Before You Begin".
4. When the simulation is complete, the name of the file containing the test results appears near the
end of the output. Open the file in a browser to review the results.
You can compare your results with the Cloud Deployment Team's results here. You'll find the team's
results in the Query and Delete columns on the IDM tab.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 35
Removing the CDM
Chapter 6
b. Select the Pulumi stack that you used when you created your cluster:
$ pulumi stack select gke-medium
Pulumi provides a preview of the operation and issues the following prompt:
Do you want to perform this destroy?
Review the operation, and then select yes if you want to proceed.
d. To verify that Pulumi removed the cluster, log in to the GCP console and select the
Kubernetes Engine option.
You should not see the CDM cluster in the list of Kubernetes clusters in your GCP project.
a. Change to the directory that contains the GCP infrastructure stack configuration files:
$ cd /path/to/forgeops/cluster/pulumi/gcp/infra
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 36
Removing the CDM
Pulumi provides a preview of the operation and issues the following prompt:
Do you want to perform this destroy?
Review the operation, and then select yes if you want to proceed.
d. To verify that Pulumi removed the infrastructure components, log in to the GCP console.
Select the VPC Networks option.
The network formerly used for CDM infrastructure should no longer be listed.
4. Remove the CDM cluster from your local computer's Kubernetes settings:
The Kubernetes context for the CDM cluster should not appear in the kubectx command
output.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 37
Taking the Next Steps
Chapter 7
• DS, AM, and IDM are installed and running. You can access each ForgeRock component.
• Monitoring tools are installed and running. You can access a monitoring console for DS, AM, and
IDM.
• You can run the benchmarking tests in this cookbook without errors.
• Your benchmarking test results are similar to the benchmarks reported in this cookbook.
When you're satisfied that all of these conditions are met, then you've successfully taken the first
steps to deploy the ForgeRock Identity Platform in the cloud. Congratulations!
Now that you're familiar with the CDM—ForgeRock's reference implementation—you're ready to
work with a project team to plan and configure your production deployment. You'll need a team with
expertise in the ForgeRock Identity Platform, in your cloud provider, and in Kubernetes on your cloud
provider. We strongly recommend that you engage a ForgeRock technical consultant or partner to
assist you with deploying the platform in production.
Platform configuration. ForgeRock Identity Platform experts configure AM and IDM using the CDK,
and build custom Docker images for the ForgeRock Identity Platform. The DevOps Guides (For
Minikube | For Shared Clusters) provide information about platform configuration tasks.
Cluster configuration. Cloud technology experts configure the Kubernetes cluster that will host the
ForgeRock Identity Platform for optimal performance and reliability. Tasks include: modifying the
CDM cluster configuration to suit your business needs; setting up monitoring and alerts to track
site health and performance; backing up configuration and user data for disaster preparedness; and
securing your deployment. The Cloud Deployment Guide, and READMEs in the forgeops repository,
provide information about cluster configuration.
Site reliability engineering. Site reliability engineers monitor the ForgeRock Identity Platform
deployment, and keep the deployment up and running based on your business requirements. These
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 38
Taking the Next Steps
might include use cases, service-level agreements, thresholds, and load test profiles. The Cloud
Deployment Guide, and READMEs in the forgeops repository, provide information about site reliability.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 39
Appendix A. Getting Support
This appendix contains information about support options for the ForgeRock Cloud Developer's Kit,
the ForgeRock Cloud Deployment Model, and the ForgeRock Identity Platform.
These artifacts and documentation are provided on an "as is" basis. ForgeRock does not guarantee
the individual success developers may have in implementing the code on their development platforms
or in production configurations.
Commercial Support
ForgeRock provides commercial support for the following DevOps resources:
• Files used to build Docker images for the ForgeRock Identity Platform:
• Dockerfiles
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 40
• Kustomize bases and overlays
ForgeRock provides commercial support for the ForgeRock Identity Platform. For supported
components, containers, and Java versions, see the following:
Support Limitations
ForgeRock provides no commercial support for the following:
• Artifacts other than Dockerfiles, Kustomize bases, Kustomize overlays, and Skaffold YAML
configuration files in the forgeops Git repository. Examples include scripts, example configurations,
and so forth.
• Non-ForgeRock software. Examples include Java, Apache Tomcat, NGINX, Apache HTTP Server,
Certificate Manager, Prometheus, and so forth.
• Production deployments that use ForgeRock's evaluation-only Docker images. When deploying
the ForgeRock Identity Platform using Docker images, you must build and use your own images
for production deployments. For information about how to build your own Docker images for the
ForgeRock Identity Platform, see "Building Base Docker Images" in the Cloud Deployment Guide.
Red Hat OpenShift is a tested and supported platform using Kubernetes for deployment. ForgeRock
uses OpenShift tools such as the OpenShift installer, as well as other representative environments
such as Amazon AWS for the testing. We do not test using bare metal due to the many customer
permutations of deployment and configuration that may exist, and therefore cannot guarantee that
we have tested in the same way a customer chooses to deploy. We will make commercially reasonable
efforts to provide first-line support for any reported issue. In the case we are unable to reproduce a
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 41
reported issue internally, we will request the customer engage OpenShift support to collaborate on
problem identification and remediation. Customers deploying on OpenShift are expected to have a
support contract in place with IBM/Red Hat that ensures support resources can be engaged if this
situation may occur.
• The ForgeRock Knowledge Base offers a large and increasing number of up-to-date, practical
articles that help you deploy and manage ForgeRock software.
While many articles are visible to community members, ForgeRock customers have access to much
more, including advanced information for customers using ForgeRock software in a mission-critical
capacity.
• ForgeRock developer documentation, such as this document, aims to be technically accurate with
respect to the sample that is documented. It is visible to everyone.
If you have questions regarding the CDK or the CDM that are not answered in the documentation, file
an issue at https://github.com/ForgeRock/forgeops/issues.
• Description of the problem, including when the problem occurs and its impact on your operation.
If the problem occurs on a Kubernetes system other than Minikube, GKE, EKS, OpenShift, or AKS,
we might ask you to reproduce the problem on one of those.
• HTML output from the debug-logs.sh script. For more information, see "Reviewing Pod
Descriptions and Container Logs" in the DevOps Developer's Guide: Using Minikube.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 42
• Docker client (all environments).
ForgeRock has staff members around the globe who support our international customers and
partners. For details on ForgeRock's support offering, including support plans and service-level
agreements (SLAs), visit https://www.forgerock.com/support.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 43
Appendix B. Homebrew Package Names
The following table lists the Homebrew package names for third-party software used in GKE
deployment environments:
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 44
Glossary
affinity (AM) AM affinity based load balancing ensures that the CTS token creation
load is spread over multiple server instances (the token origin
servers). Once a CTS token is created and assigned to a session,
all subsequent token operations are sent to the same token origin
server from any AM node. This ensures that the load of CTS token
management is spread across directory servers.
Source: Best practices for using Core Token Service (CTS) Affinity
based load balancing in AM
Amazon EKS Amazon Elastic Container Service for Kubernetes (Amazon EKS) is
a managed service that makes it easy for you to run Kubernetes on
Amazon Web Services without needing to set up or maintain your own
Kubernetes control plane.
ARN (AWS) An Amazon Resource Name (ARN) uniquely identifies an Amazon Web
Service (AWS) resource. AWS requires an ARN when you need to
specify a resource unambiguously across all of AWS, such as in IAM
policies and API calls.
AWS IAM Authenticator for The AWS IAM Authenticator for Kubernetes is an authentication tool
Kubernetes that enables you to use Amazon Web Services (AWS) credentials for
authenticating to a Kubernetes cluster.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 45
Azure Kubernetes Service AKS is a managed container orchestration service based on
(AKS) Kubernetes. AKS is available on the Microsoft Azure public cloud. AKS
manages your hosted Kubernetes environment, making it quick and
easy to deploy and manage containerized applications.
Cloud Developer's Kit The developer artifacts in the forgeops Git repository, together with
(CDK) the ForgeRock Identity Platform documentation form the Cloud
Developer's Kit (CDK). Use the CDK to stand up the platform in your
developer environment.
Cloud Deployment Model The Cloud Deployment Model (CDM) is a common use ForgeRock
(CDM) Identity Platform architecture, designed to be easy to deploy and easy
to replicate. The ForgeRock Cloud Deployment Team has developed
Kustomize bases and overlays, Skaffold configuration files, Docker
images, and other artifacts expressly to build the CDM.
CloudFormation (AWS) CloudFormation is a service that helps you model and set up your
Amazon Web Services (AWS) resources. You create a template that
describes all the AWS resources that you want. AWS CloudFormation
takes care of provisioning and configuring those resources for you.
CloudFormation template An AWS CloudFormation template describes the resources that you
(AWS) want to provision in your AWS stack. AWS CloudFormation templates
are text files formatted in JSON or YAML.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 46
cluster master A cluster master schedules, runs, scales and upgrades the workloads
on all nodes of the cluster. The cluster master also manages network
and storage resources for workloads.
deployment controller A deployment controller provides declarative updates for pods and
replica sets. You describe a desired state in a deployment object, and
the deployment controller changes the actual state to the desired
state at a controlled rate. You can define deployments to create new
replica sets, or to remove existing deployments and adopt all their
resources with new deployments.
Docker Cloud Docker Cloud provides a hosted registry service with build and testing
facilities for Dockerized application images; tools to help you set up
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 47
and manage host infrastructure; and application lifecycle features to
automate deploying (and redeploying) services created from images.
Docker daemon The Docker daemon (dockerd) listens for Docker API requests and
manages Docker objects such as images, containers, networks, and
volumes. A Docker daemon can also communicate with other Docker
daemons to manage Docker services.
Dockerfile A Dockerfile is a text file that contains the instructions for building a
Docker image. Docker uses the Dockerfile to automate the process of
building a Docker image.
Docker Hub Docker Hub provides a place for you and your team to build and
ship Docker images. You can create public repositories that can be
accessed by any other Docker Hub user, or you can create private
repositories you can control access to.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 48
Source: Overview of Docker Hub section in the Docker Overview
documentation.
Docker image A Docker image is a read-only template with instructions for creating
a Docker container. Often, an image is based on another image, with
some additional customization.
Docker namespace Docker namespaces provide a layer of isolation. When you run a
container, Docker creates a set of namespaces for that container.
Each aspect of a container runs in a separate namespace and its
access is limited to that namespace.
Docker registry A Docker registry stores Docker images. Docker Hub and Docker
Cloud are public registries that anyone can use, and Docker is
configured to look for images on Docker Hub by default. You can also
run your own private registry.
Docker repository A Docker repository is a public, certified repository from vendors and
contributors to Docker. It contains Docker images that you can use as
the foundation to build your applications and services.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 49
the container should run, and so on. By default, the services are load-
balanced across all worker nodes.
dynamic volume The process of creating storage volumes on demand is called dynamic
provisioning volume provisioning. Dynamic volume provisioning allows storage
volumes to be created on-demand. It automatically provisions storage
when it is requested by users.
firewall rule A firewall rule lets you allow or deny traffic to and from your virtual
machine instances based on a configuration you specify. Each
Kubernetes network has a set of firewall rules controlling access
to and from instances in its subnets. Each firewall rule is defined
to apply to either incoming glossary-ingress(ingress) or outgoing
(egress) traffic, not both.
garbage collection Garbage collection is the process of deleting unused objects. Kubelets
perform garbage collection for containers every minute and garbage
collection for images every five minutes. You can adjust the high
and low threshold flags and garbage collection policy to tune image
garbage collection.
Google Kubernetes Engine The Google Kubernetes Engine (GKE) is an environment for deploying,
(GKE) managing, and scaling your containerized applications using Google
infrastructure. The GKE environment consists of multiple machine
instances grouped together to form a container cluster.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 50
Source: Ingress in the Kubernetes Concepts documentation.
instance template An instance template is a global API resource that you can use
to create VM instances and managed instance groups. Instance
templates define the machine type, image, zone, labels, and
other instance properties. They are very helpful in replicating the
environments.
kubelet A kubelet is an agent that runs on each node in the cluster. It ensures
that containers are running in a pod.
kube-scheduler The kube-scheduler component is on the master node and watches for
newly created pods that do not have a node assigned to them, and
selects a node for them to run on.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 51
Kubernetes DNS A Kubernetes DNS pod is a pod used by the kubelets and the
individual containers to resolve DNS names in the cluster.
• default: The default namespace for user created objects which don't
have a namespace
Let's Encrypt Let's Encrypt is a free, automated, and open certificate authority.
network policy A Kubernetes network policy specifies how groups of pods are allowed
to communicate with each other and with other network endpoints.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 52
Source: Node Controller in the Kubernetes Concepts documentation.
persistent volume A persistent volume (PV) is a piece of storage in the cluster that has
been provisioned by an administrator. It is a resource in the cluster
just like a node is a cluster resource. PVs are volume plugins that have
a lifecycle independent of any individual pod that uses the PV.
persistent volume claim A persistent volume claim (PVC) is a request for storage by a user. A
PVC specifies size, and access modes such as:
pod anti-affinity Kubernetes pod anti-affinity allows you to constrain which nodes can
(Kubernetes) run your pod, based on labels on the pods that are already running
on the node rather than based on labels on nodes. Pod anti-affinity
enables you to control the spread of workload across nodes and also
isolate failures to nodes.
pod (Kubernetes) A Kubernetes pod is the smallest, most basic deployable object in
Kubernetes. A pod represents a single instance of a running process
in a cluster. Containers within a pod share an IP address and port
space.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 53
resource group (Azure) A resource group is a container that holds related resources for an
application. The resource group can include all of the resources for
an application, or only those resources that are logically grouped
together.
secret (Kubernetes) A Kubernetes secret is a secure object that stores sensitive data, such
as passwords, OAuth 2.0 tokens, and SSH keys in your clusters.
security group (AWS) A security group acts as a virtual firewall that controls the traffic for
one or more compute instances.
service principal (Azure) An Azure service principal is an identity created for use with
applications, hosted services, and automated tools to access Azure
resources. Service principals enable applications to access resources
with the restrictions imposed by the assigned roles instead of
accessing resources as a fully privileged user.
shard Sharding is a way of partitioning directory data so that the load can
be shared by multiple directory servers. Each data partition, also
known as a shard, exposes the same set of naming contexts, but only a
subset of the data. For example, a distribution might have two shards.
The first shard contains all users whose name begins with A-M, and
the second contains all users whose name begins with N-Z. Both have
the same naming context.
stack (AWS) A stack is a collection of AWS resources that you can manage as a
single unit. You can create, update, or delete a collection of resources
by using stacks. All the resources in a stack are defined by the
template.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 54
stack set (AWS) A stack set is a container for stacks. You can provision stacks across
AWS accounts and regions by using a single AWS template. All the
resources included in each stack of a stack set are defined by the
same template.
subscription (Azure) An Azure subscription is used for pricing, billing and payments
for Azure cloud services. Organizations can have multiple Azure
subscriptions, and subscriptions can span multiple regions.
volume (Kubernetes) A Kubernetes volume is a storage volume that has the same lifetime
as the pod that encloses it. Consequently, a volume outlives any
containers that run within the pod, and data is preserved across
container restarts. When a pod ceases to exist, the Kubernetes volume
also ceases to exist.
VPC (AWS) A virtual private cloud (VPC) is a virtual network dedicated to your
AWS account. It is logically isolated from other virtual networks in the
AWS Cloud.
worker node (AWS) An Amazon Elastic Container Service for Kubernetes (Amazon EKS)
worker node is a standard compute instance provisioned in Amazon
EKS.
workload (Kubernetes) A Kubernetes workload is the collection of applications and batch jobs
packaged into a container. Before you deploy a workload on a cluster,
you must first package the workload into a container.
Cloud Deployment Model Cookbook for GKE ForgeRock Identity Platform 6.5 (2020-05-29)
Copyright © 2018-2019 ForgeRock AS. All rights reserved. 55