Coder Social home page Coder Social logo

terraform-aws-eks's People

Contributors

andreloc avatar kjstillabower-dignifi avatar mercuriete avatar sobi3ch avatar tillkuhn avatar young-ook avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

terraform-aws-eks's Issues

kubernetes-charts-incubator.storage.googleapis.com is not a valid chart

I have just received this error while trying to test the "examples/complete".
Using the following parameters

module.eks.aws_eks_node_group.ng["default"]: Still creating... [2m20s elapsed]
module.eks.aws_eks_node_group.ng["default"]: Creation complete after 2m27s [id=eks-tc1:eks-tc1-default]

Error: looks like "https://kubernetes-charts-incubator.storage.googleapis.com" is not a valid chart repository or cannot be reached: failed to fetch https://kubernetes-charts-incubator.storage.googleapis.com/index.yaml : 403 Forbidden
Error: failed to download "https://github.com/kubernetes/autoscaler/releases/download/cluster-autoscaler-chart-1.1.1/cluster-autoscaler-chart-1.1.1.tgz" (hint: running helm repo update may help)

My default file is:

aws_region = "us-east-2"
azs = ["us-east-2a", "us-east-2b", "us-east-2c"]
name = "eks-tc1"
tags = {
env = "dev"
test = "tc1"
}
kubernetes_version = "1.18"
managed_node_groups = [
{
name = "default"
min_size = 1
max_size = 3
desired_size = 1
instance_type = "t3.large"
}
]
node_groups = [
{
name = "default"
min_size = 1
max_size = 3
desired_size = 1
instance_type = "t3.large"
}
]

Number argument of random string resource is deprecated

Warning: Argument is deprecated

│ with module.foundation.module.eks.module.eks.random_string.uid,
│ on .terraform/modules/foundation.eks.eks/labels.tf line 5, in resource "random_string" "uid":
│ 5: number = false

│ Use numeric instead.

Cloudwatch insights now uses fluentbit instead of fluentd.

how to deploy aws load balancer controller in eks

i have my eks cluster is running, which is created with terraform. now i need to deploy aws load balancer controller in eks.
i could not find any use full repo to deploy this.

can you please suggest anything for me

VPC Fallback breaks environments without a default VPC

The code in question:

## default vpc
data "aws_vpc" "default" {
  default = true
}

data "aws_subnet_ids" "default" {
  vpc_id = data.aws_vpc.default.id
}

locals {
  subnet_ids = var.subnets == null ? data.aws_subnet_ids.default.ids : var.subnets
}

Although var.subnets is supported and used when supplied, data.aws_vpc needs to succeed in looking up the default VPC even if custom subnets exist and are supplied, and the default is not being used. That means if the target account no longer uses the default VPC, this module cannot be used.

This is philosophical, but it feels like its reasonable to ask the user to lookup and supply their desired subnet in all cases, and fall back to their own default VPC if they elect to, in their code.

I would be willing to submit a PR to back up this request if you agree conceptually.

AWS efs csi driver support

Following the addons blue print example, I tried to implement the aws-efs-csi-driver from aws documentation.
https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html

module "helm-addons" {
  depends_on = [module.eks-addons]
  source     = "Young-ook/eks/aws//modules/helm-addons"
  version    = "2.0.3"
  tags       = local.tags
  addons = [
    {
      repository     = "https://aws.github.io/eks-charts"
      name           = "aws-load-balancer-controller"
      chart_name     = "aws-load-balancer-controller"
      namespace      = "kube-system"
      serviceaccount = "aws-load-balancer-controller"
      values = module.eks.features.fargate_enabled ? {
        "vpcId"       = var.vpc_id
        "clusterName" = module.eks.cluster.name
        } : {
        "clusterName" = module.eks.cluster.name
      }
      oidc        = module.eks.oidc
      policy_arns = [aws_iam_policy.lbc.arn]
    },
    {
      repository = "https://kubernetes-sigs.github.io/aws-efs-csi-driver/"
      name = "aws-efs-csi-driver"
      chart_name = "aws-efs-csi-driver"
      namespace = "kube-system"
      serviceaccount = "aws-efs-csi-driver"
      oidc = module.eks.oidc
      policy_arns = [aws_iam_policy.efsc.arn]
    }
  ]
}

