Kubernetes��N���E�h�l�C�e�B�u�����֗��ɗ��p����Z�p��c�[���̊T�v�A�g�������Ïk���ďЉ��A�ځB����́A�ŋߒ��ڂ���Ă���uWebAssembly�v�ɂ��ĕ��K���Ȃ���AWebAssembly�̃A�v���P�[�V������Kubernetes�Ŏ������@���Љ��B
���̋L���͉������ł��B����o�^�i�����j����ƑS�Ă������������܂��B
�@Kubernetes��N���E�h�l�C�e�B�u�����֗��ɗ��p����Z�p��c�[���̊T�v�A�g�������Ïk���ďЉ��{�A�ځuCloud Native�`�[�g�V�[�g�v�B����́A�ŋߒ��ڂ���Ă���uWebAssembly�v�ɂ��ĕ��K���Ȃ���AWebAssembly�̃A�v���P�[�V������Kubernetes�Ŏ������@���Љ�܂��B
�@�u���E�U��ō����ɃA�v�������s����d�g�݂Ƃ��āAWebAssembly�i�uWasm�v�Əȗ�����邱�Ƃ�����j�����ڂ���Ă��܂��BW3C�iWorld Wide Web Consortium�j�ŕW��������Ă��邱�Ƃ�����A2017�N����ɂ͊��Ɏ�v�ȃu���E�U��WebAssembly���T�|�[�g���Ă��܂��B����ɁuZoom�v�uGoogle Meet�v�uGoogle Earth�v�uUnity�v�Ȃǂ�WebAssembly�����p����Ă��܂��B
�@WebAssembly�̓u���E�U��ŃR�[�h�������ɓ������d�g�݂Ƃ��ēo�ꂵ�܂������A�z�X�g��ł����삷��悤�ɂȂ��Ă��Ă���AGoogle��Microsoft�AAmazon.com�AVMware�AIntel�ADocker�Ȃǂ���c���g�D�uBytecode Alliance�v�ɂ����āAWebAssembly���z�X�g��Ŏ��s����WebAssembly�����^�C�����J�����Ă��܂��B2022�N9���ɂ́ABytecode Alliance�ŊJ������Ă���WebAssembly�����^�C���uWasmtime�v�̃o�[�W����1.0�������[�X�����A�b��ɂȂ�܂����B
�@Java��JavaScript���u���E�U�ł̗��p����n�܂��āAJava�A�v���P�[�V�����T�[�o��Node.js�̂悤�ɃT�[�o�T�C�h�ɍL�������̂Ɠ����悤�ɁAWebAssembly���T�[�o�T�C�h�ł̓��삪���X�Ƀ^�[�Q�b�g�ɂȂ��Ă��Ă��܂��BWebAssembly�̒������uThe State of WebAssembly 2022�v��WebAssembly�̗p�r�ʗ��p�Ґ�������Ɓi���}�j�AWeb�̊J���Ɏ����ŁA�T�[�o���X�A�R���e�i�ɗ��p���Ă���J���҂��������Ƃ�������܂��B
�@Kubernetes�ł��AWebAssembly���T�|�[�g����Kubelet�uKrustlet�v��AWebAssembly�̎��s���T�|�[�g�����R���e�i�����^�C���ucrun�v�Ȃǂɂ���āAWebAssembly�̃A�v���P�[�V���������s�ł���悤�ɂȂ��Ă��Ă��܂��B�{�e�ł́AWebAssembly�ɂ��ĕ��K���Ȃ���Kubernetes�̑Ή��ƁA�ukind�v�i�uKubernetes in Docker�v�̗��BDocker���Kubernetes�N���X�^���\�z����c�[���j��crun��p���āAWebAssembly�̃A�v���P�[�V������Kubernetes�Ŏ��s������@���Љ�܂��B
�@�Ȃ��AKubernetes�Ɋւ���WebAssembly�͓̏��X�ω����Ă���A�{�e�����_�ň��藘�p�ł���ł͂���܂���B�{�e��2022�N12�����_�̓��e�ł��B����̓����ۏ�����̂ł͂Ȃ��̂ŁA���炩���߂��������������B
�@JavaScript��Web�u���E�U�̕W������Ƃ��Ē��炭�g���Ă��܂������AAI��f�[�^���͂Ȃǂ̃g�����h�ɂ���āAWeb�u���E�U��ł�荂���ȏ��������߂���悤�ɂȂ�܂����B���̂悤�Ȕw�i�̉��AJavaScript����荂���Ɏ��s�ł���悤�ɂ����i�Ƃ��āuasm.js�v����Ă���Ă��܂������Aasm.js������ɐi���������d�g�݂Ƃ��āAWebAssembly����Ă���AW3C�ŕW��������Ă��܂��B
�@WebAssembly�́A���z���߃Z�b�g�A�[�L�e�N�`�����邢�͒ᐅ���v���O���~���O����̈��ł��BWebAssembly�ł́A�o�C�i���`����Wasm�o�C�i���ƃo�C�i����l���ǂ݂₷�������e�L�X�g�`���́uWAT�v�iWebAssembly Text format�j��2��ނ̃t�H�[�}�b�g����`����Ă��܂��B
�@Wasm�o�C�i���̓A�[�L�e�N�`����OS�Ɉˑ��������z�}�V���ɂ���Ď��s�\�ȃR�[�h�ŁAJava�̃o�C�g�R�[�h��A.NET�ɂ�����CIL�i���ʒ��Ԍ���j�Ɏ��Ă��܂��B��̓I��Wasm�o�C�i���ƑΉ�����WAT�́A�uwat2wasm demo�v�Œ���Ă���AWasm���z�}�V���̃V�~�����[�^�[�ŕ\�L�Ɠ�����m�F�ł���̂ŁA������������͗��p���Ă݂Ă��������B
�@WAT�̓e�L�X�g�ł����A�A�Z���u���ɋ߂��ᐅ������ŁA�v���O�����ŗ��p����ɂ͎g���ɂ����ł��B�v���O���~���O����Ƃ��ẮAC�^C++��Go����ARust�AC#�Ȃǂ����p����A�����̌���ŋL�q�����R�[�h���R���p�C����Wasm�o�C�i���ɃR���p�C�����ė��p���܂��B
�@WebAssembly�̓����������������Ă݂܂��傤�B
�@JavaScript�͍���������Ă��܂������A����ł��l�C�e�B�u�̃o�C�i���ɔ�ׂ�ƒx���ł��B���I�ȕЕt���ɂ����s���̌^�`�F�b�N�A�X�N���v�g�̃p�[�X�A�܂��e�L�X�g����Ȃ̂Ńt�@�C���T�C�Y���傫���Ȃ�A�ǂݍ��݂Ɏ��Ԃ�������܂��B
�@�ÓI�Ȍ^�t���ɂ���āA�^�`�F�b�N���s�v�ł��B�o�C�i���`���ŃR�[�h���L�q���邱�Ƃɂ���č\����͂��s�v�ɂȂ�̂ŁA�����ɓ��삵�܂��B�܂��A�K�x�[�W�R���N�V���������p���Ȃ��̂ŁA�������Ǘ��̃I�[�o�[�w�b�h������܂���B
�@ OS��CPU�A�[�L�e�N�`���Ɉˑ����Ȃ��̂ŁAWebAssembly�����^�C��������Ă���A�ǂ�OS�iWindows��macOS�ALinux�Ȃǁj��A�[�L�e�N�`���ix86�AArm�ARisc V�Ȃǁj�ł�����o�C�i���œ��삵�܂��B
�@���̓��������āA�c�[����~�h���E�F�A�̊g���v���O�C���ɂ����p����n�߂Ă��܂��B
�@����̃x���_�[��A���C�A���X�ɂ��d�l�̍���ł͂Ȃ��AWeb�d�l�̕W�����c��W3C�ɂ���Ďd�l���W��������Ă��܂��BWebAssembly�̎d�l�́A2022�N4��19���ɁuWebAssembly Core Specification Version 2.0�v�Ƃ��čŏ��̌��ȍ�Ƒ��Ă����J����Ă��܂��B
�@W3C�ŕW��������邱�Ƃɂ���āA�x���_�[�̐헪��s���ɐU���邱�Ƃ͂���܂���B�lj��Ń����^�C�����C���X�g�[������K�v��������Java��Adobe Flash�ƈقȂ�A�����̃u���E�U���W����WebAssembly���T�|�[�g���Ă���A�v���O�C����A�h�I���Ȃǂ�lj�����K�v������܂���B
�@WebAssembly�͉��z���߃Z�b�g�A�[�L�e�N�`�����K�肵�Ă��邾���ŁA�v���O���~���O����͋K�肵�Ă��܂���B���̂��߁AC�^C++��Rust�AGo����AC#�Ȃǂ̌���ŃR�[�h���L�q���AWasm�o�C�i���ɃR���p�C�����Ď��s���܂��B
�@Python��Ruby�̂悤�ɁA�C���^�[�v���^�≼�z�}�V����WebAssembly�ɈڐA����AWebAssembly��ŃX�N���v�g�삳��������̂��o�Ă��Ă��܂��B��q��The State of WebAssembly 2022�ɂ��ƁARust�AC++�AGo����̗��p�����������A2021�`2022�N��Python��uBlazor�v�����}���ɑ������Ă���̂�������܂��B
��Blazor�́A�J���҂�C#��HTML���g�p����Web�A�v���P�[�V�������쐬�ł���悤�ɂ���I�[�v���\�[�X�\�t�g�E�F�A��Web�t���[�����[�N�ł��B�uBlazor WebAssembly�v�Ƃ���Wasm�o�C�i���Ƃ��ăA�v�����J������t���[�����[�N������Ă��܂��B
�@WebAssembly���T�|�[�g���錾��Ǝ����A�R���p�C���̈ꗗ�ɂ��ẮAStephen A.���́uAwesome WebAssembly Languages�v�ɂ悭�܂Ƃ܂��Ă���̂ŁA������������͂������������B
�@WebAssembly���g�́A���z���߃Z�b�g�A�[�L�e�N�`���̎d�l���`���Ă���AOS�̋@�\�𗘗p������A�l�b�g���[�N�ɃA�N�Z�X�@�\������肵�Ă��܂���B�u�T���h�{�b�N�X��Ŏ��s����ƁA�T���h�{�b�N�X�O�ɉe����^����̂�����v�Ƃ������ƂŁA�����Z�L�����e�B�������Ă��܂��B
�@Java�ł̓N���X���[�_��t���N�V�����Ȃǂ̎d�g�݂ɂ���āA�Ǝ�i�������Ⴍ�j���̂���R�[�h��ǂݍ���A���s���ꂽ�肷�邱�Ƃ�����܂������AWebAssembly�͂��̂悤�Ȏd�g�݂������Ă��Ȃ��̂ŁA�Ǝ㐫�݂Â炢���ʂ�����܂��B
�@��قǁuOS�̋@�\�������Ă��Ȃ��v�ƋL�q���܂������A����ł͕s�։߂���̂ŁA�u���E�U�ŗ��p����ۂ�JavaScript�ƘA�g����uWebAssembly JavaScript Interface Version 2.0�v��z�X�g��Ŏ��s����ۂɃt�@�C����l�b�g���[�N�A�N�Z�X�Ȃǂ�OS�̋@�\�𗘗p����uWebAssembly System Inferface�v�iWASI�j������Ă��܂��B���������Ӗ��ł́A�u5.�����Z�L�����e�B�v�ŋL�q�������e�Ɩ������܂����A�K�v�ɉ����čŏ�����API�𗘗p����悤�ɂȂ��Ă���_�ŁAJava�̂悤�ɑS�Ă̋@�\��Java�����^�C���ɓ����Ă���̂ɔ�ׂ�ƈ��S���Ƃ����܂��B
�@��������́AKubernetes�ɂ�����WebAssembly�̑Ή��ɂ��ĉ�����܂��BWebAssembly�̎g�����́A����3������܂��B
�@�{�e�Ŏ��グ�郆�[�X�P�[�X�ł����A���̖��̒ʂ�AWebAssembly�A�v���P�[�V������Kubernetes��Ŏ��s���܂����A������@������̂ŁA���͂ŏڂ����������܂��B
�@WebAssembly�̃v���b�g�t�H�[���t���[�̓����𗘗p���āA�R���|�[�l���g�̊g��������WebAssembly�Ƃ��č쐬���Ă����A�g�ݍ��ގg����������܂��B��\�I�Ȃ��̂Ƃ��āA�uIstio�v�̃T�[�r�X���b�V���ŗ��p�����v���L�V�uEnvoy�v�̃t�B���^�Ȃǂ̏�����WebAssembly�ŏ�����悤�ɂȂ��Ă��܂��B
�@�c�[���̋@�\���AWebAssembly�𗘗p���Ċg�����܂��B�g�����Ƃ��ẮA��L2�Ǝ��Ă��邩������܂��A�O���c�[���Ƃ��Ē���Kubernetes�ɂ͑g�ݍ��܂�Ȃ��g�����Ȃ̂ŁA�����ĕ����܂����B�Ⴆ�A�Ǝ㐫�X�L�����c�[���uTrivy�v�́AWebAssembly�𗘗p���ăX�L�����|���V�[�̒�`���g���ł��܂��B
�@Kubernetes���WebAssembly�A�v���P�[�V���������s������@�͑傫�������Ď���4�����݂��܂��B
�@�R���e�i�C���[�W��WebAssembly�����^�C��������i����ۂ��j���ăA�v���P�[�V���������s��������ł��B����Kubernetes�̐ݒ��ύX���邱�ƂȂ����p�ł���̂ŁA��Ԏ�y�ȕ��@�ł��B
�@�R���e�i�C���[�W��WebAssembly�����^�C����g�ݍ��ޕK�v������A�A�[�L�e�N�`�����قȂ�ꍇ�͊e�A�[�L�e�N�`���ɑΉ�����WebAssembly�����^�C����g�ݍ��C���[�W���쐬����K�v������A�R���e�i�̃|�[�^�r���e�B�͎����܂��B�Ⴆ�Ax86��Linux�p�ɍ쐬�����C���[�W��Arm��Windows�Ȃǂŗ��p�ł��܂���B
�@OCI�iOpen Container Initiative�j�����̃R���e�i�����^�C��(OCI�����^�C��)�Ƃ��ė��p����Ă���urunc�v�̑����WebAssembly�ɑΉ������ucrun�v�uyouki�v�𗘗p���܂��icrun�Ayouki�̏ڍׂɂ��ẮA���L���R�������Q�Ɓj�B
�@crun��youki�𗘗p���邱�ƂŁAWasm�R���e�i����WebAssembly�̃o�C�i���ڎ��s�ł��܂��BWasm�R���e�i���ɂ́A�A�[�L�e�N�`���Ɉˑ����郉���^�C���̓����͕s�v�ƂȂ�̂ŁA�R���e�i�̃|�[�^�r���e�B�͍����Ȃ�܂��Bcrun��youki��runc�ƌ݊���������A�����^�C�����ۂ��ƌ�����������̂ŁA�A�[�L�e�N�`���͉��L��Krustlet�𗘗p������@���P���ł��B
�@crun��youki�͒ʏ�̃R���e�i�C���[�W�����s�ł���̂ŁAWasm�R���e�i�ƒʏ�̃R���e�i���m�[�h�Ŏ��s�ł��܂��B2022�N12���̖{�e���M�����_�ł́Acrun��Wasm�R���e�i�𗘗p����ɂ́AWasm�����^�C���Ή��̃I�v�V������t���ăr���h����K�v������̂Œ��ӂ��K�v�ł��B
�@�ucontainerd shim�v�Ƃ́Acontainerd��OCI�����^�C���̊Ԃɂ���A�R���e�i���ƂɋN�������v���Z�X�ł��Bcontainerd��OCI�����^�C���̋��n������������������Ă��܂��B
�@���̕����́AWebAssembly�����^�C���ɑΉ�����containerd shim�𗘗p���邱�Ƃɂ���āAOCI�����^�C��������ƂȂ�WebAssembly�A�v���P�[�V���������s�����܂��B
�@Docker Desktop�ł�Docker Desktop 4.15����WebAssembly��Technology Preview�Ƃ��āA���̕�����WebAssembly���T�|�[�g���Ă��܂��B
�@���̕�����Kubernetes�ŗ��p����ꍇ�A�]���̃R���e�i��Wasm�R���e�i�̎��s���g�������邽�߂ɁA�uRuntimeClass�v���`���AOCI�����^�C����WebAssembly�����^�C�����ւ��Ď��s����K�v������܂��B
�@Kubelet���AWebAssembly�����s����Krustlet�ɒu�������܂��BKrustlet��ł͏]���̃R���e�i�͎��s�ł��Ȃ��̂ŁAWebAssembly�́AWebAssembly��p�̃m�[�h��Ŏ��s����邱�ƂɂȂ�܂��B��p�̃m�[�h���\�z����K�v������̂ŁA��L2��胊�\�[�X���p�̌����������Ȃ�܂��B
�@�Ȃ�Krustlet�̊J�����̂�2022�N12�����݁A�~�܂��Ă���悤�ł��B
�@�{�e�ł́A��L���@2��crun��WebAssembly��Kubernetes�ŗ��p������@��������܂��B
�@runc�́AGo����ŋL�q����Ă���A���炭�W����OCI�����^�C���Ƃ��ė��p����Ă��܂������A�����ɗ��āAC�����Rust�Ŏ�������OCI�����^�C�������ڂ���Ă��܂��BC����Ŏ������ꂽ�����^�C���Ƃ��ẮAGiuseppe Scrivano���ɂ���ĊJ������Ă�crun������ARHEL�iRed Hat Enterprise Linux�j 9.0����f�t�H���g��OCI�����^�C���Ƃ��ė��p�����ȂǁA�̗p���L�����Ă��܂��B
�@youki�́Acontainer�̓��{���̗e��i�悤���j���疼�t�����Ă���A���O����A�z��������ʂ�A���{�l��Toru Komatsu�i���������j���𒆐S�ɊJ������Ă��܂��Byouki�́A�ŋ�Linux�ł��̗p���ꂽ����Rust�Ŏ�������Ă��܂��B���������[�X�͂܂��ł���OCI�ɂ���Ē���Ă���C���e�O���[�V�����e�X�g��S�ăp�X����ȂǁA���Ȃ���p�I�ȃ��x���ŊJ������Ă��܂��B
�@crun��youki�̂悤�ȐV����OCI�R���e�i�����^�C���́Arunc�ɔ�ׁA���L�̂悤�ȓ���������܂��B
�@�{�e�ł́AWasm�R���e�i�̗��p��crun�𗘗p���Ă��܂����Ayouki��Wasm�R���e�i���T�|�[�g���Ă���̂ŁA������������͒��킵�Ă݂Ă��������B
�@��������́AKubernetes��WebAssembly�����s��������\�z���܂��B�{�e�ł́Akind�𗘗p���āAWasm�����^�C���̈�AWasmEdge�𗘗p����WebAssembly���s�����\�z���܂��B����́A�uUbuntu 22.04�v�𗘗p���܂����BDocker�����삷��A���̊��ł����삷��Ǝv���̂ŁA�`�������W���Ă݂Ă��������B
�@Docker���C���X�g�[�����܂��B�{�e�ł́A�]���Ȏ菇���Ȃ��̂ŁA�S��root���[�U�[�Ŏ��s���Ă��܂����A���炩���߂��������������B
$ sudo su - # apt-get update # apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release # curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # apt-get update # apt-get install -y docker-ce
�@kind��Kubernetes�N���X�^���\�z���܂��BWasm�R���e�i�𗘗p����̂ŁAWasm�R���e�i�ɑΉ������m�[�h�C���[�W���w�肵�܂��B
# curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64 # chmod +x ./kind # mv ./kind /usr/local/bin/kind # kind create cluster --image ghcr.io/liquid-reply/kind-crun-wasm:v1.23.4
�@kubectl�R�}���h���C���X�g�[�����ăN���X�^�̓�����m�F���܂��B
# curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" # mv kubectl /usr/local/bin/ # chmod a+x /usr/local/bin/kubectl # kubectl get all NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24h
�@�N���X�^�̓�����m�F�ł��܂����B
�@Wasm�R���e�i�Ή���Kubernetes�N���X�^���\�z�ł�����AWebAssembly�A�v���P�[�V�����̓�����m�F���܂��B���L�R�}���h�����s���܂��B
# kubectl run -it --rm --restart=Never wasi-demo --image=wasmedge/example-wasi:latest --annotations="module.wasm.image/variant=compat-smart" --overrides='{"kind":"Pod", "apiVersion":"v1", "spec": {"hostNetwork": true}}' /wasi_example_main.wasm 50000000 Random number: -949523771 Random bytes: [247, 45, 184, 56, 214, 84, 86, 174, 20, 206, 40, 137, 170, 173, 6, 110, 222, 15, 10, 255, 194, 154, 217, 137, 73, 162, 188, 36, 166, 74, 217, 219, 121, 203, 225, 179, 62, 179, 83, 251, 42, 251, 158, 135, 161, 3, 7, 148, 174, 184, 159, 42, 160, 152, 154, 209, 221, 205, 116, 140, 140, 247, 39, 62, 221, 81, 161, 136, 45, 10, 111, 52, 97, 213, 67, 174, 132, 133, 200, 68, 199, 42, 176, 207, 51, 179, 252, 211, 186, 162, 219, 83, 42, 17, 254, 214, 94, 51, 204, 192, 252, 7, 23, 6, 154, 126, 56, 244, 245, 146, 43, 222, 254, 231, 26, 76, 115, 149, 36, 126, 24, 59, 132, 110, 71, 252, 238, 151] Printed from wasi: This is from a main function This is from a main function The env vars are as follows. PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM: xterm HOSTNAME: kind-control-plane KUBERNETES_PORT_443_TCP_PORT: 443 KUBERNETES_PORT_443_TCP_ADDR: 10.96.0.1 KUBERNETES_SERVICE_HOST: 10.96.0.1 KUBERNETES_SERVICE_PORT: 443 KUBERNETES_SERVICE_PORT_HTTPS: 443 KUBERNETES_PORT: tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP: tcp://10.96.0.1:443 KUBERNETES_PORT_443_TCP_PROTO: tcp HOME: / The args are as follows. /wasi_example_main.wasm 50000000 File content is This is in a file pod "wasi-demo" deleted
�@��L�Ŏw�肵�Ă���uwasmedge/example-wasi:latest�v�͕��ʂ̃R���e�i�C���[�W�Ɍ����܂����A�R���e�i���s���̃o�C�i����Wasm�o�C�i�����w�肳��Ă�Wasm�R���e�i�ł��i�ڍׂ́A��q�́uWasm�R���e�i�C���[�W�̍����v���Q�Ɓj�BPod�������̓R���e�i�Ɂuannotations "module.wasm.image/variant=compat-smart"�v��t���邱�Ƃɂ���āAWasm�R���e�i�Ƃ��Ď��s�ł��܂��B
�@���Ȃ݂ɁA�A�m�e�[�V������t�^�����ɕ��ʂɋN�����悤�Ƃ���ƁA�R���e�i�̎��s�t�@�C���Ƃ��Ďw�肳��Ă���Wasm�o�C�i�����u���s�t�@�C���ł͂Ȃ��v�ƁA�G���[�œ{���܂��B
# kubectl run -it --rm --restart=Never wasi-demo --image=wasmedge/example-wasi:latest {"msg":"exec container process `/wasi_example_main.wasm`: Exec format error","level":"error","time":"2022-11-17T06:44:05.361480Z"} pod "wasi-demo" deleted pod default/wasi-demo terminated (Error)
�@kind�́ADocker���Kubernetes�N���X�^���\�z���Ă���̂ŁA�R���e�i�����^�C����Docker�𗘗p���Ă���Ǝv��ꂪ���ł����ADocker����containerd���N�����A����containerd���R���e�i�����^�C���Ƃ��ė��p���Ă��܂��B
�@kind��WasmEdge�Ή��̃m�[�h�C���[�W�́Arunc�̑����WasmEdge��g�ݍ���crun�����p����Ă���̂ŁA���}�̂悤�ɁA�z�X�g��Docker�͉����ݒ��ύX���邱�ƂȂ��AWasm�o�C�i�������삷��悤�ɂȂ��Ă��܂��B
�@Wasm�R���e�i�����܂����삵�Ȃ������ۂ̃g���u���V���[�e�B���O�Ƃ��āA�M�҂͍ŏ����̃A�[�L�e�N�`���𗝉����Ă��炸�A��Ԏ��܂����B��}�̗�containerd�i�R���e�i��j�Ɛ�containerd�i�z�X�g��j�́A����containerd�ł��ʂ̃o�C�i���ł��邱�Ƃɒ��ӂ��Ă��������B
�@�܂��A�R���e�i���runc�t�@�C���̒��g��crun�ƂȂ��Ă���̂ŁA���̓_�����ӂ��Ă��������B����́Acrun��runc���݊���������̂�runc��crun�ŏ㏑�����ė��p���邱�Ƃɂ���āAcontainerd�̐ݒ���Ȃ��Ă�����̂Ǝv���܂��B
�@Wasm�R���e�i�̓�����m�F�ł�����A������Wasm�R���e�i�C���[�W������Ď��s���Ă݂܂��傤�B�����ł́A�����Rust�𗘗p���܂����AC�^C++��Go����Ȃǂł��g����̂ŁA������������͑��̌���ł������Ă��������B
�@�܂��́A�}���`�X�e�[�W�r���h�@�\�𗘗p���āA�R���e�i����Wasm�o�C�i�����r���h����Wasm�o�C�i���݂̂��R�s�[����Wasm�R���e�i�C���[�W�����悤�ɂ��܂��B
�@�K���ȃf�B���N�g��������āA���L�̂悤�ȃf�B���N�g���\����Dockefile, Cargo.toml��main.rs���R�s�[���܂��B�t�@�C���ꎮ�́AGitHub����擾�ł��܂��B
Dockerfile Cargo.toml src/ main.rs
�@�܂��́A�R�[�h�����Ă����܂��Bhello��\������ȒP��Rust�̃T���v���R�[�h�ł��B
use std::env; fn main() { println!("hello"); for argument in env::args().skip(1) { println!("{}", argument); } }
�@���ɁARust�̃r���h�V�X�e���uCargo�v�̐ݒ�t�@�C�����쐬���܂��B
[package] name = "hello" version = "0.1.0" authors = ["itmedia"] edition = "2021" [[bin]] name = "hello" path = "src/main.rs" [dependencies]
�@�Ō�ɃR���e�i���쐬���邽�߂�Dockerfile���쐬���܂��B�}���`�X�e�[�W�r���h��p���āubuilder�v�X�e�[�W��Wasm�o�C�i�����r���h���ċ�iscratch�j�̃R���e�i�C���[�W�ɐ��������uhello.wasm�v���R�s�[���܂��B�R���e�i�N�����̃G���g���|�C���g�ɂ́Ahello.wasm���w�肵�܂��B
# builder stage FROM rust:1.65.0 AS builder RUN rustup target add wasm32-wasi WORKDIR /build COPY Cargo.toml . COPY src /build/src/ RUN cargo build --target wasm32-wasi --release # container image FROM scratch COPY --from=builder /build/target/wasm32-wasi/release/hello.wasm /hello.wasm ENTRYPOINT ["/hello.wasm"]
�@�C���[�W���r���h���āA�R���e�i���W�X�g���ɃC���[�W���A�b�v���[�h���܂��B�����ł́uDocker Hub�v�idocker.io�j�ɃA�b�v���[�h���܂��BDocker Hub�̃A�J�E���g�������Ă��Ȃ��ꍇ�́A���炩���ߎ擾���邩�A���̃C���[�W���W�X�g����URL���w�肵�Ă��������B
# docker build -t docker.io/�o�A�J�E���g���p/mywasm:latest . �c�c # docker login docker.io �i���[�U�[���A�p�X���[�h��DockerHub�Ƀ��O�C���j # docker push docker.io/�o�A�J�E���g���p/mywasm:latest
�@�R���e�i���W�X�g���ɃA�b�v���[�h�ł�����A������m�F���܂��B
# kubectl run -it --rm --restart=Never wasi-demo --image=toraneko/mywasm:latest --annotations="module.wasm.image/variant=compat-smart" hello pod "wasi-demo" deleted
�@kind�ȊO�̊��ŁAWasm�R���e�i�����s����ɂ́A�ucontainerd/cri-o�v���R���e�i�����^�C���Ƃ��ė��p���Ă���ꍇ�́A�����ŗ��p����Ă���OCI�����^�C����runc��crun��youki�Ɏw�肷�邱�ƂŁAWasm�R���e�i�����s�ł���悤�ɂȂ�܂��B
�@WebAssembly�����^�C���Ƃ��āAWasmEdge��crun�ɑg�ݍ����containerd�ŗ��p������@���uWasmEdge Runtime - containerd�v�ɋL�ڂ���Ă���̂ŁA����������l�͒��킵�Ă݂Ă͂������ł��傤���B
�@crun�̃r���h���K�v�ŁA��LURL�Q�Ɛ�̎菇�����s����K�v������̂ŁA���ӂ��Ă��������B
�@�{�e�ł́AWebAssembly�K���Ȃ���AKubernetes��WebAssembly�A�v���P�[�V���������s������@�����Ă��܂����B
�@kind�𗘗p����AWasm�R���e�i���ȒP�Ɏ��s�ł��܂����AKubernetes��Wasm�R���e�i�����s������@�͂܂��A���ׁi����Ƃ�j�Ƃ��Ă���A2021�N�ӂ�ɒ��ڂ��ꂽKrustlet�̊J������~���Ă�����A���g���\�z����Kubernetes����Wasm�R���e�i�����s���悤�Ƃ����crun�o�C�i���̃r���h���K�v��������ADocker Desktop�ŐV����Wasm�R���e�i�̎��s���@���������ꂽ��Ȃǂ�����ł��B����̓��������ڂ���܂��B
Copyright © ITmedia, Inc. All Rights Reserved.