MCPcopy Create free account
hub / github.com/diillson/chatcli / handleCreate

Function handleCreate

plugins-examples/chatcli-eks/main.go:189–615  ·  view source on GitHub ↗
(args []string)

Source from the content-addressed store, hash-verified

187}
188
189func handleCreate(args []string) {
190 createCmd := flag.NewFlagSet("create", flag.ExitOnError)
191
192 stateBucketName := createCmd.String("state-bucket-name", "", "Nome do bucket S3 para o estado (Obrigatório se não usar Pulumi Cloud).")
193 clusterName := createCmd.String("name", "prod-eks", "Identificador único do Cluster (Stack Name).")
194 awsRegion := createCmd.String("region", "us-east-1", "Região da AWS.")
195 k8sVersion := createCmd.String("k8s-version", "1.31", "Versão do Kubernetes.")
196
197 nodeType := createCmd.String("node-type", "t3.medium", "Tipo da instância para os nós.")
198 minNodes := createCmd.Int("min-nodes", 2, "Número mínimo de nós.")
199 maxNodes := createCmd.Int("max-nodes", 5, "Número máximo de nós.")
200 useSpot := createCmd.Bool("use-spot", false, "Usar instâncias Spot para economizar custos.")
201
202 vpcID := createCmd.String("vpc-id", "", "ID de uma VPC existente. Se vazio, cria uma nova.")
203 privSubnets := createCmd.String("private-subnets", "", "Lista de IDs de subnets privadas (separadas por vírgula).")
204 pubSubnets := createCmd.String("public-subnets", "", "Lista de IDs de subnets públicas (separadas por vírgula).")
205 extraRules := createCmd.String("extra-ingress-rules", "", "Regras extras de SG (ex: '8080:0.0.0.0/0').")
206
207 withLB := createCmd.Bool("with-lb-controller", true, "Instalar AWS Load Balancer Controller.")
208 withNginx := createCmd.Bool("with-nginx", false, "Instalar Nginx Ingress Controller.")
209 withArgo := createCmd.Bool("with-argocd", false, "Instalar ArgoCD.")
210 withIstio := createCmd.Bool("with-istio", false, "Instalar Istio Service Mesh.")
211 withIstioObservability := createCmd.Bool("with-istio-observability", false, "Instalar pilha de observabilidade do Istio (Kiali, Prometheus, Grafana). Requer --with-istio.")
212 withIstioTracing := createCmd.Bool("with-istio-tracing", false, "Instalar Jaeger para tracing distribuído com Istio. Requer --with-istio-observability.")
213
214 withCertManager := createCmd.Bool("with-cert-manager", false, "Instalar Cert-Manager.")
215 argocdDomain := createCmd.String("argocd-domain", "", "Domínio para ArgoCD (ex: argocd.example.com).")
216 certManagerEmail := createCmd.String("cert-manager-email", "", "Email para Let's Encrypt (obrigatório se usar cert-manager).")
217 acmeServer := createCmd.String("acme-server", "production", "Servidor ACME: 'production' ou 'staging' (aplica-se ao provedor escolhido).")
218 acmeEabKid := createCmd.String("acme-eab-kid", "", "EAB KeyID (obrigatório para --acme-provider=google)")
219 acmeEabHmac := createCmd.String("acme-eab-hmac", "", "EAB HMAC key (obrigatório para --acme-provider=google)")
220 acmeEabAlg := createCmd.String("acme-eab-key-alg", "HS256", "Algoritmo do EAB: HS256|HS384|HS512")
221 acmeEabSecretName := createCmd.String("acme-eab-secret-name", "acme-eab-secret", "Nome do Secret para armazenar o HMAC")
222
223 baseDomain := createCmd.String("base-domain", "", "Domínio base para certificado wildcard.")
224 withExternalDNS := createCmd.Bool("with-external-dns", false, "Instalar External DNS (automação Route53).")
225
226 refreshState := createCmd.Bool("refresh", true, "Validar estado real dos recursos antes de aplicar (recomendado).")
227 acmeProvider := createCmd.String("acme-provider", "letsencrypt", "Provedor ACME: 'letsencrypt' ou 'google' (Google Trust Services).")
228
229 secretsProvider := createCmd.String("secrets-provider", "awskms", "Provider de criptografia para secrets pulumi: 'passphrase' (local), 'awskms' (recomendado).")
230 kmsKeyID := createCmd.String("kms-key-id", "", "ID da chave KMS para criptografia (obrigatório se secrets-provider=awskms). Formato: 'arn:aws:kms:REGION:ACCOUNT:key/KEY-ID' ou 'alias/key-alias'.")
231 configPassphrase := createCmd.String("config-passphrase", "", "Passphrase para criptografia local de secrets (obrigatório se secrets-provider=passphrase). Alternativamente use PULUMI_CONFIG_PASSPHRASE env var.")
232
233 kmsAction := createCmd.String("kms-action", "reuse", "Ação se KMS já existe: 'reuse' (padrão), 'fail', 'rotate'")
234
235 if err := createCmd.Parse(args); err != nil {
236 os.Exit(1)
237 }
238
239 // Escolha do backend
240 var backendURL string
241 if *stateBucketName != "" {
242 // S3 + Dynamo lock (explícito)
243 fmt.Fprintln(os.Stderr, "\n--- Fase de Bootstrap do Backend de Estado (S3) ---")
244 awsClients, err := aws_bootstrap.NewAWSClients(context.Background(), *awsRegion)
245 if err != nil {
246 fmt.Fprintf(os.Stderr, "❌ Erro ao inicializar clientes AWS: %v\n", err)

Callers 1

mainFunction · 0.70

Calls 9

NewAWSClientsFunction · 0.92
KMSActionTypeAlias · 0.92
ACMEProviderTypeAlias · 0.92
CreateOrUpdateEKSFunction · 0.92
getCurrentPulumiBackendFunction · 0.85
EnsureS3BackendMethod · 0.80
GetKMSKeyInfoMethod · 0.80
StringMethod · 0.45

Tested by

no test coverage detected