The deployment complet with success but it seems there are some differences in the inputs of the helm modules that prevent the annotations to be created correctly for the k8s serviceaccount. None of the values = {} are pass to the Annotations, and the eks.amazonaws.com/role-arn isn't create. Here is the output of the efs-csi vs the lb.

$ kubectl describe serviceaccount efs-csi-controller-sa --namespace kube-system
Name:                efs-csi-controller-sa
Namespace:           kube-system
Labels:              app.kubernetes.io/managed-by=Helm
                     app.kubernetes.io/name=aws-efs-csi-driver
Annotations:         meta.helm.sh/release-name: aws-efs-csi-driver
                     meta.helm.sh/release-namespace: kube-system
Image pull secrets:  <none>
Mountable secrets:   <none>
Tokens:              <none>
Events:              <none>

$ kubectl describe serviceaccount aws-load-balancer-controller --namespace kube-system
Name:                aws-load-balancer-controller
Namespace:           kube-system
Labels:              app.kubernetes.io/instance=aws-load-balancer-controller
                     app.kubernetes.io/managed-by=Helm
                     app.kubernetes.io/name=aws-load-balancer-controller
                     app.kubernetes.io/version=v2.4.7
                     helm.sh/chart=aws-load-balancer-controller-1.4.8
Annotations:         eks.amazonaws.com/role-arn: arn:aws:iam::111111111111:role/aws-load-balancer-controller
                     meta.helm.sh/release-name: aws-load-balancer-controller
                     meta.helm.sh/release-namespace: kube-system
Image pull secrets:  <none>
Mountable secrets:   <none>
Tokens:              <none>
Events:              <none>

Is there some way that I could use your helm module to deploy efs-csi-driver? My assumption for the parameters is comming from the code snipet in the aws doc and no manual deployment was tested yet.

helm upgrade -i aws-efs-csi-driver aws-efs-csi-driver/aws-efs-csi-driver \
    --namespace kube-system \
    --set image.repository=602401143452.dkr.ecr.region-code.amazonaws.com/eks/aws-efs-csi-driver \
    --set controller.serviceAccount.create=false \
    --set controller.serviceAccount.name=efs-csi-controller-sa

aws-auth module

This is an initial idea of an aws-auth configmap manager module using config_map_v1_data resource of kubernetes provider.
https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/config_map_v1_data

kubernetes_config_map_v1_data
This resource allows Terraform to manage data within a pre-existing ConfigMap. This resource uses field management and server-side apply to manage only the data that is defined in the Terraform configuration. Existing data not specified in the configuration will be ignored.

ebs-csi-controller UnauthorizedOperation

Hi mate, you have used your blueprint to provision a eks. I was installing mysql in the eks. helm install mysql bitnami/mysql. But found an error in the mysql pvc data-mysql-0. It seems that ebs-csi-controller doesn't have the right permission? How to solve it? Thanks!

