Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update branch #1791

Closed
wants to merge 51 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
4f67fd4
chore: fix local golang version (#1725)
claywd Jul 27, 2023
9dd1e5f
feat: macrochart update 2.2.7 (#1726)
CristhianF7 Jul 27, 2023
f3606c0
fix: version upgrade commands with Homebrew (#1723)
fharper Jul 27, 2023
b75aafe
chore: update runtime with fixes for gcp (#1733)
claywd Jul 31, 2023
db1dfa0
adjusting branch selection logic on gcp (#1731)
johndietz Jul 31, 2023
b772d56
fix: 'launch up --helm-flag' flag help (#1737)
fharper Aug 1, 2023
ccb3089
ci: let codeql analysis be dispatched manually (#1738)
fharper Aug 1, 2023
93d7c8b
ci: fix kubefirst build for CodeQL analysis (#1744)
fharper Aug 1, 2023
c466881
chore: prevent people to create issue without the forms (#1742)
fharper Aug 1, 2023
473992a
Fix gcp gitops url (#1739)
claywd Aug 2, 2023
d96dcc8
fix: show CLI output on k3d destroy port used error (fix #1684) (#1749)
fharper Aug 14, 2023
48b9e94
chore: chart update 2.2.9 (#1752)
CristhianF7 Aug 15, 2023
20aff96
chore: chart update 2.2.10 (#1754)
CristhianF7 Aug 16, 2023
14efdcf
Chore-cleanup_the_urls (#1755)
claywd Aug 21, 2023
903bf0a
fix: add container registry url into gitops tokens (#1761)
claywd Aug 22, 2023
a443a70
fix: update secret key to align with runtime value (#1762)
claywd Aug 22, 2023
2d22d0a
feat: add ability for force destroying buckets (#1763)
claywd Aug 22, 2023
7683120
adjust 2nd k3d create git push to https auth (#1766)
johndietz Aug 23, 2023
10c6c74
fix: adjust messaging to reflect argocd priority (#1767)
claywd Aug 24, 2023
fcfb2f3
fix: check new version from homebrew-core instead of k1 repo (fix #17…
fharper Aug 24, 2023
3a06c79
feat: macrochart (#1751)
CristhianF7 Aug 25, 2023
d2ce9c0
chore: update helm chart version (#1769)
CristhianF7 Aug 25, 2023
abacbbb
chore: update helm chart version (#1771)
CristhianF7 Aug 25, 2023
8c52248
chore: update helm chart version 2.2.15 (#1775)
CristhianF7 Aug 28, 2023
23fb5bc
chore: update helm chart version 2.2.16 (#1780)
CristhianF7 Aug 29, 2023
6cfe801
chore: update calls to secretbootstrapping
claywd Aug 22, 2023
487ed0c
fix: use autotvars file and detokenize it
claywd Aug 22, 2023
c8af2c8
fix: external auth/creds references
claywd Aug 23, 2023
17292a8
fix: gcp/google reference for external-dns
claywd Aug 23, 2023
3e56765
fix: change the useless google secret key
claywd Aug 23, 2023
c2a5833
fix: lower the uniqueness
claywd Aug 24, 2023
26c42aa
fix: auth references
claywd Aug 24, 2023
6e2926f
fix: typo
claywd Aug 25, 2023
cf928d5
fix: swap underscore for hyphen
claywd Aug 25, 2023
7837edd
fix: dns provider options and detokenization
claywd Aug 25, 2023
d0c9121
fix: `ContainerRegistryURL` to template `<CONTAINER_REGISTRY_URL>` in…
cameronraysmith Aug 28, 2023
75746b6
fix: I forgot the mod and sum
claywd Aug 29, 2023
2638293
Merge pull request #1779 from kubefirst/feat-round_out_gcp
claywd Aug 29, 2023
8573d2f
fix: capture edge case on gitops repo/ branch flag
claywd Aug 29, 2023
fff9d4c
fix: write dnsprovider tokens via vault terraform
claywd Aug 29, 2023
e32c951
Merge pull request #1785 from kubefirst/fix-dns_provider_secret
claywd Aug 29, 2023
417305a
Merge pull request #1784 from kubefirst/fix-gitops-template-branch-logic
claywd Aug 30, 2023
8555ee8
fix: add logging and hardening
claywd Aug 30, 2023
94066e6
Merge pull request #1786 from kubefirst/fix-harden_flag_checking
claywd Aug 30, 2023
886adb5
fix: reference civo token in tf var secret
claywd Aug 30, 2023
2ef90ab
Merge pull request #1787 from kubefirst/fix-civo_dns_tf_var_token
claywd Aug 31, 2023
86cf9fb
fix: reference dnsProviderFlag
claywd Sep 1, 2023
ac84165
Fix: external dns secret name auth for cloudflare
claywd Sep 1, 2023
464f832
Fix: digitalocean external dns secret auth
claywd Sep 1, 2023
c61ba84
Fix: vultr external dns auth secret
claywd Sep 1, 2023
bd25721
Merge pull request #1789 from kubefirst/Fix-dnsProvider_auth_token
claywd Sep 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
blank_issues_enabled: false
contact_links:
- name: Documentations
url: https://github.com/kubefirst/docs/issues/new?assignees=&labels=docs&template=docs.yml&title=%5BDocs%5D%3A+
Expand Down
19 changes: 4 additions & 15 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ on:
- '**.go'
schedule:
- cron: '0 0 * * 6' # Saturdays at midnight
workflow_dispatch:

jobs:
analyze:
Expand Down Expand Up @@ -54,21 +55,9 @@ jobs:
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl

# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language

#- run: |
# make bootstrap
# make release
# Autobuild is now failing
- name: Build
run: go build .

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ go.test
kubefirst.yaml
# kubefirst # <- this is causing files in docs to not commit, need a more explicit path ignored

__debug_*
kubefirst
launch.json
1 change: 1 addition & 0 deletions .tool-versions
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
golang 1.20.5
203 changes: 151 additions & 52 deletions cmd/aws/create.go

Large diffs are not rendered by default.

169 changes: 124 additions & 45 deletions cmd/civo/create.go

Large diffs are not rendered by default.

102 changes: 69 additions & 33 deletions cmd/digitalocean/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,14 +279,11 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
return err
}
// Format git url based on full path to group
switch gitProtocolFlag {
case "https":
config.DestinationGitopsRepoHttpsURL = fmt.Sprintf("https://gitlab.com/%s/gitops.git", gitlabClient.ParentGroupPath)
config.DestinationMetaphorRepoHttpsURL = fmt.Sprintf("https://gitlab.com/%s/metaphor.git", gitlabClient.ParentGroupPath)
default:
config.DestinationGitopsRepoGitURL = fmt.Sprintf("[email protected]:%s/gitops.git", gitlabClient.ParentGroupPath)
config.DestinationMetaphorRepoGitURL = fmt.Sprintf("[email protected]:%s/metaphor.git", gitlabClient.ParentGroupPath)
}
// Format git url based on full path to group
config.DestinationGitopsRepoURL = fmt.Sprintf("https://gitlab.com/%s/gitops.git", gitlabClient.ParentGroupPath)
config.DestinationMetaphorRepoURL = fmt.Sprintf("https://gitlab.com/%s/metaphor.git", gitlabClient.ParentGroupPath)
config.DestinationGitopsRepoGitURL = fmt.Sprintf("[email protected]:%s/gitops.git", gitlabClient.ParentGroupPath)
config.DestinationMetaphorRepoGitURL = fmt.Sprintf("[email protected]:%s/metaphor.git", gitlabClient.ParentGroupPath)
}

// Verify region compatibility
Expand Down Expand Up @@ -319,10 +316,19 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
externalDNSProviderSecretKey = "cf-api-token"
} else {
externalDNSProviderTokenEnvName = "DO_TOKEN"
externalDNSProviderSecretKey = fmt.Sprintf("%s-token", digitalocean.CloudProvider)
externalDNSProviderSecretKey = fmt.Sprintf("%s-auth", digitalocean.CloudProvider)
}

// Swap tokens for git protocol
var gitopsRepoURL string
switch config.GitProtocol {
case "https":
gitopsRepoURL = config.DestinationGitopsRepoURL
default:
gitopsRepoURL = config.DestinationGitopsRepoGitURL
}

gitopsDirectoryTokens := providerConfigs.GitOpsDirectoryValues{
gitopsDirectoryTokens := providerConfigs.GitopsDirectoryValues{
AlertsEmail: alertsEmailFlag,
AtlantisAllowList: fmt.Sprintf("%s/%s/*", cGitHost, cGitOwner),
CloudProvider: digitalocean.CloudProvider,
Expand All @@ -338,7 +344,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {

ExternalDNSProviderName: dnsProviderFlag,
ExternalDNSProviderTokenEnvName: externalDNSProviderTokenEnvName,
ExternalDNSProviderSecretName: fmt.Sprintf("%s-creds", digitalocean.CloudProvider),
ExternalDNSProviderSecretName: fmt.Sprintf("%s-auth", dnsProviderFlag),
ExternalDNSProviderSecretKey: externalDNSProviderSecretKey,

ArgoCDIngressURL: fmt.Sprintf("https://argocd.%s", domainNameFlag),
Expand All @@ -355,9 +361,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
GitDescription: fmt.Sprintf("%s hosted git", config.GitProvider),
GitNamespace: "N/A",
GitProvider: config.GitProvider,
GitopsRepoGitURL: config.DestinationGitopsRepoGitURL,
GitopsRepoHttpsURL: config.DestinationGitopsRepoHttpsURL,
GitopsRepoURL: config.DestinationGitopsRepoURL,
GitopsRepoURL: gitopsRepoURL,
GitRunner: fmt.Sprintf("%s Runner", config.GitProvider),
GitRunnerDescription: fmt.Sprintf("Self Hosted %s Runner", config.GitProvider),
GitRunnerNS: fmt.Sprintf("%s-runner", config.GitProvider),
Expand All @@ -372,8 +376,8 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
GitlabOwnerGroupID: cGitlabOwnerGroupID,
GitlabUser: cGitUser,

GitOpsRepoAtlantisWebhookURL: fmt.Sprintf("https://atlantis.%s/events", domainNameFlag),
GitOpsRepoNoHTTPSURL: fmt.Sprintf("%s.com/%s/gitops.git", cGitHost, cGitOwner),
GitopsRepoAtlantisWebhookURL: fmt.Sprintf("https://atlantis.%s/events", domainNameFlag),
GitopsRepoNoHTTPSURL: fmt.Sprintf("%s.com/%s/gitops.git", cGitHost, cGitOwner),
ClusterId: clusterId,
}

Expand Down Expand Up @@ -416,12 +420,16 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
}
default:
switch gitopsTemplateURLFlag {
case "https://github.com/kubefirst/gitops-template.git":
case "https://github.com/kubefirst/gitops-template.git": //default value
if gitopsTemplateBranchFlag == "" {
gitopsTemplateBranchFlag = configs.K1Version
}
default:
if gitopsTemplateBranchFlag != "" {
case "https://github.com/kubefirst/gitops-template": // edge case for valid but incomplete url
if gitopsTemplateBranchFlag == "" {
gitopsTemplateBranchFlag = configs.K1Version
}
default: // not equal to our defaults
if gitopsTemplateBranchFlag == "" { //didn't supply the branch flag but they did supply the repo flag
return fmt.Errorf("must supply gitops-template-branch flag when gitops-template-url is overridden")
}
}
Expand Down Expand Up @@ -670,7 +678,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
MetaphorProductionIngressURL: fmt.Sprintf("metaphor-production.%s", domainNameFlag),
}

config.GitOpsDirectoryValues = &gitopsDirectoryTokens
config.GitopsDirectoryValues = &gitopsDirectoryTokens
config.MetaphorDirectoryValues = &metaphorDirectoryTokens
//* git clone and detokenize the gitops repository
// todo improve this logic for removing `kubefirst clean`
Expand All @@ -683,7 +691,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
log.Info().Msg("generating your new gitops repository")

// These need to be set for reference elsewhere
viper.Set(fmt.Sprintf("%s.repos.gitops.git-url", config.GitProvider), config.DestinationGitopsRepoHttpsURL)
viper.Set(fmt.Sprintf("%s.repos.gitops.git-url", config.GitProvider), config.DestinationGitopsRepoURL)
viper.WriteConfig()

// Determine if anything exists at domain apex
Expand All @@ -694,11 +702,11 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
config.GitProvider,
clusterNameFlag,
clusterTypeFlag,
config.DestinationGitopsRepoHttpsURL,
config.DestinationGitopsRepoURL, //default to https for git interactions when creating remotes
config.GitopsDir,
gitopsTemplateBranchFlag,
gitopsTemplateURLFlag,
config.DestinationMetaphorRepoHttpsURL,
config.DestinationMetaphorRepoURL, //default to https for git interactions when creating remotes
config.K1Dir,
&gitopsDirectoryTokens,
config.MetaphorDir,
Expand All @@ -722,8 +730,8 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
//* handle git terraform apply
progressPrinter.AddTracker("applying-git-terraform", fmt.Sprintf("Applying %s Terraform", config.GitProvider), 1)
progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false)
log.Info().Msgf("referencing gitops repository: %s", config.DestinationGitopsRepoHttpsURL)
log.Info().Msgf("referencing metaphor repository: %s", config.DestinationMetaphorRepoHttpsURL)
log.Info().Msgf("referencing gitops repository: %s", config.DestinationGitopsRepoURL)
log.Info().Msgf("referencing metaphor repository: %s", config.DestinationMetaphorRepoURL)
switch config.GitProvider {
case "github":
// //* create teams and repositories in github
Expand All @@ -736,6 +744,11 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
tfEntrypoint := config.GitopsDir + "/terraform/github"
tfEnvs := map[string]string{}
tfEnvs = digitalocean.GetGithubTerraformEnvs(config, tfEnvs)
// Erase public key to prevent it from being created if the git protocol argument is set to htps
switch config.GitProtocol {
case "https":
tfEnvs["TF_VAR_kbot_ssh_public_key"] = ""
}
err := terraform.InitApplyAutoApprove(config.TerraformClient, tfEntrypoint, tfEnvs)
if err != nil {
msg := fmt.Sprintf("error creating github resources with terraform %s: %s", tfEntrypoint, err)
Expand Down Expand Up @@ -763,6 +776,11 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
tfEntrypoint := config.GitopsDir + "/terraform/gitlab"
tfEnvs := map[string]string{}
tfEnvs = digitalocean.GetGitlabTerraformEnvs(config, tfEnvs, cGitlabOwnerGroupID)
// Erase public key to prevent it from being created if the git protocol argument is set to htps
switch config.GitProtocol {
case "https":
tfEnvs["TF_VAR_kbot_ssh_public_key"] = ""
}
err := terraform.InitApplyAutoApprove(config.TerraformClient, tfEntrypoint, tfEnvs)
if err != nil {
msg := fmt.Sprintf("error creating gitlab resources with terraform %s: %s", tfEntrypoint, err)
Expand All @@ -785,8 +803,8 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
progressPrinter.AddTracker("pushing-gitops-repos-upstream", "Pushing git repositories", 1)
progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false)

log.Info().Msgf("referencing gitops repository: %s", config.DestinationGitopsRepoHttpsURL)
log.Info().Msgf("referencing metaphor repository: %s", config.DestinationMetaphorRepoHttpsURL)
log.Info().Msgf("referencing gitops repository: %s", config.DestinationGitopsRepoURL)
log.Info().Msgf("referencing metaphor repository: %s", config.DestinationMetaphorRepoURL)

executionControl = viper.GetBool("kubefirst-checks.gitops-repo-pushed")
if !executionControl {
Expand Down Expand Up @@ -821,7 +839,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
},
)
if err != nil {
msg := fmt.Sprintf("error pushing detokenized gitops repository to remote %s: %s", config.DestinationGitopsRepoHttpsURL, err)
msg := fmt.Sprintf("error pushing detokenized gitops repository to remote %s: %s", config.DestinationGitopsRepoURL, err)
telemetryShim.Transmit(useTelemetryFlag, segmentClient, segment.MetricGitopsRepoPushFailed, msg)
if !strings.Contains(msg, "already up-to-date") {
log.Panic().Msg(msg)
Expand All @@ -836,7 +854,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
},
)
if err != nil {
msg := fmt.Sprintf("error pushing detokenized metaphor repository to remote %s: %s", config.DestinationMetaphorRepoHttpsURL, err)
msg := fmt.Sprintf("error pushing detokenized metaphor repository to remote %s: %s", config.DestinationMetaphorRepoURL, err)
telemetryShim.Transmit(useTelemetryFlag, segmentClient, segment.MetricGitopsRepoPushFailed, msg)
if !strings.Contains(msg, "already up-to-date") {
log.Panic().Msg(msg)
Expand Down Expand Up @@ -937,8 +955,10 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
config.GitProvider,
cGitUser,
os.Getenv("CF_API_TOKEN"),
config.DestinationGitopsRepoURL,
gitopsRepoURL,
config.GitProtocol,
dnsProviderFlag,
gitopsDirectoryTokens.CloudProvider,
)
if err != nil {
log.Info().Msg("Error adding kubernetes secrets for bootstrap")
Expand Down Expand Up @@ -1095,7 +1115,8 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
}

log.Info().Msg("applying the registry application to argocd")
registryApplicationObject := argocd.GetArgoCDApplicationObject(config.DestinationGitopsRepoURL, fmt.Sprintf("registry/%s", clusterNameFlag))
registryApplicationObject := argocd.GetArgoCDApplicationObject(gitopsRepoURL, fmt.Sprintf("registry/%s", clusterNameFlag))

_, _ = argocdClient.ArgoprojV1alpha1().Applications("argocd").Create(context.Background(), registryApplicationObject, metav1.CreateOptions{})
viper.Set("kubefirst-checks.argocd-create-registry", true)
viper.WriteConfig()
Expand Down Expand Up @@ -1211,9 +1232,24 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
base64DockerAuth = base64.StdEncoding.EncodeToString([]byte(usernamePasswordString))
}

if viper.GetString("flags.dns-provider") == "cloudflare" {
tfEnvs[fmt.Sprintf("TF_VAR_%s_secret", gitopsDirectoryTokens.ExternalDNSProviderName)] = config.CloudflareApiToken
} else {
tfEnvs[fmt.Sprintf("TF_VAR_%s_secret", gitopsDirectoryTokens.ExternalDNSProviderName)] = "AWS_Placeholder"
}

tfEnvs["TF_VAR_b64_docker_auth"] = base64DockerAuth
tfEnvs = digitalocean.GetVaultTerraformEnvs(kcfg.Clientset, config, tfEnvs)
tfEnvs = digitalocean.GetDigitaloceanTerraformEnvs(config, tfEnvs)

//dns provider secret to be stored in vault for external dns lifecycle
switch dnsProviderFlag {
case "cloudflare":
tfEnvs[fmt.Sprintf("TF_VAR_%s_secret", strings.ToLower(dnsProviderFlag))] = config.CloudflareApiToken
default:
tfEnvs[fmt.Sprintf("TF_VAR_%s_secret", strings.ToLower(dnsProviderFlag))] = config.DigitaloceanToken
}

tfEntrypoint := config.GitopsDir + "/terraform/vault"
err := terraform.InitApplyAutoApprove(config.TerraformClient, tfEntrypoint, tfEnvs)
if err != nil {
Expand Down Expand Up @@ -1262,7 +1298,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
}

// Wait for console Deployment Pods to transition to Running
progressPrinter.AddTracker("deploying-kubefirst-console", "Deploying kubefirst console", 1)
progressPrinter.AddTracker("syncing-remaining-argocd-apps", "Syncing Remaining ArgoCD Apps", 1)
progressPrinter.SetupProgress(progressPrinter.TotalOfTrackers(), false)

consoleDeployment, err := k8s.ReturnDeploymentObject(
Expand All @@ -1283,7 +1319,7 @@ func createDigitalocean(cmd *cobra.Command, args []string) error {
}

//* console port-forward
progressPrinter.IncrementTracker("deploying-kubefirst-console", 1)
progressPrinter.IncrementTracker("syncing-remaining-argocd-apps", 1)
consoleStopChannel := make(chan struct{}, 1)
defer func() {
close(consoleStopChannel)
Expand Down
7 changes: 4 additions & 3 deletions cmd/gcp/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,15 @@ var (
gitopsTemplateURLFlag string
gitopsTemplateBranchFlag string
useTelemetryFlag bool
forceDestroyFlag bool

// RootCredentials
copyArgoCDPasswordToClipboardFlag bool
copyKbotPasswordToClipboardFlag bool
copyVaultPasswordToClipboardFlag bool

// Supported providers
supportedDNSProviders = []string{"gcp", "cloudflare"}
supportedDNSProviders = []string{"google", "cloudflare"}
supportedGitProviders = []string{"github", "gitlab"}

// Supported git providers
Expand Down Expand Up @@ -74,7 +75,7 @@ func Create() *cobra.Command {
createCmd.Flags().StringVar(&cloudRegionFlag, "cloud-region", "us-east1", "the GCP region to provision infrastructure in")
createCmd.Flags().StringVar(&clusterNameFlag, "cluster-name", "kubefirst", "the name of the cluster to create")
createCmd.Flags().StringVar(&clusterTypeFlag, "cluster-type", "mgmt", "the type of cluster to create (i.e. mgmt|workload)")
createCmd.Flags().StringVar(&dnsProviderFlag, "dns-provider", "gcp", fmt.Sprintf("the dns provider - one of: %s", supportedDNSProviders))
createCmd.Flags().StringVar(&dnsProviderFlag, "dns-provider", "google", fmt.Sprintf("the dns provider - one of: %s", supportedDNSProviders))
createCmd.Flags().StringVar(&domainNameFlag, "domain-name", "", "the GCP DNS Name to use for DNS records (i.e. your-domain.com|subdomain.your-domain.com) (required)")
createCmd.MarkFlagRequired("domain-name")
createCmd.Flags().StringVar(&gcpProjectFlag, "gcp-project", "", "gcp project id (required)")
Expand All @@ -86,7 +87,7 @@ func Create() *cobra.Command {
createCmd.Flags().StringVar(&gitopsTemplateBranchFlag, "gitops-template-branch", "", "the branch to clone for the gitops-template repository")
createCmd.Flags().StringVar(&gitopsTemplateURLFlag, "gitops-template-url", "https://github.com/kubefirst/gitops-template.git", "the fully qualified url to the gitops-template repository to clone")
createCmd.Flags().BoolVar(&useTelemetryFlag, "use-telemetry", true, "whether to emit telemetry")

createCmd.Flags().BoolVar(&forceDestroyFlag, "force-destroy", false, "allows force destruction on objects (helpful for test environments, defaults to false)")
return createCmd
}

Expand Down
Loading