This page describes how to set up and configure Google Distributed Cloud (GDC) air-gapped appliance at the customer site.
On first boot, the drives are unlocked without human intervention.
Decrypt the drive and boot the machine
For each GDC air-gapped appliance, three or more Yubikeys are shipped separately to the customer. For more information on the Yubikey model, see https://www.yubico.com/product/yubikey-5-nano-fips/.
To decrypt the drive and boot the machine, insert one Yubikey into each server machine. The CLI registers the Yubikey by performing the following steps:
- The CLI uses
cryptsetup
to enroll the Yubikey as the LUKS (Linux Unified Key Setup) key store for the unlock key. - After a Yubikey is enrolled, the CLI disables initramfs-based unlocking. When this step completes, you must use only the Yubikey of the corresponding server machine to unlock the drive.
Configure the appliance
Run the following command on the laptop to configure the appliance.
gdcloud appliance configure
When prompted, answer a series of questions and enter your responses in each of the following sections.
Domain Name System (DNS) information
Enter the DNS delegated subdomain name for the GDC air-gapped appliance instance from the parent DNS server. This fully qualified domain name is used as a suffix for GDC air-gapped appliance services such as admin cluster management. The expected format is
LOCATION
.SUFFIX
.Replace the following:
LOCATION
: the zone identifier of the GDC air-gapped appliance deployment, such asus-central1-a
SUFFIX
: any valid DNS suffix, such aszone1.google.gdch.test
orus-central1-a.gdch.customer
Enter a comma-delimited list of IP addresses that represent the nameservers in your network used for address resolution. These DNS servers provide GDC air-gapped appliance with access to external customer services. For example,
8.8.8.8,8.8.4.4
.
Border Gateway Protocol (BGP) information
Border Gateway Protocol (BGP) exchanges routing information with external networks. These networks are identified using autonomous system numbers (ASN). To ensure proper connectivity between GDC air-gapped appliance and the external networks, all ASN values must be globally unique.
- Enter the ASN assigned to the data plane for the GDC air-gapped appliance
instance. For example
65204
. - Enter the ASN assigned to the data plane for the customer network. For
example,
4200002002
.
Data plane network
- For the data plane IP family network, specify if the subnet is IPv4, or dual
stack.
- If you select IPv4,
- Enter the IPv4 network address with minimum size of
23
for the external dataplane network. Use this network for external accessible services such as admin clusters and storage interfaces. The network address must be a continuous IP block that is preallocated in your network. For example,10.100.101.0/23
.
- Enter the IPv4 network address with minimum size of
- If you select dual stack,
- Enter the IPv4 network address with minimum size of
23
for the external dataplane network. Use this network for external accessible services such as admin clusters and storage interfaces. The network address must be a continuous IP block that is preallocated in your network. For example,10.100.101.0/23
. - Enter the IPv6 network address with the minimum size of
64
. This IP block is divided into two, the first half is used as the external dataplane network and the second half is used as the internal dataplane network. For example,FC00::/64
.
- Enter the IPv4 network address with minimum size of
- If you select IPv4,
Uplink information
Uplink configurations are peering connections used to externally connect GDC air-gapped appliance instances to other services such as customer networks and other GDC air-gapped appliance instances. These uplink configurations and wiring from a GDC air-gapped appliance instance are important to ensure proper connectivity with the external network.
- Enter the number of uplinks needed for customer peering to the GDC air-gapped appliance instance. If the number you provided does not match the expected number of uplinks, the remaining uplinks are allocated from the external data plane subnet.
- For the uplinks, specify the following:
- Specify the switch name. The name must match the provided switch
name in the Device ID (DEID). For example,
bc-aa-tesw01
. - Specify the port number for the switch name that connects to the
uplink network with the applicable peer subnet on that link. The VLAN
for this port can be represented as a sub-interface (Eth1/2.x).
Acceptable formats include:
Eth1/45
,eth1/45
,Eth1/45.2
. - Specify if the IP family subnet is IPv4 or dual stack.
- If you select IPv4,
- For IPv4, enter the peer subnet block configured on
the customer network for the provided switch and port link. This
is a
/31
subnet. For example,172.16.255.148/31
. - For peerIPv4, enter the IP address representing
the customer facing IP address in the
/31
peer subnet. For example,172.16.255.148
.
- For IPv4, enter the peer subnet block configured on
the customer network for the provided switch and port link. This
is a
- If you select dual stack,
- For IPv4, enter the peer subnet block configured on
the customer network for the provided switch and port link. This
is a
/31
subnet. For example,172.16.255.148/31
. - For peerIPv4, enter the IP address representing
the customer facing IP address in the
/31
peer subnet. For example,172.16.255.148
. - For IPv6, enter the peer subnet block configured on
the customer network for the provided switch and port link. This
is a
/127
subnet. For example,FC00::/127
. - For peerIPv6, enter the IP address representing
the customer facing IP address in the
/127
peer subnet. For example,FC00::
.
- For IPv4, enter the peer subnet block configured on
the customer network for the provided switch and port link. This
is a
- If you select IPv4,
- Specify the switch name. The name must match the provided switch
name in the Device ID (DEID). For example,
Optional: External Network Time Protocol (NTP) information
If you use an external NTP server, set up authentication to the server. You must have a symmetric key and a key ID configured on the external NTP server. The relay servers use symmetric keys for server authentication.
- Specify whether you want to set up an external NTP server. Enter
yes
to continue orno
to skip. - Enter a comma-delimited list of IP addresses that represent the external
NTP servers, such as
10.0.0.123
or10.0.0.124
. - Specify whether you want to configure an
external NTP authentication secret. Enter
yes
to specify an external authentication symmetric key orno
to skip. - Enter the ID of the external NTP authentication key. This ID must match the ID value that is configured on the external NTP server.
- Enter the type of the external NTP authentication key, such as
MD5
,SHA1
SHA256
, orSHA512
. - Enter the external NTP authentication symmetric key. Specify this value in hexadecimal string format.
Optional: External hardware security module (HSM) information
HSM devices host encryption keys and perform cryptographic operations using KMIP (Key Management Interoperability Protocol). You can use HSM with software-defined storage.
- Specify whether you want to use an external HSM device. Enter
yes
to to specify the HSM details orno
to skip. - Specify whether you want to provide HSM details for an IP or
DNS name.
- If you selected IP, enter the IP network address of the KMIP
service. For example,
8.8.8.8
. - If you selected DNS name, enter the fully qualified domain name
of the KMIP service. For example,
te.us-central1-a
.
- If you selected IP, enter the IP network address of the KMIP
service. For example,
- Enter the port number of the KMIP service.
- Enter the encryption key ID.
- Enter the CACert. The CA cert is the signed certificate for the KMIP service.
- Enter the client certificate for connecting to the external HSM.
- Enter the client key associated with the client certificate for connecting to the external HSM.
Optional: Connect an identity provider
You can connect to your own existing identity provider (IdP) for identity and access management or automatically set up a built-in Keycloak IdP.
- Specify whether you want to use your own identity provider or install
the built-in Keycloak IdP that is available with GDC air-gapped appliance.
Enter
yes
to provide the details of your own IdP orno
to use the built-in IdP. If you select the built-in identity provider, the following questions are skipped. - Choose the type of identity provider that you are connecting to: OIDC (OpenID Connect) or SAML (Security Assertion Markup Language).
- If you choose an OIDC provider, specify the following parameters:
- Enter the name of the IdP. The name that you provide here is the alias of the identity in the system.
- Enter the issuer URI. The issuer URI must point to the level inside
.well-known/openid-configuration
. Client applications send authorization requests to this URL. The Kubernetes API server uses this URL to discover public keys for verifying tokens. - Enter a base64-encoded PEM-encoded certificate for the
certificate authority data for the IdP. For
more information, see
https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail.
- To create the string, encode the certificate, including
headers, into
base64
. - Include the resulting string as a single line.
Example:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==
- To create the string, encode the certificate, including
headers, into
- Enter the client ID for the client application that makes authentication requests to the IdP.
- Enter the client secret, which is a shared secret between your IdP and GDC air-gapped appliance.
- Enter the user claim field to identify each user. This is the name
of the claim in the OIDC ID Token that holds the username. If this claim
is missing from the ID Token, users cannot authenticate. The default
claim for many providers is
sub
. You can choose other claims, such asemail
orname
, depending on the identity provider. Claims other thanemail
are prefixed with the issuer URL to prevent naming clashes. - If your identity provider requires additional scopes, enter a
comma-separated list of scopes to send to the IDP. For example,
Microsoft Azure and Okta require the
offline_access
scope.
- If you choose a SAML provider, specify the following parameters:
- Enter the name of the IdP. The name that you provide here is the alias of the identity in the system.
- Enter the entity ID for the SAML provider, specified in a URI
format, such as:
https://www.idp.com/saml
. - Enter the SSO URI, which is the URI to the SAML provider's SSO
endpoint, such as
https://www.idp.com/saml/sso
. - Enter a comma-separated list of the IDP certificates used to verify the SAML response. These certificates must be standard Base64 encoded and PEM formatted. A maximum of two certificates are supported to facilitate IDP certificate rotation.
- Enter the user attribute, which is the name of the attribute in the SAML response that holds the username. If this attribute is missing from the SAML response, authentication fails.
If you connect to your own IdP, enter the account for the initial admin. The initial admin is the first account that is granted access to the system after the installation is complete. The value that you enter must match the claim type, such as an email address if the user claim for an OIDC provider is set to
email
.Record the name of the initial admin, as you need this information to log in to the system for the first time after the installation is complete.
The command generates a cell config directory to the file system for the appliance.
Back up the config
Make a backup of the cellcfg
directory from /path/to/cellcfg
generated by the
command.
Install the appliance software
Run the following command on the laptop to install the remaining software.
gdcloud appliance install
This command reads the config directory generated by the
gdcloud appliance configure
command and installs the remaining software, for
example the container registry and the admin cluster.
Back up emergency credentials
After the admin cluster is installed, the kubeconfig for the root admin cluster
is available at /root/release/root-admin/root-admin-kubeconfig
on bm02. Back
up the kubeconfig as the emergency credential. You can also use the root
kubeconfig file to get the org-admin kubeconfig and system cluster kubeconfigs
later.
Optional: Record initial credentials for built-in identity provider
If you did not connect to your own identity provider in the
gdcloud appliance config
step, a Keycloak IdP is automatically installed and
configured.
This phase of the installation prints out the following items:
- The credentials for the Keycloak local admin and the initial user. The local
admin for the built-in IDP is
admin
, which is the Keycloak admin used inside the Keycloak admin console. The initial user isinitial-user
, used in GDC air-gapped appliance. - The Keycloak URL.
Record these credentials to use them when logging in to the built-in IdP for the first time.
Save the generated credentials after the installation is complete.
If the credentials for the initial user and local admin of the built-in IDP are not printed out during the installation process, get the credentials by running this command:
gdcloud appliance install --phase=identity-provider
To add more users in the Keycloak admin console, see the Keycloak documentation for managing users at https://www.keycloak.org/docs/latest/server_admin/#assembly-managing-users_server_administration_guide.
Manage YubiKeys
After the installation completes, the YubiKeys must stay in the server until you return the system.