Normal   ExternalProvisioning  3m15s (x25 over 8m52s)  persistentvolume-controller                                                               waiting for a volume to be created, either by external provisioner "ebs.csi.aws.com" or manually created by system administrator
  Normal   Provisioning          20s (x11 over 8m52s)    ebs.csi.aws.com_ebs-csi-controller-7546dc6bf4-khsl9_720fd23f-e9a5-46d1-affa-753d0928b5db  External provisioner is provisioning volume for claim "cornerstone-dev/data-mysql-0"
  Warning  ProvisioningFailed    20s (x2 over 3m12s)     ebs.csi.aws.com_ebs-csi-controller-7546dc6bf4-khsl9_720fd23f-e9a5-46d1-affa-753d0928b5db  (combined from similar events): failed to provision volume with StorageClass "gp2": rpc error: code = Internal desc = Could not create volume "pvc-fa19888f-1e4e-4b73-8279-1b20526d2861": could not create volume in EC2: UnauthorizedOperation: You are not authorized to perform this operation. Encoded authorization failure message: 8Wtkt8RKjXJXPBvQYXO429ukRzMZLs24YVEz7h6wMMn56DnOFnyuWPFzAgTRge2I5w2sBfRK8zOCJodF7c5jtFpp1-AIuRu5sDoilDM22d3lkw7BTfDZ9EZF0_SG0VtLP9CLdIATnJzS9I5zOl_vJBPJDVp42u-k0HuGKGJ7TaokFBmfiFMGtaV2dUSEa4oXRc-rvl8Ty5iKVLjrnV65-OlCtVDR1YCd-O9FXM9mKI7ttvup8GOkIbV5PUaJFLiwgql3ypk-CMdT22QTzv1_8OZ2CFcAQGbpgebtSrM_FD1fdnOwIIFzp0DYkYm-hlmQ0EDO_clGg8CR55hF-SuvKdaDXRIj3rgTSwzQedbLkJqJf3sNJjnqiPjGTnKnFG3kAGLF6pcpIsi5d6jng3yc88dFIXVWLNzzVEt5v-WrKR-_J2QbysXbWqvrsGxsEK_da7DHixtDfylnuaOi41XBetysjAGZb4Dg1vGHpDgE8K4Wg4j8dkX0fPGHZAMfGHYhH9n0nEOlc-NJnYUEn9G6ej97yy9sMF88paK87KdObxmmzziMkVec9umJUiDv0tHaJkWmFsWVIkSSeK0FQKt2tuVtEr_uo8Tq6hUhEpX9Qs1hzH78RCqWFOxNtw9qUp4l5A
           status code: 403, request id: ab9443fa-1df9-42a1-a671-5d98bbe720dd

PermissionBoundary variable missing in iam-role-for-serviceaccount submodule

While I was trying to use container insights, I got error as below:

│ Error: error creating IAM Role (irsa-ew2-stack-eks01-eks_cluster): AccessDenied: User: arn:aws:sts::xxxxxxx:assumed-role/User-eu-west-2/xxxxxxx is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::xxxxxxx:role/irsa-ew2-stack-eks01-eks_cluster with an explicit deny
│ status code: 403, request id: xxxx-xxxxx

