From 4ad1c455d8224ff249ae230b0483e68663c7a167 Mon Sep 17 00:00:00 2001 From: romanprog Date: Thu, 30 Dec 2021 14:02:59 +0000 Subject: [PATCH] update to cli 0.6.1 --- .cdev-metadata/generator/minimal/config.yaml | 2 +- .../minimal/data/{infra.yaml => stack.yaml} | 7 +- README.md | 5 +- aws-k3s.yaml | 88 ++++++++----------- examples/README.md | 9 ++ examples/dev-infra.yaml | 35 -------- examples/project.yaml | 9 -- 7 files changed, 54 insertions(+), 101 deletions(-) rename .cdev-metadata/generator/minimal/data/{infra.yaml => stack.yaml} (89%) create mode 100644 examples/README.md delete mode 100644 examples/dev-infra.yaml delete mode 100644 examples/project.yaml diff --git a/.cdev-metadata/generator/minimal/config.yaml b/.cdev-metadata/generator/minimal/config.yaml index ea91bcc..90082d5 100644 --- a/.cdev-metadata/generator/minimal/config.yaml +++ b/.cdev-metadata/generator/minimal/config.yaml @@ -3,7 +3,7 @@ options: - name: name description: Project name regex: "^[a-zA-Z][a-zA-Z_0-9\\-]{0,32}$" - default: "demo-project" + default: "cdev-demo" - name: organization description: Organization name regex: "^[a-zA-Z][a-zA-Z_0-9\\-]{0,64}$" diff --git a/.cdev-metadata/generator/minimal/data/infra.yaml b/.cdev-metadata/generator/minimal/data/stack.yaml similarity index 89% rename from .cdev-metadata/generator/minimal/data/infra.yaml rename to .cdev-metadata/generator/minimal/data/stack.yaml index d1a871d..c4be42f 100644 --- a/.cdev-metadata/generator/minimal/data/infra.yaml +++ b/.cdev-metadata/generator/minimal/data/stack.yaml @@ -1,13 +1,14 @@ name: my-k3s-cluster -template: https://github.com/shalb/cdev-aws-k3s?ref=v0.0.2 -kind: Infrastructure +template: https://github.com/shalb/cdev-aws-k3s?ref=v0.1.0 +kind: Stack backend: aws-backend variables: bucket: {{ .project.variables.state_bucket_name }} region: {{ .project.variables.region }} organization: {{ .project.variables.organization }} + cluster_name: /{ .name }/ domain: cluster.dev - instance_type: "t3.medium" + instance_type: "t3a.medium" k3s_version: "1.20.5+k3s1" # If you want to use existing VPC and subnets, uncomment the options below and set correct VPC ID and the subnets IDs. # Otherwise, the new VPC and subnets will be created automatically. diff --git a/README.md b/README.md index 0f855c8..b7acc03 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,9 @@ The resources to be created: ## Quick Start 1. [Configure access to AWS](https://docs.cluster.dev/examples-aws-eks/#authentication) and export required variables. -2. Clone example project: +2. In empty dir: use cdev generator to create project from this repo: ``` - git clone https://github.com/shalb/cdev-aws-k3s.git - cd examples/ + cdev project create https://github.com/shalb/cdev-aws-k3s ``` 3. Edit variables in the example's files, if necessary. diff --git a/aws-k3s.yaml b/aws-k3s.yaml index 1ad57c5..41eb30b 100644 --- a/aws-k3s.yaml +++ b/aws-k3s.yaml @@ -1,13 +1,14 @@ {{- $createVpcCIDR := "10.8.0.0/18" -}} {{- $azs_count := len .variables.azs -}} -_: &getKubeconfig "export KUBECONFIG=./kubeconfig_{{ .name }} && aws s3 cp s3://{{ .variables.bucket }}/{{ .name }}/kubeconfig ./kubeconfig_{{ .name }}" +_: &getKubeconfig "export KUBECONFIG=./kubeconfig_{{ .variables.cluster_name }} && aws s3 cp s3://{{ .variables.bucket }}/{{ .variables.cluster_name }}/kubeconfig ./kubeconfig_{{ .variables.cluster_name }}" _p: &provider_aws - aws: region: {{ .variables.region }} name: aws-k3s -kind: InfraTemplate +kind: StackTemplate +cliVersion: ">=0.6.1" units: - name: aws_key_pair @@ -24,7 +25,7 @@ units: source: github.com/shalb/cluster.dev-domain?ref=0.1.0 inputs: region: {{ .variables.region }} - cluster_name: {{ .name }} + cluster_name: {{ .variables.cluster_name }} cluster_domain: {{ .variables.domain }} zone_delegation: {{ if eq .variables.domain "cluster.dev" }}true{{ else }}false{{ end }} {{- if not .variables.vpc_id }} @@ -35,7 +36,7 @@ units: source: terraform-aws-modules/vpc/aws version: "2.70.0" inputs: - name: {{ .name }} + name: {{ .variables.cluster_name }} cidr: {{ $createVpcCIDR }} public_subnets: {{- range $index, $_ := .variables.azs }} @@ -53,7 +54,7 @@ units: source: ./ext-dns-iam providers: *provider_aws inputs: - name: {{ .name }}-test + name: {{ .variables.cluster_name }}-test domain: {{ remoteState "this.route53.zone_id" }} - name: k3s @@ -62,8 +63,9 @@ units: pre_hook: command: *getKubeconfig on_apply: false + on_destroy: true inputs: - cluster_name: {{ .name }} + cluster_name: {{ .variables.cluster_name }} extra_args: - "--disable traefik" domain: {{ remoteState "this.route53.domain" }} @@ -83,6 +85,19 @@ units: worker_iam_policies: - {{ remoteState "this.ext-dns-iam.arn" }} enable_asg_rolling_auto_update: true + - + name: kubeconfig + type: shell + force_apply: true + depends_on: this.k3s + apply: + commands: + - aws s3 cp s3://{{ .variables.bucket }}/{{ .variables.cluster_name }}/kubeconfig /tmp/kubeconfig_{{ .variables.cluster_name }} + - echo "kubeconfig_base64=$(cat /tmp/kubeconfig_{{ .variables.cluster_name }} | base64 -w 0)" + - echo "kubeconfig_path=/tmp/kubeconfig_{{ .variables.cluster_name }}" + outputs: + type: separator + separator: "=" - name: cert-manager type: helm @@ -90,15 +105,10 @@ units: repository: "https://charts.jetstack.io" chart: "cert-manager" version: "v1.2.0" - kubeconfig: ./kubeconfig_{{ .name }} - depends_on: this.k3s + kubeconfig: {{ output "this.kubeconfig.kubeconfig_path" }} additional_options: namespace: "cert-manager" create_namespace: true - pre_hook: - command: *getKubeconfig - on_destroy: true - on_plan: true inputs: installCRDs: true webhook.enabled: false @@ -109,15 +119,10 @@ units: serviceAccount.create: true - name: cert-manager-issuer - type: kubernetes - source: ./cert-manager/ - provider_version: "0.2.1" - kubeconfig: ./kubeconfig_{{ .name }} + type: k8s-manifest + path: ./cert-manager/issuer.yaml + kubeconfig: {{ output "this.kubeconfig.kubeconfig_path" }} depends_on: this.cert-manager - pre_hook: - command: *getKubeconfig - on_destroy: true - on_plan: true - name: ingress-nginx type: helm @@ -125,15 +130,10 @@ units: repository: "https://kubernetes.github.io/ingress-nginx" chart: "ingress-nginx" version: "3.21.0" - kubeconfig: ./kubeconfig_{{ .name }} - depends_on: this.k3s + kubeconfig: {{ output "this.kubeconfig.kubeconfig_path" }} additional_options: namespace: "ingress-nginx" create_namespace: true - pre_hook: - command: *getKubeconfig - on_destroy: true - on_plan: true inputs: service.type: LoadBalancer controller.admissionWebhooks.enabled: false @@ -145,14 +145,9 @@ units: repository: "https://kubernetes-sigs.github.io/aws-ebs-csi-driver" chart: "aws-ebs-csi-driver" version: "0.9.14" - kubeconfig: ./kubeconfig_{{ .name }} - depends_on: this.k3s + kubeconfig: {{ output "this.kubeconfig.kubeconfig_path" }} additional_options: namespace: "kube-system" - pre_hook: - command: *getKubeconfig - on_destroy: true - on_plan: true values: - file: ./csi/values.yaml apply_template: false @@ -163,10 +158,7 @@ units: repository: "https://argoproj.github.io/argo-helm" chart: "argo-cd" version: "2.11.0" - pre_hook: - command: *getKubeconfig - on_destroy: true - kubeconfig: ./kubeconfig_{{ .name }} + kubeconfig: {{ output "this.kubeconfig.kubeconfig_path" }} depends_on: this.cert-manager-issuer additional_options: namespace: "argocd" @@ -174,40 +166,36 @@ units: inputs: global.image.tag: v1.8.3 service.type: LoadBalancer - server.certificate.domain: argocd.{{ .name }}.{{ .variables.domain }} + server.certificate.domain: argocd.{{ .variables.cluster_name }}.{{ .variables.domain }} server.certificate.enabled: true server.certificate.issuer.name: letsencrypt-prod server.certificate.issuer.kind: ClusterIssuer server.ingress.enabled: true server.ingress.tls[0].secretName: argocd-secret - server.ingress.hosts[0]: argocd.{{ .name }}.{{ .variables.domain }} - server.ingress.tls[0].hosts[0]: argocd.{{ .name }}.{{ .variables.domain }} + server.ingress.hosts[0]: argocd.{{ .variables.cluster_name }}.{{ .variables.domain }} + server.ingress.tls[0].hosts[0]: argocd.{{ .variables.cluster_name }}.{{ .variables.domain }} server.ingress.annotations.cert-manager\.io/cluster-issuer: letsencrypt-prod server.ingress.annotations.kubernetes\.io/ingress.class: nginx server.ingress.annotations.kubernetes\.io/tls-acme: "true" server.ingress.annotations.nginx\.ingress\.kubernetes\.io/ssl-passthrough: "true" server.ingress.annotations.nginx\.ingress\.kubernetes\.io/backend-protocol: "HTTPS" - server.config.url: https://argocd.{{ .name }}.{{ .variables.domain }} + server.config.url: https://argocd.{{ .variables.cluster_name }}.{{ .variables.domain }} configs.secret.argocdServerAdminPassword: {{ .variables.argocdServerAdminPassword }} configs.secret.argocdServerAdminPasswordMtime: "2021-01-01T00:00:00Z" - name: argocd_apps - type: kubernetes - provider_version: "0.2.1" - source: ./argocd-apps/ - pre_hook: - command: *getKubeconfig - on_destroy: true - on_plan: true - kubeconfig: ./kubeconfig_{{ .name }} + type: k8s-manifest + path: ./argocd-apps/ + kubeconfig: {{ output "this.kubeconfig.kubeconfig_path" }} depends_on: this.argocd - name: print_outputs type: printer depends_on: this.argocd_apps inputs: - cluster_name: {{ .name }} + cluster_name: {{ .variables.cluster_name }} region: {{ .variables.region }} kubeconfig: *getKubeconfig k3s_version: {{ .variables.k3s_version }} - argocd_url: https://argocd.{{ .name }}.{{ .variables.domain }} \ No newline at end of file + argocd_url: https://argocd.{{ .variables.cluster_name }}.{{ .variables.domain }} + diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..6461c04 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,9 @@ +1. [Configure access to AWS](https://docs.cluster.dev/examples-aws-eks/#authentication) and export required variables. +2. In empty dir: use cdev generator to create project from this repo: + ``` + cdev project create https://github.com/shalb/cdev-aws-k3s + ``` + +3. Edit variables in the example's files, if necessary. +4. Run `cdev plan` +5. Run `cdev apply` diff --git a/examples/dev-infra.yaml b/examples/dev-infra.yaml deleted file mode 100644 index 08027c3..0000000 --- a/examples/dev-infra.yaml +++ /dev/null @@ -1,35 +0,0 @@ -name: aws-backend -kind: Backend -provider: s3 -spec: - bucket: {{ .project.variables.state_bucket_name }} - region: {{ .project.variables.region }} ---- -name: k3s-arti-test -template: ./k3s-arti-test/ -kind: Infrastructure -backend: aws-backend -variables: - bucket: {{ .project.variables.state_bucket_name }} - region: {{ .project.variables.region }} - organization: {{ .project.variables.organization }} - domain: cluster.dev - instance_type: "t3.medium" - k3s_version: "1.20.5+k3s1" - vpc_id: "vpc-5ecf1234" - public_subnets: - - "subnet-d775f0bd" - - "subnet-6696651a" - env: "dev" - azs: - - "{{ .project.variables.region }}a" - - "{{ .project.variables.region }}b" - public_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC872U0xIGtOQRXhOXHIT...." # Change this. - public_key_name: arti - master_node_count: 1 - worker_node_groups: - - name: "node_pool" - min_size: 2 - max_size: 3 - instance_type: "t3.medium" - argocdServerAdminPassword: "$2a$10$1buVsK9yv0Al1oJlLmABeeRxYsArdlT2QPdNRqaZwiuYztj9JUDmu" # Bcrypted "password" diff --git a/examples/project.yaml b/examples/project.yaml deleted file mode 100644 index aebc891..0000000 --- a/examples/project.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: dev -kind: Project -variables: - organization: shalb # sample global variable - region: eu-central-1 - state_bucket_name: cdev-states # create and set your s3 bucket here -exports: - AWS_PROFILE: cluster-dev -# CDEV_TF_BINARY: /usr/local/bin/terraform-0.14.9 # optional set of TF version \ No newline at end of file