Terraform Blueprint to deploy the Humanitec resources based on 5 different Terraform Modules:
- Google Cloud
- Humanitec
TOC:
- Assumptions
- Deploy the Terraform Blueprint
- Test connectivity
- Update Developers's CD pipelines
- Terraform Blueprint documentation
- Available resource types for the Developers in their Score files
- GKE cluster provisioned in GCP as an input for the
cluster
Terraform Module. - "Project" == "Humanitec App"
- 1 GKE cluster per Env Type
- 1 Humanitec Service User/Token per {App, Env Type}
- People as:
Member
at the Org levelViewer
at the App Level
- Service User:
Artefact Contributor
for Development andMember
for other Environments at the Org levelDeveloper
at the App LevelDeployer
at the Env Type
export HUMANITEC_ORG=FIXME
export HUMANITEC_TOKEN=FIXME
terraform workspace select -or-create=true ${HUMANITEC_ORG}
terraform init -upgrade
terraform plan \
-var org_id=${HUMANITEC_ORG} \
-var token=${HUMANITEC_TOKEN} \
-var 'clusters=[{name="mabenoit-demo", region="northamerica-northeast1", project_id="mabenoit-demo-458522"}]' \
-var humanitec_crds_already_installed=true \
-out out.tfplan
terraform apply out.tfplan
Here are the default (Humanitec managed) resource definition not used anymore that we can explicitly disable now:
humctl api PUT /orgs/${HUMANITEC_ORG}/resources/defs/default-humanitec-base-env/criteria --data '[]'
humctl api PUT /orgs/${HUMANITEC_ORG}/resources/defs/default-humanitec-namespace/criteria --data '[]'
humctl api PUT /orgs/${HUMANITEC_ORG}/resources/defs/default-humanitec-workload-res/criteria --data '[]'
humctl api PUT /orgs/${HUMANITEC_ORG}/resources/defs/default-humanitec-dns/criteria --data '[]'
humctl api PUT /orgs/${HUMANITEC_ORG}/resources/defs/default-humanitec-ingress/criteria --data '[]'
humctl api PUT /orgs/${HUMANITEC_ORG}/resources/defs/default-humanitec-tls-cert/criteria --data '[]'
humctl get resource-account
ACCOUNT_ID=FIXME
humctl resources check-account ${ACCOUNT_ID}
APP_ID=sail-sharp
ENV_ID=development
ENV_TYPE=development
humctl resources check-connectivity \
--app ${APP_ID} \
--env ${ENV_ID} \
--env-type ${ENV_TYPE}
Update Developer's CD pipelines based on outputs
:
terraform output service_users_tokens
You can also use this token locally (HUMANITEC_TOKEN
) and run humctl score deploy --app --env
To get the available resource types for the Developers in their Score files
humctl score available-resource-types
Name Type Category Class
Environment environment score default
Service service score default
Google Cloud Pub/Sub Subscription gcp-pubsub-subscription messaging default
Persistent Volume volume datastore default
Redis redis datastore default
DNS dns dns default
Route route ingress default
Google Cloud Storage Bucket gcs datastore default
TLS certificate tls-cert security default
Google Cloud Pub/Sub Topic gcp-pubsub-topic messaging default
Postgres postgres datastore default
Google Cloud Vertex AI gcp-vertex-ai default
Name | Version |
---|---|
terraform | >= 1.3.0 |
~> 5.1 | |
humanitec | ~> 1.0 |
Name | Source | Version |
---|---|---|
apps | ./modules/htc-app | n/a |
gcp_app | ./modules/gcp-app | n/a |
gcp_cluster | ./modules/gcp-cluster | n/a |
htc_cluster | ./modules/htc-cluster | n/a |
org | ./modules/htc-org | n/a |
Name | Description | Type | Default | Required |
---|---|---|---|---|
apps | n/a | list(object({ |
n/a | yes |
clusters | n/a | list(object({ |
n/a | yes |
org_id | ID of the Humanitec Organization | string |
n/a | yes |
token | Token to provision objects in Humanitec Organization | string |
n/a | yes |
env_types | n/a | list(object({ |
[ |
no |
humanitec_crds_already_installed | Custom resource definitions must be applied before custom resources. | bool |
false |
no |
Name | Description |
---|---|
service_users_tokens | n/a |