openinfradev / tacoplay Goto Github PK
View Code? Open in Web Editor NEWa set of playbooks to deploy taco, leveraging ironic, kubespray, rook-ceph, decapod (kustomize, argo-wf, argo-cd)
License: Apache License 2.0
a set of playbooks to deploy taco, leveraging ironic, kubespray, rook-ceph, decapod (kustomize, argo-wf, argo-cd)
License: Apache License 2.0
Neutron chart failed to deploy with below errors messages.
2019-07-29 05:37:24.382 176 ERROR neutron Traceback (most recent call last):
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/bin/neutron-openvswitch-agent", line 10, in <module>
2019-07-29 05:37:24.382 176 ERROR neutron sys.exit(main())
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/neutron/cmd/eventlet/plugins/ovs_neutron_agent.py", line 20, in main
2019-07-29 05:37:24.382 176 ERROR neutron agent_main.main()
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/openvswitch/agent/main.py", line 47, in main
2019-07-29 05:37:24.382 176 ERROR neutron mod.main()
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/main.py", line 35, in main
2019-07-29 05:37:24.382 176 ERROR neutron 'neutron.plugins.ml2.drivers.openvswitch.agent.'
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/ryu/base/app_manager.py", line 375, in run_apps
2019-07-29 05:37:24.382 176 ERROR neutron hub.joinall(services)
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/ryu/lib/hub.py", line 102, in joinall
2019-07-29 05:37:24.382 176 ERROR neutron t.wait()
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/eventlet/greenthread.py", line 175, in wait
2019-07-29 05:37:24.382 176 ERROR neutron return self._exit_event.wait()
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/eventlet/event.py", line 125, in wait
2019-07-29 05:37:24.382 176 ERROR neutron current.throw(*self._exc)
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/eventlet/greenthread.py", line 214, in main
2019-07-29 05:37:24.382 176 ERROR neutron result = function(*args, **kwargs)
2019-07-29 05:37:24.382 176 ERROR neutron File "/var/lib/kolla/venv/local/lib/python2.7/site-packages/ryu/lib/hub.py", line 64, in _launch
2019-07-29 05:37:24.382 176 ERROR neutron raise e
2019-07-29 05:37:24.382 176 ERROR neutron Exception: Could not retrieve schema from tcp:127.0.0.1:6640: Connection refused
2019-07-29 05:37:24.382 176 ERROR neutron
The reason is that the ovsdb server doensn't listen on tcp port 6640.
We need to define ptcp port value in openvswitch chart to avoid this issue.
Describe the bug
현재 해당 프로젝트 우분투 18.04 버전에서 빌드 에러가 발생합니다.
To Reproduce
Steps to reproduce the behavior:
fatal: [taco-aio]: FAILED! => {"changed": "false", "msg"" "Failed to update apt cache: E:https://apt.dockerproject.org/repo/dists/ubuntu-bionic/InRelease 파일을 받는데 실패했습니다 403 Fobidden [IP: 54.230.181.205 443], E:The repository 'https://apt.dockerproject.org/repo/dists/ubuntu-bionic InRelease' is not signed."}
Expected behavior
다음 프로세스 진행이 불가함.
Desktop (please complete the following information):
안녕하세요!
정신을 차려보니 Kubernetes의 API 인증서가 만료가 되어버려서...ㅜ.ㅜ
K8S Documentation을 찾아보던 중, Kubespray의 discussion 내용을 보면
어차피 6개월 - 12개월 주기의 업그레이드를 권장 하기 때문에 인증서 교체를 고민할 필요가 없다는 내용이 나오는데요,
DISCUSSION LINK
Kubespray의 업그레이드 매뉴얼에 따르면, Kubespray Tag 한 개씩 단계별로 업데이트 하는것을 권장하고 있습니다.
Kubespray-Upgrades.md
TACO를 사용한 Kubernetes의 업그레이드 절차는 그럼 아래와 같이 될까요?
아무래도 클러스터 업그레이드에 대한 내용이 아래 Documentation에 녹아들어가야 하지 않을까 싶지만,
https://taco-docs.readthedocs.io/ko/latest/
일단은 제가 제시한 저 절차가 K8S 업그레이드를 진행할때 유효한지 궁금합니다
Jenkins에서 deploy-taco job을 실행하면 K8s 설치 후 validate-k8s job이 실행됩니다.
이 때 sonobouy의 버전을 latest로 파싱하고 있는데, 현재 최신버전인 0.52에서 target K8s의 버전을 제대로 읽어오지 못하는 현상이 있습니다.
[2021-06-24T02:23:28.905Z] + curl -L https://github.com/vmware-tanzu/sonobuoy/releases/download/v0.52.0/sonobuoy_0.52.0_linux_amd64.tar.gz --output ./sonobuoy.tar.gz
[2021-06-24T02:23:28.905Z] % Total % Received % Xferd Average Speed Time Time Time Current
[2021-06-24T02:23:28.905Z] Dload Upload Total Spent Left Speed
[2021-06-24T02:23:29.240Z]
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 640 100 640 0 0 1262 0 --:--:-- --:--:-- --:--:-- 1264
[2021-06-24T02:23:31.997Z]
0 8936k 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
25 8936k 25 2320k 0 0 1182k 0 0:00:07 0:00:01 0:00:06 2812k
100 8936k 100 8936k 0 0 3042k 0 0:00:02 0:00:02 --:--:-- 4967k
[2021-06-24T02:23:31.997Z] + tar -xzf ./sonobuoy.tar.gz
[2021-06-24T02:23:31.997Z] + chmod +x ./sonobuoy
[2021-06-24T02:23:31.997Z] + scp -o StrictHostKeyChecking=no -i jenkins.key -r sonobuoy.tar.gz [email protected]:
[2021-06-24T02:23:32.620Z] + ssh -o StrictHostKeyChecking=no -i jenkins.key [email protected] 'tar -xzf ./sonobuoy.tar.gz && chmod +x ./sonobuoy && sudo cp sonobuoy /usr/bin/ && rm -rf ./sonobuoy'
[Pipeline] sh
[2021-06-24T02:23:36.990Z] + ssh -o StrictHostKeyChecking=no -i jenkins.key [email protected] grep insecure-registry /etc/systemd/system/docker.service.d/docker-options.conf
[2021-06-24T02:23:36.990Z] + awk -F= '{print $2}'
[2021-06-24T02:23:36.990Z] + awk '{print $1}'
[Pipeline] sh
[2021-06-24T02:23:39.819Z] + ssh -o StrictHostKeyChecking=no -i jenkins.key [email protected] kubectl version --short
[2021-06-24T02:23:39.819Z] + grep Server
[2021-06-24T02:23:39.819Z] + awk '{print $3}'
[Pipeline] sh
[2021-06-24T02:23:41.718Z] + scp -o StrictHostKeyChecking=no -i jenkins.key [email protected]:.kube/config target_kubeconfig
[2021-06-24T02:23:42.399Z] + sudo KUBECONFIG=target_kubeconfig ./sonobuoy images pull
[2021-06-24T02:23:42.399Z] time="2021-06-24T02:23:41Z" level=info msg="conformance image to be used: k8s.gcr.io/conformance:auto"
[2021-06-24T02:23:42.399Z] time="2021-06-24T02:23:41Z" level=info msg="Pulling image: k8s.gcr.io/conformance:auto ..."
[2021-06-24T02:23:45.181Z] time="2021-06-24T02:23:44Z" level=error msg="failed with following error after 1 retries:"
[2021-06-24T02:23:45.181Z] time="2021-06-24T02:23:44Z" level=error msg="Error response from daemon: manifest for k8s.gcr.io/conformance:auto not found: manifest unknown: Failed to fetch \"auto\" from request \"/v2/conformance/manifests/auto\"."
[2021-06-24T02:23:46.224Z] time="2021-06-24T02:23:45Z" level=error msg="failed to gather e2e images from conformance image: exit status 125"
[2021-06-24T02:23:46.224Z] time="2021-06-24T02:23:45Z" level=error msg="unable to collect images of plugins"
[2021-06-24T02:23:46.527Z] + true
[2021-06-24T02:23:46.527Z] + validate-k8s/download_sonobuoy_images.sh
[2021-06-24T02:23:46.527Z] + ALL_IMGS=
[2021-06-24T02:23:46.527Z] + mkdir sonobuoy_imgs
[2021-06-24T02:23:46.527Z] ++ sudo KUBECONFIG=target_kubeconfig ./sonobuoy images
[2021-06-24T02:23:46.527Z] time="2021-06-24T02:23:45Z" level=info msg="conformance image to be used: k8s.gcr.io/conformance:auto"
[2021-06-24T02:23:46.527Z] time="2021-06-24T02:23:45Z" level=info msg="Pulling image: k8s.gcr.io/conformance:auto ..."
[2021-06-24T02:23:49.326Z] time="2021-06-24T02:23:47Z" level=error msg="failed with following error after 1 retries:"
[2021-06-24T02:23:49.326Z] time="2021-06-24T02:23:47Z" level=error msg="Error response from daemon: manifest for k8s.gcr.io/conformance:auto not found: manifest unknown: Failed to fetch \"auto\" from request \"/v2/conformance/manifests/auto\"."
[2021-06-24T02:23:50.358Z] time="2021-06-24T02:23:49Z" level=error msg="unable to collect images of plugins: failed to gather e2e images from conformance image: exit status 125"
이 현상이 해결될때까지 validate-k8s job에서 sonobouy 0.51을 호출하도록 변경이 필요합니다.
안녕하세요.
tacoplay를 실행했더니 Error 가 나서 문의 드립니다.
TASK [openstack/client : update bashrc for openstack client configs] ********************************************************
Friday 09 August 2019 14:56:06 +0900 (0:01:41.836) 0:15:34.752 *********
changed: [taco-aio]
TASK [openstack/client : check host where ingress controller is running] ****************************************************
Friday 09 August 2019 14:56:06 +0900 (0:00:00.150) 0:15:34.902 *********
FAILED - RETRYING: check host where ingress controller is running (10 retries left).
FAILED - RETRYING: check host where ingress controller is running (9 retries left).
FAILED - RETRYING: check host where ingress controller is running (8 retries left).
FAILED - RETRYING: check host where ingress controller is running (7 retries left).
FAILED - RETRYING: check host where ingress controller is running (6 retries left).
FAILED - RETRYING: check host where ingress controller is running (5 retries left).
FAILED - RETRYING: check host where ingress controller is running (4 retries left).
FAILED - RETRYING: check host where ingress controller is running (3 retries left).
FAILED - RETRYING: check host where ingress controller is running (2 retries left).
FAILED - RETRYING: check host where ingress controller is running (1 retries left).
fatal: [taco-aio -> taco-aio]: FAILED! => {"attempts": 10, "changed": true, "cmd": "/usr/local/bin/kubectl describe ep ingress -n openstack | grep Addresses | grep -v NotReady | awk '{split($2,a,",");print a[1]"\n"a[2]"\n"a[3]}' | awk NF", "delta": "0:00:00.086261", "end": "2019-08-09 14:57:48.396029", "rc": 0, "start": "2019-08-09 14:57:48.309768", "stderr": "Error from server (NotFound): endpoints "ingress" not found", "stderr_lines": ["Error from server (NotFound): endpoints "ingress" not found"], "stdout": "", "stdout_lines": []}
NO MORE HOSTS LEFT **********************************************************************************************************
to retry, use: --limit @/root/tacoplay/site.retry
PLAY RECAP ******************************************************************************************************************
taco-aio : ok=794 changed=197 unreachable=0 failed=1
INSTALLER STATUS ************************************************************************************************************
Install Ceph Monitor : Complete (0:00:21)
Install Ceph Manager : Complete (0:00:16)
Install Ceph OSD : Complete (0:00:49)
Install Ceph Client : Complete (0:00:11)
Armada Manifest에서 ceph_rbd_provisioner로 사용되는 이미지가
현재 Docker Hub에 올라와 있는 sktdev/rbd-provisioner:v2.1.1-nautilus-14.2.4 이미지가 궁금합니다!
기존 네이밍은 아래와 같았는데요,
{{docker_registry}}/openstackhelm/ceph-rbd-provisioner:ubuntu_bionic-20200217
네이밍만 살짝 다른건지, 아니면 완전히 다른 이미지인건지 궁금합니다!
canvas dashboard 배포시 라이선스 부분에 대해서 아직 명확하지 않습니다.
따라서, lma-manifest에서 taco-watcher 배포 부분만 제외 하였으면 합니다.
현재 Refactoring Branch의 fetch-sub-project.sh를 살펴 보고 있습니다. Refactoring Branch는 아무래도 VERSIONS 파일 안에 https://tde.sktelecom.com 기준으로 작성이 되어있는게 당연하긴 한데요.
제가 드리고 싶은 질문은 VERSIONS 파일안에 있는 Repository 정보를 GitHub나 OpenDev에 있는 공개 Repository로 변경 하려고 하니, 버전이 궁금해 졌습니다.
OpenDev의 경우 Master Branch만 존재하는걸로 봐서 tde.sktelecom.com에서 관리하시는 git도 항상 Opendev의 최신 git repository를 가져오시는게 아닌가 하는 추측은 해봅니다만...
하지만 또 한편으론 opendev에서 직접 가져오게되면 너무 Upstream 이지 않을까 하는 생각이 들어서 질문 드려봅니다. ^^
Stable 4.0 버전을 사용하시나 싶었지만, 파일 내용을 살펴보다 보니 아닌듯해 보여서 어떤 Branch인지 궁금합니다.
Helm 같은 경우에는 release 2.16을 사용하시지 않았을까요? ^^.
(언젠가는 Helm 3으로 넘어가야 겠지만요...)
현재 site-prepare job에서는 decapod-site-yaml
repo에서 사이트 및 app 정보를 가져와 렌더링하는데,
decapod-site-yaml
이 decapod-site
로 변경됨에 따라 site-prepare도 업데이트가 필요함
현재 decapod v1을 사용하려면 tacoplay release-v21.06브랜치에서 decapod_v1_enabled를 활성화 해야합니다.
주관님이 언급한것처럼 #105 (comment) decapod v1을 이용해 App을 설치하기 위해서는 jenkins에서 decapod_v1_enabled를 활성하한 Job이 추가로 필요합니다.
왜냐하면 현재는 gate-centos-lb-local-path-offline-multi inventory만 extra-vars에 이 변수가 활성화 되어있고, 다른 inventory를 사용해 deploy-taco job을 실행하면 decapod v1과 관련된 task가 실행되지 않아, deploy-apps-v1 job으로 app을 배포할 수 없기 때문입니다.
따라서 decapod v2과 별개로 app 테스트를 위해서 decapod v1을 지원하는 별도의 Job을 만드려합니다.
TODO:
After completing the installation, I couldn't find kubectl
command as root.
This is the error message:
[root@taco-aio ~]# kubectl
bash: kubectl: command not found
I've found what the problem is.
It's caused by location of kubectl
. kubectl
is located in /usr/local/bin.
So root user can't find the kubectl
.
I can use kubectl
as root user using this command line:
[root@taco-aio ~]# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[root@taco-aio ~]# PATH=$PATH:/usr/local/bin
[root@taco-aio ~]# kubectl get pod
No resources found.
ansible 버전 2.10 이상에서 발생하는 오류로 인해 Kubespray에서 ansible 버전을 2.9.x로 고정함.
kubespray 업스트림 내용을 따라가려고 하나 ceph-ansible에서는 2.10 버전을 권장하고 있어 충돌이 발생하는 상황임.
목표와 TODO가 혼합되어 있으며 정제가 필요합니다.
내용
Decapod v2 구현을 위해 Tacoplay를 통해 ArgoCD를 설치한다.
ArgoCD의 주요 기능들을 변수로 변경할 수 있어야한다.
예) auto sync기능을 off 시킨다.
산출물
Tacoplay의 argoCD 설치 role
Tacoplay에 ArgoCD 관련 documentation 추가
Bug Report
osd_scenario: lvm
devices: 로 지정하면 Error 발생합니다.
=============================================
vim extra-vars.yml
osd_scenario: lvm
devices:
다음과 같이 Error
TASK [Assert ceph OSD specific variables when deploying new ceph] *************************************************************************************
task path: /root/tacoplay/site-assert.yml:113
Friday 30 August 2019 09:58:26 +0900 (0:00:00.412) 0:00:01.493 *********
failed: [ceph001-storage] (item=lvm_volumes) => {
"assertion": "lvm_volumes is defined",
"changed": false,
"evaluated_to": false,
"item": "lvm_volumes"
}
failed: [ceph002-storage] (item=lvm_volumes) => {
"assertion": "lvm_volumes is defined",
"changed": false,
"evaluated_to": false,
"item": "lvm_volumes"
}
failed: [ceph003-storage] (item=lvm_volumes) => {
"assertion": "lvm_volumes is defined",
"changed": false,
"evaluated_to": false,
"item": "lvm_volumes"
}
to retry, use: —limit @/root/tacoplay/site.retry
/root/tacoplay/site-assert.yml 여기서 막고 있네요.
Desktop (please complete the following information):
https://github.com/openinfradev/tacoplay/blob/taco-v20.05/README.md 를 v19.03 를 참조하여 현행화 할 필요가 있습니다.
설치문서가 https://taco-docs.readthedocs.io/ko/latest/#에 작성된 이후에는 링크만 걸어주는 정도로 README를 만들었습니다.
kubernetes 1.20 버전부터 SelfLink에 변화가 있습니다.
현재 TACO(hanu)에서 사용하는 것 중에서 rbd-provisioner가 직접적으로 영향을 받습니다.
https://stackoverflow.com/questions/65376314/kubernetes-nfs-provider-selflink-was-empty
20버전에서는 우회방법을 지원하지만 21버전에서는 아예 삭제된다고 합니다. 이에따라 대응이 필요합니다.
20버전에서 우회방법은 kube-api의 manifest 파일(/etc/kubernetes/manifests/kube-apiserver.yaml)에 - --feature-gates=RemoveSelfLink=false 옵션을 추가하는 것입니다.
kubernetes-sigs/nfs-subdir-external-provisioner#25
현황
현재 github action을 통해서, stale label을 자동으로 적용하고 close되는 기준이 적용되어 있음.
stale 이 붙은 이후에 각 PR/Issue의 특성에 따라 좀 더 세부적인 구분이 가능했으면 함.
참고로 kubernetes에서는 PR/Issue에 대해서 아래와 같이 네 단계로 관리하고 있는 것으로 보임
lifecycle/active, lifecycle/stale, lifecycle/frozen, lifecycle/rotten..
따라서, 우리도 이를 차용하여 lifecycle/active, lifecycle/stale, lifecycle/frozen 정도로 운영하면 어떨까 생각하며, 만약 동의된다면 github action의 설정을 이에 맞추어 현행화가 필요함
Originally posted by @bluejayA in #84 (comment)
Describe the bug
잘못된 tag로 인해 Helm Chart를 git clone 할때 에러메시지가 발생합니다.
produces an error message when git cloning due to a false tag in the bash script
To Reproduce
Steps to reproduce the behavior:
Expected behavior
successfully clone all git repos in the script
Screenshots
Desktop (please complete the following information):
Additional context
Here is what happened
You can see the error message towards the end.
[tokdosirak@deploy01 tacoplay]$ ./fetch-sub-projects.sh
Fetching project armada from https://github.com/openinfradev/armada.git with tag taco-v19.03...
/home/tokdosirak/tacoplay
HEAD is now at a7093ea... fix oslo.message version to 9.7.2
/home/tokdosirak/tacoplay
Fetching project kubespray from https://github.com/kubernetes-sigs/kubespray.git with tag v2.10.4...
/home/tokdosirak/tacoplay
HEAD is now at 7d8da83... Cherry pick #4857 #4859 #4867 into release-2.10 (#4877)
/home/tokdosirak/tacoplay
Fetching project charts/openstack-helm from https://github.com/openinfradev/openstack-helm.git with tag taco-v19.03...
/home/tokdosirak/tacoplay
HEAD is now at eb16bca... Merge pull request #2 from rbxorkt12/master
/home/tokdosirak/tacoplay
Fetching project charts/openstack-helm-infra from https://github.com/openinfradev/openstack-helm-infra.git with tag taco-v19.03...
/home/tokdosirak/tacoplay
HEAD is now at c9d6676... Merge "Grafana: Updated the Ceph-Cluster variable sorting"
/home/tokdosirak/tacoplay
Fetching project ceph-ansible from https://github.com/openinfradev/ceph-ansible.git with tag stable-3.2...
/home/tokdosirak/tacoplay
Already on 'stable-3.2'
/home/tokdosirak/tacoplay
Fetching project charts/helm from https://github.com/helm/charts.git with tag taco-v19.03...
/home/tokdosirak/tacoplay
error: pathspec 'taco-v19.03' did not match any file(s) known to git.
/home/tokdosirak/tacoplay
issue to add labels
안녕하세요!
지난주 , 07/23(금) 일자로 TACOPLAY v21.06 branch를 다운 받아 TACOPLAY 설치를 진행했는데요,
아래 cluster.yaml에 추가해주셨던 내용이 제대로 반영이 안 되었는지,
TACOPLAY 실행시에 MON 생성과 OSD 생성이 제대로 되지 않았던 Issue 발견 되었습니다.
+ placement:
+ all:
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: role
+ operator: In
+ values:
+ - storage-node
+ tolerations:
+ - key: storage-node
+ operator: Exists
지난 금요일 기준으로 tacoplay/charts/taco-helm-charts/rook-ceph-cluster/templates/cluster.yaml 에 위 반영 해주신 내용이 없는것을 확인하였습니다.
일단 TACOPLAY로 설치된 rook-ceph-cluster를 helm delete 한 후,
제가 manual 하게 cluster.yaml에 해당 내용을 추가한 후, site.yaml 다시 실행하여 설치 진행하였습니다.
정상적으로 설치 되는것을 확인하였습니다.
Offline용 아카이브를 만들 때 site-prepare playbook을 실행하면 local registry tacorepo:5000에 이미지를 저장하고 저장된 이미지를 포함한 tacoplay 폴더를 압축합니다.
taco에서 사용하는 수많은 이미지를 모두 local registry에 저장하는 과정에서 image name, url이 여러 케이스가 존재함에 따라 scripts/tag-images.sh
를 통해 외부 이미지를 local 이미지로 태그를 변경하게 됩니다.
scripts/tag-images.sh
에 내용을 보면 local에 저장된 모든 이미지를 파싱하는데, 이 때 <owner>/<image name>
형식으로된 이미지를 <image name>
만 살려서 저장합니다. 모든 이미지를 다 그렇게 하는 것은 아니고 특정 owner에 대해 건별로 처리하고 있습니다.
tacoplay/scripts/tag-images.sh
Lines 12 to 32 in 22d09c0
예를 들어 siim/kubernetes-event-exporter:0.1.0
이미지는 스크립트를 통해 tacorepo:5000/kubernetes-event-exporter:0.1.0
로 저장됩니다.
local registry에서 owner를 표기할 수 있기 때문에 위에 처럼 owner를 지운채로 저장하기 보다는 owner를 살려서 저장하는 것으로 변경해야 추후 이미지 원본을 추적할 수 있을 것입니다.
owner를 지울 수 밖에 없었던 이유가 없다면, owner를 지우는 부분을 삭제하고 owner를 포함하여 Local registry에 저장하는 것을 건의합니다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.