│ on .terraform\modules\container-insights\modules\iam-role-for-serviceaccount\main.tf line 6, in resource "aws_iam_role" "irsa":
│ 6: resource "aws_iam_role" "irsa" {

Added PermissionBoundary in there, and it fixed.

Trying to use Container Insights on existing EKS fargate - No Pods running

Hi,

I am trying to use container insights sub module into my existing EKS fargate cluster.
I have created 2 fargate profiles. I installed the module and ran terraform apply.

I have enable_metrics and enable_log both as true, I see that DeamonSets are created but there is no pod running.

What am I missing please?

No nodes available to schedule pods

Hello, I followed the README and did a terraform apply. The apply went through without a hitch and no errors but I see that the pods are in Pending state. When I tried a kubectl describe pods on the hello-kubernetes.yaml I applied, the issue is as follows:

  Type     Reason            Age                     From               Message
  ----     ------            ----                    ----               -------
  Warning  FailedScheduling  3m48s (x122 over 124m)  default-scheduler  no nodes available to schedule pods

I went further and did this and discovered the source of the problem:

$ kubectl get nodes -o wide --kubeconfig ./kubeconfig
No resources found

Any insight into how to fix this? Again, this is after doing a terraform apply

Cluster autoscaler not enough RAM

Hi @Young-ook

I am using your terraform module to deploy cluster autoscaler.

I am not sure when started to happen that the cluster autoscaler starts to crash due to not enough RAM

Can I change the default values for your template?
in my internal eks clusters is enough with 768MiB but I wanted to customize it.

Thanks in advance.

PS: it seems it similar to what happened on
ea85592
but I don't find any people with my same problem this time.

Suggested Contributions

Before I just open up a lot of PR's, I would like to agree upon the features with you:

What? Specify AZ for node groups.
Why? EBS volumes are AZ bound so if you want to spawn a node group for stateful pods (e.g. VPN with config, Database) its useful to restrict the AZ. O.w. you have to hope that some node of the correct node group (according to labels/taints on the nodegroup) is spawned in the correct AZ.

What? Custom AMI's
Why? I want to use an Ubuntu AMI which is not possible right now because I cannot specify an AMI_ID. https://github.com/terraform-aws-modules/terraform-aws-eks solved it pretty in a pretty sophisticated manner. We could straight up copy the code. If you wanna keep it more concise, I think we could also just add a general option to provide generic user_data in a script and an ami_id.

AWS account without default VPC

Hello @Young-ook,

Your module is great but I have small problem on account where i dont have default VPC. I have working 2 VPCs on this account but without default one and i get this error after terraform plan: Error: no matching VPC found. On second account where we have defualt vpc configured everything is working fine. The problem is that we cant create additional VPC and make it default (routings, etc. ...).

Thanks
Kamil

Failed to install helm addon

Hi, we can see the following error during terraform apply:

Error: could not download chart: failed to download "https://aws.github.io/eks-charts/aws-for-fluent-bit-0.1.22.tgz"
│
│   with module.helm-addons.helm_release.chart["aws-for-fluent-bit"],
│   on .terraform\modules\helm-addons\modules\helm-addons\main.tf line 2, in resource "helm_release" "chart":
│    2: resource "helm_release" "chart" {
│
╵
╷
│ Error: could not download chart: failed to download "https://aws.github.io/eks-charts/aws-load-balancer-controller-1.4.7.tgz"
│
│   with module.helm-addons.helm_release.chart["aws-load-balancer-controller"],
│   on .terraform\modules\helm-addons\modules\helm-addons\main.tf line 2, in resource "helm_release" "chart":
│    2: resource "helm_release" "chart" {
│
╵
╷
│ Error: could not download chart: failed to download "https://aws.github.io/eks-charts/aws-node-termination-handler-0.21.0.tgz"
│
│   with module.helm-addons.helm_release.chart["aws-node-termination-handler"],
│   on .terraform\modules\helm-addons\modules\helm-addons\main.tf line 2, in resource "helm_release" "chart":
│    2: resource "helm_release" "chart" {
│
╵
╷
│ Error: could not download chart: failed to download "https://aws.github.io/eks-charts/appmesh-controller-1.10.0.tgz"
│
│   with module.helm-addons.helm_release.chart["appmesh-controller"],
│   on .terraform\modules\helm-addons\modules\helm-addons\main.tf line 2, in resource "helm_release" "chart":
│    2: resource "helm_release" "chart" {
│
╵
╷
│ Error: could not download chart: failed to download "https://github.com/kubernetes-sigs/metrics-server/releases/download/metrics-server-helm-chart-3.8.3/metrics-server-3.8.3.tgz"
│
│   with module.helm-addons.helm_release.chart["metrics-server"],
│   on .terraform\modules\helm-addons\modules\helm-addons\main.tf line 2, in resource "helm_release" "chart":
│    2: resource "helm_release" "chart" {
│
╵

The cluster is created successfully, but missing the above addon. Do you have any idea?

Change alb ingress controller chart to official aws

hi.

I saw you did an alb ingress controller on #90

can you move that code from incubator to:

alb_controller_helm_repo = "https://aws.github.io/eks-charts"
alb_controller_chart_name = "aws-load-balancer-controller"

I think the code is here:
https://github.com/aws/eks-charts/tree/master/stable/aws-load-balancer-controller

I am using the terraform module from this guy:
https://github.com/GSA/terraform-kubernetes-aws-load-balancer-controller/blob/master/main.tf

but I would prefer to use your module.

Thanks :)

EDIT: sorry I am wrong. I read another file from alb-ingress folder

.... closing.

MalformedPOlicyDocument for iam-role-for-serviceaccount

Hi i get a MalformedPolicyDocument error when i run the below:

module "irsa" {
  version = "1.7.0"
  source  = "Young-ook/eks/aws//modules/iam-role-for-serviceaccount"

  serviceaccount = "postbox-sa"
  oidc_url       = data.aws_eks_cluster.this.identity[0].oidc[0].issuer
  oidc_arn       = data.aws_eks_cluster.this.role_arn
  policy_arns    = ["${aws_iam_policy.this.arn}"]
  namespace      = "postbox"
}

Output and error are:

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # module.irsa.aws_iam_role.irsa[0] will be created
  + resource "aws_iam_role" "irsa" {
      + arn                   = (known after apply)
      + assume_role_policy    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRoleWithWebIdentity"
                      + Condition = {
                          + StringEquals = {
                              + https://oidc.eks.eu-west-2.amazonaws.com/id/40ABF36466C599FF69A257B2ACB9E5E4:sub = "system:serviceaccount:postbox:postbox-sa"
                            }
                        }
                      + Effect    = "Allow"
                      + Principal = {
                          + Federated = "arn:aws:iam::602828293775:role/dev-cluster-cluster-20220222151120373900000003"
                        }
                    },
                ]
              + Version   = "2012-10-17"
            }
        )
      + create_date           = (known after apply)
      + force_detach_policies = false
      + id                    = (known after apply)
      + managed_policy_arns   = (known after apply)
      + max_session_duration  = 3600
      + name                  = "irsa-71nu2859ufoy"
      + name_prefix           = (known after apply)
      + path                  = "/"
      + tags                  = {
          + "Name"         = "irsa-71nu2859ufoy"
          + "terraform.io" = "managed"
        }
      + tags_all              = {
          + "Name"                = "irsa-71nu2859ufoy"
          + "gitrepo"             = "postbox"
          + "service"             = "postbox"
          + "terraform"           = "true"
          + "terraform.io"        = "managed"
          + "terraform_workspace" = "infra"
        }
      + unique_id             = (known after apply)

      + inline_policy {
          + name   = (known after apply)
          + policy = (known after apply)
        }
    }

  # module.irsa.aws_iam_role_policy_attachment.irsa["0"] will be created
  + resource "aws_iam_role_policy_attachment" "irsa" {
      + id         = (known after apply)
      + policy_arn = "arn:aws:iam::xxx:policy/postbox-s3-irsa"
      + role       = "irsa-71nu2859ufoy"
    }

Plan: 2 to add, 0 to change, 0 to destroy.
module.irsa.aws_iam_role.irsa[0]: Creating...
╷
│ Error: failed creating IAM Role (irsa-71nu2859ufoy): MalformedPolicyDocument: Federated principals must be valid domain names or SAML metadata ARNs
│       status code: 400, request id: bead670a-4e36-45a0-a8e9-fced6a649a95
│ 
│   with module.irsa.aws_iam_role.irsa[0],
│   on .terraform/modules/irsa/modules/iam-role-for-serviceaccount/main.tf line 6, in resource "aws_iam_role" "irsa":
│    6: resource "aws_iam_role" "irsa" {
│ 
╵
ERRO[0012] 1 error occurred:
        * exit status 1

[Container Insights] MissingRegionError

Dear @Young-ook ,

first I wanted to say thank you so much for providing this repo!

I deployed the Amazon CloudWatch Container Insights terraform module (1.4.6) and the metrics part seem fine, but the logs are not working properly.
I found this line in the logs of the logagent:

[error]: #0 unexpected error error_class=Aws::Errors::MissingRegionError error="missing region; use :region option or export region name to ENV['AWS_REGION']"

Therefore I edited the deamonset of eks-cw-containerinsights-logs and added the following line:

        - name: AWS_REGION
          valueFrom:
            configMapKeyRef:
              key: logs.region
              name: cluster-info

After adding this the logs are recorded properly and are sent to CloudWatch.

Missing audience in trust relationship irsa

Hi,

When creating the IRSA using the module it will not create the needed 'aud' in the trust relationship i.e:
"oidc.eks.<REGION>.amazonaws.com/id/<OIDC-ID>:aud": "sts.amazonaws.com" thus the serviceAccount which is created doesn't work

upgrade the deprecated property with new for eks addon module

(Deprecated use the resolve_conflicts_on_create and resolve_conflicts_on_update attributes instead)

Warning: Argument is deprecated
│
│   with module.kubernetes-addons.module.eks-addons.aws_eks_addon.addon["amazon-cloudwatch-observability"],
│   on .terraform/modules/kubernetes-addons.eks-addons/modules/eks-addons/main.tf line 8, in resource "aws_eks_addon" "addon":
│    8:   resolve_conflicts        = lookup(each.value, "resolve_conflicts", local.default_addon_config["resolve_conflicts"])
│
│ The "resolve_conflicts" attribute can't be set to "PRESERVE" on initial resource creation. Use "resolve_conflicts_on_create" and/or "resolve_conflicts_on_update" instead
╵

i need this code this directory is not available please provide me the code

I have deployed successfully eks vpc and the node group I'm stuck in was the load balancer controller I faced this error
your code does not lb a directory https://registry.terraform.io/modules/young-ook/eks/aws/1.7.0/examples/lb
Error: finding IAM OIDC Provider by url (https://oidc.eks.us-east-1.amazonaws.com/id/CCFE0566ACB605C31E32E6A53F6234ED): not found

│ with data.aws_iam_openid_connect_provider.oidc_provider,
│ on main.tf line 53, in data "aws_iam_openid_connect_provider" "oidc_provider":
│ 53: data "aws_iam_openid_connect_provider" "oidc_provider" {

How do I pick a VPC if I have more than one VPCs?

I am not reporting an issue, I just don't know how to ask a question other than this.

Autoscaling EKS works great for me, the only question is how do I pick a VPC among many? I see the variable "subnets" which let me specify which subnets to use, but not a variable for VPC.

Did I miss anything obvious?

Thanks for making and sharing this.

Cannot get load balancer controller example working (/examples/lb)

I've followed the example instructions here

Everything works fine, except when I run kubectl -n game-2048 get ing, the output doesn't have a url in the address column.

My out put reads like this:

NAME CLASS HOSTS ADDRESS PORTS AGE
ngress-2048 alb * 80 29s

The difference on my output from the example is that I have a CLASS of alb and my ADDRESS field is empty without a URL.

Can you help me figure out why this did not work as expected?

examples/lb Error creating Auto Scaling Group: InvalidQueryParameter: Incompatible launch template: Each network interface requires a unique device index.

I get the following error when running
terraform plan -var-file tc1.tfvars

Error: Error creating Auto Scaling Group: InvalidQueryParameter: Incompatible launch template: Each network interface requires a unique device index.
│ status code: 400, request id: d1d847f3-fe9d-491b-8f43-4e07f3b87235

│ with module.eks.aws_autoscaling_group.ng["default"],
│ on .terraform/modules/eks/main.tf line 206, in resource "aws_autoscaling_group" "ng":
│ 206: resource "aws_autoscaling_group" "ng" {

it seems that you need to add something like the following to main.tf on row 229

 launch_template_specification {
    launch_template_id = aws_launch_template.ng[each.key].id
    version            = aws_launch_template.ng[each.key].latest_version
    network_interface_id = [A ZERO-BASED INTEGER ID VALUE]
  }

see: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template#network_interface_id

Trying to use container insights Module

Hey there i am trying to use module you provided for the container insights but the script runs fine but it does not show the pods running. Could you help where i might be going wrong

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.