1- resource "confluent_flink_compute_pool" "main_flink_pool " {
2- display_name = " main_flink_pool "
3- cloud = var. cloud_provider
4- region = var. cloud_region
5- max_cfu = 5
1+ resource "confluent_flink_compute_pool" "compute_pool_1 " {
2+ display_name = " -workshop_compute_pool_1 "
3+ cloud = var. cloud_provider
4+ region = var. cloud_region
5+ max_cfu = 10
66 environment {
77 id = confluent_environment. cc_env . id
88 }
9- }
109
11- data "confluent_flink_region" "main_flink_region" {
12- cloud = var . cloud_provider
13- region = var . cloud_region
10+ lifecycle {
11+ prevent_destroy = false
12+ }
1413}
1514
16- resource "confluent_service_account" "flink_developer" {
17- display_name = " ${ var . cc_env_name } -flink_developer"
18- description = " Service account for flink developer"
15+ // Service account to perform a task within Confluent Cloud, such as executing a Flink statement
16+ resource "confluent_service_account" "statements-runner" {
17+ display_name = " ${ var . cc_env_name } -statements-runner"
18+ description = " Service account for running Flink Statements in 'inventory' Kafka cluster"
19+
20+ lifecycle {
21+ prevent_destroy = false
22+ }
1923}
2024
21- resource "confluent_role_binding" "fd_flink_developer " {
22- principal = " User:${ confluent_service_account . flink_developer . id } "
23- role_name = " FlinkDeveloper "
25+ resource "confluent_role_binding" "statements-runner-environment-admin " {
26+ principal = " User:${ confluent_service_account . statements-runner . id } "
27+ role_name = " EnvironmentAdmin "
2428 crn_pattern = confluent_environment. cc_env . resource_name
25-
26- depends_on = [confluent_flink_compute_pool . main_flink_pool ]
29+ lifecycle {
30+ prevent_destroy = false
31+ }
2732}
2833
29- resource "confluent_role_binding" "fd_kafka_write" {
30- principal = " User:${ confluent_service_account . flink_developer . id } "
31- role_name = " DeveloperWrite"
32- crn_pattern = " ${ confluent_kafka_cluster . kafka_cluster . rbac_crn } /kafka=${ confluent_kafka_cluster . kafka_cluster . id } /topic=*"
33-
34- depends_on = [confluent_kafka_cluster . kafka_cluster ]
34+ // https://docs.confluent.io/cloud/current/access-management/access-control/rbac/predefined-rbac-roles.html#flinkadmin
35+ resource "confluent_role_binding" "app-manager-flink-developer" {
36+ principal = " User:${ confluent_service_account . app-manager . id } "
37+ role_name = " FlinkAdmin"
38+ crn_pattern = confluent_environment. cc_env . resource_name
39+ lifecycle {
40+ prevent_destroy = false
41+ }
3542}
3643
37- resource "confluent_role_binding" "fd_kafka_read" {
38- principal = " User:${ confluent_service_account . flink_developer . id } "
39- role_name = " DeveloperRead"
40- crn_pattern = " ${ confluent_kafka_cluster . kafka_cluster . rbac_crn } /kafka=${ confluent_kafka_cluster . kafka_cluster . id } /topic=*"
44+ data "confluent_organization" "main" {}
4145
42- depends_on = [confluent_kafka_cluster . kafka_cluster ]
46+ // https://docs.confluent.io/cloud/current/access-management/access-control/rbac/predefined-rbac-roles.html#assigner
47+ // https://docs.confluent.io/cloud/current/flink/operate-and-deploy/flink-rbac.html#submit-long-running-statements
48+ resource "confluent_role_binding" "app-manager-assigner" {
49+ principal = " User:${ confluent_service_account . app-manager . id } "
50+ role_name = " Assigner"
51+ crn_pattern = " ${ data . confluent_organization . main . resource_name } /service-account=${ confluent_service_account . statements-runner . id } "
52+ lifecycle {
53+ prevent_destroy = false
54+ }
4355}
4456
45- resource "confluent_role_binding" "fd_schema_registry_write" {
46- principal = " User:${ confluent_service_account . flink_developer . id } "
47- role_name = " DeveloperWrite"
48- crn_pattern = " ${ data . confluent_schema_registry_cluster . advanced . resource_name } /subject=*"
57+ data "confluent_flink_region" "us-east-2" {
58+ cloud = var. cloud_provider
59+ region = var. cloud_region
4960}
5061
51- resource "confluent_role_binding" "fd_schema_registry_read" {
52- principal = " User:${ confluent_service_account . flink_developer . id } "
53- role_name = " DeveloperRead"
54- crn_pattern = " ${ data . confluent_schema_registry_cluster . advanced . resource_name } /subject=*"
62+ data "confluent_flink_region" "main" {
63+ cloud = var. cloud_provider
64+ region = var. cloud_region
5565}
5666
57- resource "confluent_api_key" "flink_developer_api_key" {
58- display_name = " flink_developer_api_key"
59- description = " Flink Developer API Key that is owned by 'flink_developer' service account"
67+
68+ resource "confluent_api_key" "app-manager-flink-api-key" {
69+ display_name = " app-manager-flink-api-key"
70+ description = " Flink API Key that is owned by 'app-manager' service account"
6071 owner {
61- id = confluent_service_account. flink_developer . id
62- api_version = confluent_service_account. flink_developer . api_version
63- kind = confluent_service_account. flink_developer . kind
72+ id = confluent_service_account. app-manager . id
73+ api_version = confluent_service_account. app-manager . api_version
74+ kind = confluent_service_account. app-manager . kind
6475 }
65-
6676 managed_resource {
67- id = data. confluent_flink_region . main_flink_region . id
68- api_version = data. confluent_flink_region . main_flink_region . api_version
69- kind = data. confluent_flink_region . main_flink_region . kind
70-
77+ id = data. confluent_flink_region . us-east-2 . id
78+ api_version = confluent_flink_compute_pool. compute_pool_1 . api_version
79+ kind = data. confluent_flink_region . us-east-2 . kind
7180 environment {
7281 id = confluent_environment. cc_env . id
7382 }
7483 }
84+ lifecycle {
85+ prevent_destroy = false
86+ }
87+ }
7588
76- depends_on = [
77- confluent_service_account . flink_developer
78- ]
79- }
0 commit comments