From db3a2f3ea9e8a3d480486705b7780822cb7af8a8 Mon Sep 17 00:00:00 2001 From: Jan Egil Ring Date: Wed, 8 Feb 2023 20:01:20 +0000 Subject: [PATCH 1/3] Added hello-arc-windows Signed-off-by: Jan Egil Ring --- hello-arc-windows/src/app/Dockerfile | 32 ++++++++++++ hello-arc-windows/src/app/package.json | 19 +++++++ hello-arc-windows/src/app/server.js | 28 ++++++++++ hello-arc-windows/src/app/static/css/main.css | 49 ++++++++++++++++++ .../src/app/static/images/logo.png | Bin 0 -> 32838 bytes .../src/app/views/home.handlebars | 16 ++++++ .../src/app/views/layouts/main.handlebars | 18 +++++++ hello-arc-windows/src/node/Dockerfile | 48 +++++++++++++++++ hello-arc-windows/src/test.ps1 | 33 ++++++++++++ 9 files changed, 243 insertions(+) create mode 100644 hello-arc-windows/src/app/Dockerfile create mode 100644 hello-arc-windows/src/app/package.json create mode 100644 hello-arc-windows/src/app/server.js create mode 100644 hello-arc-windows/src/app/static/css/main.css create mode 100644 hello-arc-windows/src/app/static/images/logo.png create mode 100644 hello-arc-windows/src/app/views/home.handlebars create mode 100644 hello-arc-windows/src/app/views/layouts/main.handlebars create mode 100644 hello-arc-windows/src/node/Dockerfile create mode 100644 hello-arc-windows/src/test.ps1 diff --git a/hello-arc-windows/src/app/Dockerfile b/hello-arc-windows/src/app/Dockerfile new file mode 100644 index 00000000..56acc6cb --- /dev/null +++ b/hello-arc-windows/src/app/Dockerfile @@ -0,0 +1,32 @@ +FROM janegilring/node-windows-servercore:ltsc2019 + +ARG IMAGE_CREATE_DATE +ARG IMAGE_VERSION +ARG IMAGE_SOURCE_REVISION + +# Metadata as defined in OCI image spec annotations - https://github.com/opencontainers/image-spec/blob/master/annotations.md +LABEL org.opencontainers.image.title="Hello Arc!" \ + org.opencontainers.image.description="Provides a demo app to deploy to an Azure Arc-enabled Kubernetes cluster. It displays a message, the name of the pod and details of the node it is deployed to." \ + org.opencontainers.image.created=$IMAGE_CREATE_DATE \ + org.opencontainers.image.version=$IMAGE_VERSION \ + org.opencontainers.image.authors="Jan Egil Ring" \ + org.opencontainers.image.url="https://hub.docker.com/r/janegilring/hello-arc-windows/" \ + org.opencontainers.image.documentation="https://github.com/microsoft/azure-arc-jumpstart-apps/tree/main/hello-arc/README.md" \ + org.opencontainers.image.vendor="Microsoft" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.source="https://github.com/microsoft/azure-arc-jumpstart-apps.git" \ + org.opencontainers.image.revision=$IMAGE_SOURCE_REVISION + +# Create app directory +RUN mkdir -p c:\app +WORKDIR c:\\app + +# Install app dependencies +COPY package.json c:\\app +RUN npm install + +# Bundle app source +COPY . c:\\app + +#USER node +CMD [ "C:\\nodejs\\npm.cmd", "start" ] diff --git a/hello-arc-windows/src/app/package.json b/hello-arc-windows/src/app/package.json new file mode 100644 index 00000000..a133b318 --- /dev/null +++ b/hello-arc-windows/src/app/package.json @@ -0,0 +1,19 @@ +{ + "name": "hello-kubernetes", + "version": "1.8.0", + "description": "Hello Kubernetes!", + "author": "Paul Bouwer", + "license": "MIT", + "main": "server.js", + "scripts": { + "start": "node server.js" + }, + "dependencies": { + "bytes": "^3.1.0", + "express": "^4.17.1", + "express-handlebars": "^3.1.0", + "handlebars": "^4.7.6", + "minimist": ">=1.2.5", + "morgan": "^1.9.1" + } +} diff --git a/hello-arc-windows/src/app/server.js b/hello-arc-windows/src/app/server.js new file mode 100644 index 00000000..2b53abe1 --- /dev/null +++ b/hello-arc-windows/src/app/server.js @@ -0,0 +1,28 @@ +var express = require('express'); +var exphbs = require('express-handlebars'); +var app = express(); +var os = require("os"); +var morgan = require('morgan'); + +app.engine('handlebars', exphbs({defaultLayout: 'main'})); +app.set('view engine', 'handlebars'); +app.use(express.static('static')); +app.use(morgan('combined')); + +// Configuration +var port = process.env.PORT || 8080; +var message = process.env.MESSAGE || "Hello Azure Arc GitOps Demo!"; + +app.get('/', function (req, res) { + res.render('home', { + message: message, + platform: os.type(), + release: os.release(), + hostName: os.hostname() + }); +}); + +// Set up listener +app.listen(port, function () { + console.log("Listening on: http://%s:%s", os.hostname(), port); +}); \ No newline at end of file diff --git a/hello-arc-windows/src/app/static/css/main.css b/hello-arc-windows/src/app/static/css/main.css new file mode 100644 index 00000000..ca013578 --- /dev/null +++ b/hello-arc-windows/src/app/static/css/main.css @@ -0,0 +1,49 @@ +body { + margin:0; + padding:0; + background-color:white; +} + +div.main { + text-align: center; +} + +div.main img { + margin: 40px 0; +} + +div.content { + color:#f2f2f2; +} +.content #message { + margin: 10px 0 50px 0; + padding: 30px 0; + font-family: 'Ubuntu', sans-serif; + font-weight: 300; + font-size: 44pt; + background-color: #1a6ad3; + /* border-top: 2px solid #909090; + border-bottom: 2px solid #909090; */ +} + +.content #info { + margin: 0 auto; + font-family: 'Ubuntu', sans-serif; + font-weight: 300; + font-size: 16pt; + color: black; +} + +.content #info table { + margin: 10px auto; +} + +.content #info table th { + text-align: right; + padding-right: 20px; +} + +.content #info table td { + text-align: left; +} + diff --git a/hello-arc-windows/src/app/static/images/logo.png b/hello-arc-windows/src/app/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c394871492fc0b0ce5f58111c6486647e3ab695f GIT binary patch literal 32838 zcmZsC1yo$ivNj9@3~otq4{n3Iy95ssY=GeI5F|Lk-8B&06C45qB)CIxcPF^RKRNfl zcka3GpSAXMZ|Ul)?yBmqs`n08RhGp-B|?RRgTs)QlTwF+Lx8~Q86YIs|ELR-3>+Nl zij}0Ks=TBmg{rfIxs|OM9GqNuaw@W>hAxr+iT55QrIfEmCIoCCck0 zY`nlg145EcHE}7R?W+H$zyfNDf=@a%`Li`xpXliiAf2HDA`leLZx$Y-PbZ5W9p@d- zPg^|v1an{~f1t*3(B6G;_Q#tX#l~8{&{Akr+nczUJgh!1+ zCB)TVI{Dz1kXTGm2{yxfxfWdm59f)S$)b$t|2}$mk3UQE2NnZ~u??j*g_I{o*D;Am zW+WIFe`t7UC}R^R_zku<4%~a9uBc7XTcyXy=lAI!c?93~OuD^6S(c^1F{^QT9<97x zNl2&64mS=)$2B6s4j8iTds&;k{WpvA9hCHMA~a547n_90 zS9CKi)4$U%D85om!eRZkV|Fumk&q=fH*dS?I8ud?dSpx_2=)mL!1|5Y*(ZrS-beZ# zj`;nJ|E%ru*Ta63wr^6+CgO~unIls6B(Wp7&dfU#c9nMViM(DPi(`MZek%1wDXkmb z|9V9&dyC*~5n=LtUUMS#%N?bIu|zg>3IJ*zyjvc|MF2_- zTmuxR383feY(Y8v`f@a;^fJ z0QUZZtCYJ4L8~tb5Xqr@KykiL=xUU1a>yLPLzH@-;F~4eRlzUde@e=$GQJM}GKOj? ztO-mOdpRajLUxBJ0G}PeDlR}hJxIw_FIDQr6FLa z^Y*uS6G>GlR_E|S$plfj=Ok_1#5(7 z;SUKg!!&x+Hx?a@`FL1~wfz^u1%m~nTf>Qe_;wAhx&3bN6!ifZeliMU>n8uvxZ$vF zwAzb;3X}{)ql|*mY~nUxU*XMzW>A8Ho${&1({^Q|sETlAa0kPqf1Ll2{o?EJxb z#QA&+=xnn&uocs1kaUoGucS_u9^WP({+hvxvovN(yhY`MENxImajE zA^1T)htYvyG+}3;I;A?vA*F-iIYT0kKs_xA%wEL=+)L?S#UC{Ir!J=+r_QIu ziBim!OvfiIrR%!u?B`3qCVc(w9CgOArLd(j;LAw=lKN$eLg>J&~lv5!6{qIR)# z(cf|0elfx?uoFOAVO2!%T1rDoM~a+H@w9Fwj@?T;l_Rbr^&|HqW74vi z))=v3&7Hat#TJfi`O&=8$hA(ea;Jw3&l&p zOIZw8bP04V0xkj}@M{7N^xIHD^j36HB0}PyM0Q|nb|MZfPIJN?LS6z<4$4f=G-mcv zo@ToUZnLza%wvx4#z>j`X{W=C!&RBx+cDdKbAxSR7j~EI9n>AI(W80_T`-F?GZFJ0 z%Uk9kmKog!o%RNf8ig9hhW)R1_D7Ixyw4{eXMMbx*{ zbL*YNkz4~3gRcfLEe~tfYZ=EM#@sA(PKB1+9?y{$FBWI*?-%bD_m1U{y_fEVT!m-J zevzpNUkW$p)aS6J6%BE1Q*PU^*|62lI910kvo14z7xYmTc@hZ`S!!2kA8&uzuJUm4 zp#DhoAoEE2kb3U{ga85o5eOf2-!WsB=WrA4zG&k3t&hz>&rw3PYgMCL!`H+D#6&@# zdv!)X1=b{($3^PWF<$5*3nLC=LwU9nare7<7`Pp!wx!aNa+Ox6#+N0FdcfX#Sx>WX zTqj@0)xsHyn@FHRe$GBk*YLW5ZG_R@Y%$q0+Ed)e2Ea;5`&adICq%eo70ATiQt{+eR#?4e@0luNAzN_k>7MSm8{e%KIPYTxRQ>i5x1R z zO(D}OYEo)Cw64-U?peh5^79g9lV#gsKGFZ&YH}3ulsuGtuO(idpzT&QZIs>d!7=(d z1HmTTW^%?*&*FR4`=$HK+Jl9&`m>o$tcTTSNyz}8fTlc;po36h(fp4u9%jFf+i#3S zub?%Dq()Xm4n(xuuiLgfBo3==iN3K_o?HC>(`oRya<;Oo(j!th0xO9=WiuJw7Hw`? zUxAH<*|)>@^h(j}%FNpx+e6OdA{jZg@tAA2*==VA)$eDvLiIoq<8WE@TXGL4kEO+< z=2oZJ>70CFqbt;_<%OM&>gM^9mI@@jM2&Nwk3&yYxrCxKGuBhDe)*N-O<$6J;&ZH8 zE^U9x+wNq+a15$5zENHOOdRHm*~s&b>)1x!ictU%BNyBDK(m+HDjO8zPG(AC^YH8U zOxecNM#!+Li~YGJT1R0ucYFPg)N1$$&rHKchwhV>hx+yVEru-(z4`E?+atW}=;Ah>*KJts{1zS+u4Z6tlG$2zm8yO@t3d4YFvHRC5`* zHGO!<=&s*bidh<-$*yW#c5EM?=BzG$Eb1NRZ1k}=Xc}(u-BRAo&S@R@IJu;~x?0*; zCT_`fdL9nSLf*id5$Y0R^r`sWbQr#!xWDq|qr<+-q2RBR$&Z&-o0DM(SpnLkuSeT4 zw?*kh*}OlW=lk`!?{3zt{EkjVGsJAi{Z2&Aa1*vJT4tEp_H>CgDq0oO6OGx9(~<7k zx|e;|+H!q$BG}v2o8!~>0Dh|dop@J_kV}}`+Wy1Oi@p7V>DcC$chbRbC8%9Aqc1BB zyY}Z{sTN!aIv)+9f1{h+M-nW!OC-1-h?9?(Nn(@FKn>s%p33#A#yUvs4I7-=AUvoY z2|9xMrBM1oBknoS5jEcfu_im)_CfJAgL}hdyBwLE&6%gkdNvANlL=h=OBJQ486_p3 za`6OTkeKYTtC1)JY8c$?{jvZb*Ud5~^G&PL^~1-q(-Y3LAt>2{?-QL^7O7m}Bp(J0 z@kW^G$eX`;1IGxfgW!PhL~w|(8a(U}fhYdox(qx$9Kv7M0dR0(R&c<7KcfsQ|NP=$ z$DcO;DiIPw;gDfxxUj=B5AZ)vBS7*H{-+L?0lNn$t|2Ke4=XiHoz2YbT`V13X_yE! zVHZ#w<#b)(;9k-EIpF2hU;l>DpSIG}an*UFBw*@b$7=lE!NiQ!)6Ve^9XKIR0a(?} z%+;8})6Ul3MZi;->aQmRVD&$j*{CS~dc@U6m`dl3Dutwjvl#_9D;F!6N(7aHfE!f!k`T5zv9BdpMEU+h7T)gaEjXhcH zU8w&>4tB7H zt|EUA`oA0h=gt3a_*a*@e|O2w{f{pH{69wGU&H*@RoFO-pbD}5@0^LC ze$FxZqbwv=QYwF@AEsn~{ocU->0!s85_a%Tx~4F~)QmS*UP@fk6aFw8CC=dOuM_Q2 zjTX)Xc!^ze)IiuEal#{#5WILHjh*%Lu5RBdT!_AM=bS-nO*O?-mvO(Cik|4DbozVj zoA)3M5DFz_08j##gH9OB;qmHd$@gy2Qn>PT`>1S_1M~9b$VuOMISvZ0S;J?NE-$tQg>DXX^7Hu92@&9Q9 z21fbolK+#=UuStrFltPAV=2-9A2wv56O_Ye9yOL%8b{n9*2CQzDExW9>ZIycV!`dg9aU|}zJzZ3G*OG-1v{3(!7i|qUK1hy>*z)qx2ZF7pDaHQUI zj~JebEF~r39|DPmP}h8L>3FysXVpEw6MH9*m8r)>F7R1?TcujQ)ts(}JRtRh6xl4x zgkX|k$~!X?x`t28njBhtogkgU#<=9se~6j~0XBGGl=YPBk!cNU2S11;_|>DHS+Ll~ zMaI}Cr66%ClE9mjbR23{`HZs0S3b_6jTbH6R%pei*UxRlXrog@HbUCAZ2mFts?NZ> zx1JrQUa=3C>GsCM+7ocMEjMX0{O4mx0ZF>_qJT7l~E-eLoy89W(i&r83-#ed2?3u^o73&p9nFnR;|mI8Jmaa}Dz z2qS%^5C-iLiT_wSUC#M&BulGF#_sE+CUJvUy-6~5l>b`^CLO|mDg>%bp2l}hX1_AM zW3P5uqzHQGec-RXyL^xKTD1{x)1ax1%T9@L?A_@rlk6EA1*pPH^Ag%i-KMz7G~uQ&iqmY??oq_- zqSgdhk;GzcMf?vZ@#1BGpq6nKYXy|y%eQC8yxao|%VQMWJ>689h^h3~ z45uHO8-=z*<3m32^H(cxR$8absv?my$v{nrI+g!PQu7rcwyXiIat4O$-dd;e*3YNY zkTq8;T)dLO_Eaz!5G~Ceu;X{S|4zD0arWvmO=kcmXVUJw`Tv#^dRMiwFHrrmW!WY_ z*z`)f@v@h;~x$W zRR+@df$L!-amjgQfQ+z$#HRblW!YQtrz2UezFS#tg$={)hIYk;gJV*vOj=9}WgG3K zpoQj22d1yFFR39`stYLp^eCrN{)Gn5@5VQ-F6Iloz297bD@)(8dbt#21wNmDrx2=> z-MpN~H4cP={Mls0?I(5bdAbQqS!BPp&FJw#(e~yrn_W zbcSR`jc2-O?;t>u*Et^?zqg&t%A}WN)b?XHl%=l;w~W~AY;Fu$4HtMj4yKo3Wa|0< zC1}n3e+lYLIW{T!x>0zN`q{He@9r7^zq~Q8qfLXqKVRcAbwpB{@2G`}&<=*S}G7LmRWkX4c$-$&qV|L$hYVyS$ zPze8F5$`2eEwE1Fk&Slo5?3bU%hZnDj&Ux}o=h_**|ebPKNrH@+lYQ3M^gjUl@-S* z7ReeAdXIo+b%YL6|KU2tP;e~o2b`OKkL{^XuFy;Nbjiep`nYMi4HOVx^+jrvb2zsr zwCguI$rWj8_cL!n5+`F#{VXS=dG~g7-|jAR@p==fj3md~dIRT~dAqayD){sTEjHpRJwD9BzMQRkVkdUd*T3%43yBp+ zD>&?C-9wHL4Z50~W&?)Sz2=;vXdz0nO7voD*~u&Lp_+4s-0%bG-xqYy|5LrrB%yfV zkJqKhb$!MfdWDT1CzGX9)0cyI#EpF##I7^zjBf)sX(rEeWY+5fwos0MJnTDtb!J}o?nGD>r+01Y2OLY_L7mgDv zv&##MTD}ela&eVZNfVppGRXF2F~}a98BCV_=W++t0d@hS%H6o%I(K%JPS6f>fOT#Y z_f2h*?yKiB#C2Di4UTocOCFS87u=-z1JS8?O1|1hrhI%3eP@-Wikh{!5G}Z>R|ZNd zyhG%DSX0G@C-!`jFTMSkT9#7_SPHZ@J(;^!wQ7HQRcft#>-%s*V=>rp*IKBzWUQrL zGTxuHv>-LY_j}NJTimGfOTMn|e@+#>AV3W`gm2=mSlM>IYQ-@%31-N4-92NN6K;|` z_B4(>+*c!9z)4Bkwpqso%cXJPJPwsq#v>~Hpe+|UbUP{;EiGLeLBA*g0~)MLr}RDI z56h$gMVvtHFjA&BM(t{48SfT3y$2`p`y*TN6;)u^$C?I$@pf`6>8gBdD#qsV#zgi% zXAp*vNeeo_tTR)m7zZ6@XrO{w&!E}AvHX*gKoc!9@Zst7|guyPY3Tsj(%gBhy z<&sl3@WWE-uL1U%upx|seG4EnYBEPICqT;_$|CqT^%6^90ydb@-+4DHNYAXJM{DmS zv&lUC7x&}Wi+YT&n=gOd)XrD+%R!Oc>PU1O%?Q-2GXw1a{0@7t!q!6H_tpA&(c@t?PZ+pY`y%k!Q}^Q zX_esSwfD3TNrkQ&rL1?_ENGd;g=F`GD7ZD?AC*D}Z66Xis@GZw;miGHcmP`P(Gcms zfowp8IE6M~8_f?|C&1t8+Y{`l*U|bh^TB4T{Ofl`d~`D~Z`L7jD3fL)^qyyWuyYvW z|#Kn`tB(qrs^~uu9=f z+Rg-MmVmEkCkzH`I+vXP1~vf$Qh5Zxp&46qm*_UdrD^R;?v_iLC!gDxKdTB-v(Yey zH?n5L==dTyBI%7Epl8131%GCxvOrAEJafIhum0`3;hj3&j#Vu`ZKTFC5&MY(oSH9k z$>1EE8r(n|`M=QwG*~h(4LGFz^m`7&d7yo=u(;L7{=nnfF3~%+I^Hh3+kQ)T={;~L zohX0r>@`#2C8{;F$FKkc%gQD`#5zN#sz#&vjPbGU9eT2M2@LZ|_(%1sz(8|A%a+yO zYe;g07y~G+`d|*ZUcp?@kVQ6`*~cTyZVrPQ$KAXquQityi2UJX9w*unzS($Z3wlOy<2W=&d~ z`yrvMv^4(i?t_)R{i}Ape+7mK*!1}D=WZg#e&0xhUCLZ{)*AdCr&G5&x0qZjNadny zYuJCeW5@-eN3^JWY=_A}BgCQZZtjB(q)jKtrg@bK^DRXD_ABYm4O zB$9Zp1~?x#?+l3CA96|zIggCl|BFc=C@IrlEriHT@3~5H{=K_FD$p%?@pIXgEC3SarY9sNR@0Fr8xCE^xNmJwLPYIAP>C$q7PW;m2F5yUu^) z^8R`IFh=06&d%`d`ej81u?fSwf5Ca#O_&P>B;jUDz->u7VmYktD$k2bLIBh?HZ!cv zk5>z3{RuQxuME#$zNNYQ=;l`M^RPjl8iXm(=NlVgvGdmgLx2VB3G%=Fplnk%erY^e z*rLL%gF|ceDEWAHVy3v6JY(e1hWa)Nvoz*?NVxdEM14XHEn$U;sqw5XlzE)Tgp9_F zF{c*i+e{K=^(krP%r;Bw7b9ZRs6(VAIMG1g{p+Y{^Jdj>9hYD?WLygSt<=51YGE9^ z^3(xbSj3LFJ(NxWKNzJ_TXnqrT`$MyOx|m+Fg43+`r-C`Yquaah2Ld6N@(ooz~BTs za3CCxtu)ohPuITfRAz4?eOBqmVCo<5c`xNg9jq(wgp%+9*{^LBF$@ z4O%pxZhA#qp0ew*64U)_ua0Va$r67tzW()#eS?G)8ng54kAT@HFfCOKv4A;^JWY@$ z0A@6T=TNP5U116j(c22!m1fD_$QK{i(N-?C_jmnVoYLqWhkMsbM8h=if3fX*srBpZ z)2g&R#Opk@iWcQ&4gqb&>LJw*3x%{{g4sySA)ig4MyS81#-EXLC`Nvacg*iwmpYWB zYET*vW1RV*EDhM8IHSryode6c;s>RnT2=ZCk@##WEP4&^X&|nS!HFSg_ydKhhKw3T zN(^tdBuhD5u+%l}auVGg?6QX%R6KlNmhlZ1J-;R^EE=hh(lNm=6fI-$+Rn2I@9&M7CJP`rx`C1W z5Nxq69t|}#j)bU9y7r(Zm5nfJv_D+i8&5kL_e3^G?eq#QiEM)=H}`{ugDcU|IKR9H|w9{pE|10 zMs|iX@kjFW{Wd;r7G>He)Z5Gmu=q7}vBSH-Omxtxmo$~7%zzh&9>77Rx(8H3HYDYB zLWQSim!gzHS63_8z$|H$;xZZGa$=)`RF_*wewxX#r!kB%j!s~Ly4|!C zx50Wc)6{zD5+k1_c+xichKq*1ABdH83W)%T*Z;}qCI^UZ;enNK-0D-RFf`=5d{yG% zbi@@JR?`G{eSq`E`Pld#a@K_oB|p91kPNI=m{Mg@m>4#R%g>Z&{+g<3H2O@?GX#$x zlpWhW-pS`P`r9kk!qjx>)81zsF!I~zm>C;#=d;%NUDBBDfGY|AP|1%WgP2>WZM{tWczf5E;R-QhO*7ou!A4xS4r@Y>VslmOWW*aT08gIj*|uHl*01P=sm>nz9ewJkWJ!=* zehsn6P8I)6k4f)sQ4x~wNg=aD7Sp|P>Xmt*TrQ(FEMN(B6#)*>O)M|7=H3ojJdEa( zkE<@h6!Huq}A*bpJG>6*Y^WGRfK?- zL2x$2x;s;IgmxMRdU{M@r0!|@j-80{n@nX?o|x~mpoPN9He-40PHS{*6gEcBcQYDn zy(Pe&Tauz=(dXOI>;g(9+C-!tIFi#WukCbshg#1+>#GTn78U+HxU5Kl+t@LXLTzm2 zsYNg_-H=XUzYoLb4XJF^UjH~>3$NDO%9d&eG9EQ0yL}-X5W&6s_o{o3HBHlvl}k3W5q3la98MOQQ=rB_z?yQk5+(tFvzM zr?GT^tZ>*D-92EGJPED7GltSoT|#6J7kwgyIRST2AzZzzmF$~h!k8RoQr?a9DT@x6*{-#5?FIW1yfdd}B5 zDEuIjPl^$MDocR^zhIH;yD3S2r>bm-M#llK*Jz*p09zA>n#hSpy;Kp%Y|TMTn`m}? z?>_$7+XA<*zH=U88Q?6LcYd5y0#eRPTLpdIo&InX$}AM0ed(xsO=m zEA!2D*CGcuX-ta71 zkE?<0DiJR`mFkM6IhKPYA2+PvE6K?^9|M^fe<=BFTyo?_tZDV$Qvdq?(VI8#av7rG z9bnqI7Zjp4{2%6Z7BY~r|8prwI`w8LgDJjx%ZrnWN7{a$e8Hs*Yu?+TSed4Tw} zcXsVB;5&{J&DR8}o>4YU1v~$;N&J9tW#~go&HTP$cAYtCQUR3=lq7wkeJjQkMVsgA z^ppV3zU%$AWRc_GC1+0sn;m*E&ul=WG>1dalGavkrcLvSimy0iN4WS z?RUx4=_Tj+HPk8i(qJdcB_>nsu7|fBr`bN{#dzRa-DVK^14OO`BBE zQn<9-@>es(cg>v{zNzLgfcf=V-IejDV5GObV_pm&nK%W_rk=%qPuQimxR1QU@nZAH zXB2NHM9Fq9#K}*0%A)xsNnySfT>)pRMt2&e06b8W-44NFaUD0Al*Moccc2&hfPVu) zF-NS(T?sYm8kZH`9e$3Y%bY#|-K&bihzXfQ+R=y086)x$)+3M7c>$J!H9Sv#GX!&5 zt3E*jdd`D25t!?5X}Gzp{&>`r`=8!ALyX_R-^a z)@eU4SOz!kx9P*S!EP^xsNr^I!%`|aATiwEYa)QBqKI+p3$@z_C~ZT(dy}~WzPo!Z zs+5J}jpz?WoXQucCbnR}bZ^3URJ1>)_?j5Lo8hNCUG}CBE>-X?z8;t|xaR80{T7DP z3~R*D#_xATpBb36tCa9=`j9(M4Ng9!>dgdfMA3g9OJ#}icgn`!pD0w!cHG)Pj{Oo@ z69RoFmnVWP%~Q41?%PU@kkhA59*9p%fzY-(E)Xbaqj9z5vC?;lvn%fn8@l+STu?SB z`pX*c6b&WMxY>8KYY9xB-@xBV8p`pv=R5b4gt1d$EvEsR`Btk4YZSud^k^gRus;wJ z6KAhR>N#+wcYeLSxh31nyg<2Q&?8XA9FWxeP$5s;#(-re&UdaeIURz{F`s+|hgEaA z8OtFCVhD1usqv3G6OTiPjfug$7Swx`H@!XEsuB%g**gocbk4a$M#)u)<=galIPD$0 z*qfZJ8x%48EysV-yhE0%ofS@I7fq)*frUJP8t|EXa(N3CG-!)SdblCtU^HSH!{1|7 z58W><&PmX-Z>EVZal$$+rOwngavhfzNpFj}=-e@bXd$a_XfusVDLcp}?@u*>JxG2lH?k?f8h-ph4_qqh4v_-qjO>Tmnj`aOPV ztOR+l;>3!zj-Obz{@#pLfr=(RAdye35nh>scDx!0Wpz0Fn#AY$17Ers`%;)jgiKI_ z=Rj#9^a6dFOtAzBE&Dmf4&hmf(ZVF*iA08Bu}_VHuLx3U2jgsAP(wIs{+)2=0LbtT32K&iSB94DIV;@% za<=ZR_bN_2>ahi)Q$BqiWKE>Y^_i&br}|!!N{xk-$#G5<@!`~*DXb#~?dWGDzAS6T zPNB!VRdIj3EExlHm4)f74+_Dhxyv*k0IEomSWplvGLO%48lNg^cE0@5E1o*dA7@s2 zO?G{CyEX{qPZM|mL&b}OB06xvc3h;-FcqefN06YAK+Wuv0Aqi0Jc#`r1}8&^;~p3w zMA_I&>Y@MJb>3q?2<_uOC_YG^Dk{!U|IuejM@2I8b3ouODJ%tcjIhW2T1*JLiyp5_ z1GmDLWZ=g;iaxqteFX3R0NJ<)$`UW;_4&+)PQ>-yQ!ze+Cdbdza!EnnzPX^31Ky6? z=mVp=f(~VUm8+Y*uPV(={sjw#>JV&(&U10QCq^7V;{G^SrNY4x%BouY-k zAwZiaHcqdk#U4TtbU%!9_;|li>y62AHD*-Zw2o?JV-s0so$ms==3R14q~2++6VLxa zO*KxwI|ET6RvZ2JcwnT=Ng(a-$pgdCs{98P-<;>mpcWXn&y%@No1d`x!VtD7?WUKc zt%@uKc`h-p4j@EAOhV+aSgBAjIyAxqZ-Zzyls&{%{RHddO*bLkB!LQLOj;#J4to!d zPX|^^@`Z=U=1*Up@G)L!w94YQRouFdh}2+R6rG6Z-^v7?DzJ zOSE5nw;%$G%|L+6A(Ee;nL_-Bv-l^|_rRuijUA7}RxuBX3_7xg4aK>BE#Bk3@fnbZ zl9M)lN-f*hgOM!Ee5YNl`(@>eL(JRKZI0(Okiird7tZBPyqDOR6x4@^DT-ngVgz}Z zNm%+&Ce&|Ad+OT9Tj$NAzRH$i5Hb3z7zHQ`33e3)Uel-y1+*d&D-d`Z1PJL!73jEM zI&m-h@}&Q}?@;(P^5Kmt&%|f@wFcB>{HGEBgM%IqC2h(UQc}{j65WrSoYAz2EuTZE zh5Ia6x8Ruux{(=mKcO%oB9wZ85t9^sjp#{NPxbrq ztEn@PRuCSxPe3JwDqm^+V=UtB+jC5~0t&Ttx{mPCnJIQR*03g4Yw%L-Ui6pD{{d&# zG2>g9Qz$z`_d}ZNg`1H#Ij*NM=POI&{0m@=G#s#i5sm~6PR$@&$07>jkS&#^49bI$ zXPT+cI$o}0k;APRw1S(6bZ8U%eRn{*jA2_GtKnG)Hh8~N$(0u1-ie6M=Thm&zwTGy z<+U1sycosIwxzTQW{v*sWw>v2(}h0)BG?M`XU`=4MFt{EQ(bSyup@7pkO94Nf@hib zUOvx}1BAw%&6>tGKgbDcC*Y+PlQaat^q-=hj_F-vEw>`*X#J-&2dQnxuTJ!#NW3!dA!G#(vigPf2!$Fa4^^srQ_B zR^1OoaFap}F?^_W@MSt{hBFcY4OHk|!jn)MVe{rJIO^TqkF{@{a<9O_x1RP8XUhnL z`{z2q-Z!tCS90_h_C*D_!<=3dJEJx8>fG_}t|O3{JW&lqK#-uK`M8T_NR7{}CYxT> zdfYPWH|!~QD{>Ye%lC#@ievIyYPA0;X7fQ+>!NowyWsx!joKmi3sb@-cCRp=1&LFf zSv^qNC*`C)on+_f@nWe8J#|dM7aF`Vx2EXv0bh3uE1azI(f8P|tkk6jGIAm_Q*u;3 z+VXRAryk4Qb(@KGBd%p|mcJ>gD=~|v)+3zua)Kejl1x}8R$}d$Dcs-S!(O3%4}tOd z=*OpTBEjRtsZ@L>RX3r$ZIo35o%Yrp1UG(wl+_;L-Bg??{bF61jMsVyWQj@VCP} zMbR_o^B*Bg1iim+Br)qy@DOwFrix{_EDHGP?zNNwGNSn_5Nnk5;s?BJe>LPfMI~lq zlZ>M|YQH3;sH+g>4=!U8y>XC($zB3Q(Z@ZN*0!LTL+>@vVKi`vo!mEPO+1Y@|K-Lm zUsMhjS@>Y->)`&MZfZfB*0vv_s98-PcP1|PT1};3j+GwuI&{57!bQH9LAIr+q@jG6 zf2L&O(m<%7;2kS91iCMo9EjJfFs+0wEEPfu8(`!1fH`C~W;xsg+x%cJL!qGts>RKg zBII@F1-r&(p?oe`5bjV^0&9^u?~0GhPi%18(J56i<{U7v#IO_Y#W~;B8>l6k((D+L zm`=ewlYR<40O|H_(CBG>nvX`lyEwg6Swwj%-rd|iv;M^tB_oAS!K3_FwMOC#YFw1{ zH#zbs1OSml>@+5v{NRUAhl{29?5BYwuWiTkrA-q;UmeH9xyj3ebb#biL#u$nr9>v^yXy7N3ms$I;Qz z+92Ua(-x1D@7FQ2tH{*n9D-M~rrEHM!T9U=J(R(Nd*((&s}Qr(w|f%0IMj$^Qb7%kZsT#PW@PPAp>hvUJu z*r#_jLO#VGjWK@;5N1igN4*f_V#Yp#2&5l}59GSYAIpB~sl)Gr8fuDA{Gj$%kAd9D zPoVc)!$$E{2JK@+z1tR8{0GX9Ygq15&bE}-E?VZ3e0~WWEU9SpOr#hmhrn?@H|oc; ze^s&5hJ;QhdK>!XsB<>p5@4PvqT~wLK8U{{kcL9ZI8|wJIpf)$vm6g$uE;kGg+OVO zax80f>ec3OTHr64r0)1HZZ)2!I3;|52DeJN9WCEl(?YoZv4X4UsbYT@c)TC+7aUpT zrNk>j<%VTmN~jNK-XR;Wb1P zYh*J84FA(+dgf*Be7YzU-Pqxqgq!^^h0YOieaG zp?p~TLwE}9Gag$AHl0LKU6b;Mw6HZ0#lQv$fw)+gZ-}=q+yUmxj4>?=@Fc!GzS8(+ z{+#z_ye!GIe$eap)DY$=Sp;2;UhnO$nlSo`%ma(PCcHv&cIn+2$P((m33RW!3 zV~B-650w~h8{FQ;n8hp+#Yk|>JvOQp@yZEbDnlI4)^OcODBsk0Ds>teU%*l3@X@DeMV3K7ZxMCFvc?<@-wF$C0pp1t^qe@fjM*VK0dEO$&nAXzgZn4)hbb}o9QJ)w)xBa_iL6 zxfzD-yJF0+Bx$?54ssH^54dEy_n*CKHM`wj`f9FMe8JG^WFdC&Mr#xneT-BDP^u*Gxhp<+PK=JEXY z!&z?J5cwXuhXm9bN$(fNBmUM!44c^}-PuB0``vLFPdq8-u0>3EWGquP02n~lMa6l= zH!O#%qZb_Zv&l^%jnwZn(uf3yh$+DTbV3>~l+UCG_Zqk82^|6gRcwiOcMXzcVPpEN z`T<42AtiZkCOl+od*`{&J|oI}J}o4^Pn%AClwo|mRB62wQF;Ae-dL$DPHk|6SxOn)AA2QMy+J`krptfdBr zbGu&6?80|--lm$=>KsB;R~ws{bb)v>x+Umof;#kJsDy{=<8-k^9pz^ycs!Xb!7-UN zk^O@}8LYrW8#tHwk&T4G$2xXABPGDiWt!SGXTxe+$kXT-Ij|BBK*rmj=16>DqQmRS z>s8t+1UKAo@CqKA@oKMoh-)AaAq$$elZ=8u>rb(;N{D&ER_al#B_=w9 znubFjGuMQ+Qg+pN*-pV`#Ku(5yY#AH>kk^)Lt~?hDId~T=IQSnx%-$ON%0xO{V{f% z)K*m4T;^SJ#Ah0ZG+(FMgg1(G+5j1VCBXjs<+KiEY$`z! z8wg$=01K?uLPMO{4k=zxbDd_Yq5z|uVLN!DPDD)YVTjx#UTbj1Si`sy4vXe_Kd_L1 zATASZ3@-9DZa0uqdK<-EolqzrnV5fXCt{b6Y6+Z&`6iBjI*W{@X(;TwhCCc?-e8wc zn0pegme)!Fbrh*-wXC{de@I6wWTGWuu^=9ixpu~mZJfkX1E&br@HD>J25@|42iSaa z%G%-h4Oxdb=@wQC@Uf!16Nv#NU}LH@P$~!W3CU%mU?{C%g9`ve6nALLj2j>V3HmO} zEH4YqmOneKq#|k(MJGlxMjw5rD$Rt$wANEQ9?Y0)zX*ec_3JFvdYswY$FIGRHs*;) z=E$h3SUAj8p+E0WI##@>3M&f+WW4k29(QF$iAq0bDgmQfII4VC5y%}!SUvrMOtD|1 zbq#!jy7Y7Rxh-A+zsQm__(O@AH}o3d_AG>`hUwL1KSUW-ARg@Q_N8PQsQCNifRlp) z&13RU431i#vS$2g{J$Qm!RGq%z`M3med}TlVq^G+@N~C`NE#sAyO%~g*o9VTGM5Q4a{uw1?C=~Wm;Jbog zIAC_7ipbpXgIVU~24bk9*HBg$=UH1Dw&NI_vA_?s1n@E}KSTI65Q2)*_nJ$?9(V>z z0BT?9Ki&HLUVr&o=}UYPEcS_HSfqL>;PiaRKBS3RXJlD6UDm^>5VvDEk0{aKE@%0{ z8KsU}Dxe)-I$ti*IRSZr$Q200C#iu*1gFp~8a2h#qII2Pn+3ci__ z2N7iM(C+EASNs$)NkNwH0kW4Jul8>C{=_#DGG{T+p)Q0Tzce=_uqH&E;W3iu%zynMqJkfmh?1;7d5 zQls4Lr=kF*N2U!)Q0z+Y?>e$!u8dzGJ*2JW}6>BYZ!B z*2}a>s!dC)OW@Ll$J6eU2wSt-K4(h^D*Gk^dlaW_Z|#`6uH$Hdq{IBmoX#i}bY=#* z9uau$scw)oOSTF5nlGk~d>Hq_5n?}aYA^=BSi|8-`LdFVpAj*@HYzGp?z9+)YTEq_ z0H38ZG=WMhZ!bDgURVZ(tFBHYbCLsO5U78zKE}>%(;NHa6G?O!eZ!q$z_!({Hq55g zbQEP{od9_k5jy~o_N1r-yMr8;N@4Lj1>KNLD%ERPz!y4%yYT|i4%@8Ib`Ef#{xiMS ziOsJ21Dbin_}wNR*z01RXdm|_1-GH)mH8)7++tX|PSz{`4;$Qg;#{Tu7Mf34l4%wN z)Az0k6ftpu$nSWkE4Ct$y=rr?SqLs8_O*Y&huKs$)2g@D^5TJMga2P!Zygp@+qI3$ zFu))U(hWMKFm!jP3Q9-~4N?M90y=be4UK>T(%s!%N_R@9H2B*-&-?w}`~HsauQ@n| znZ4(_uC>;=&ULP}f7Lotyn$faEXS$`!WmQ~*2$xGEkzZq630hK=X$NCRef3zf$`k0 z5@GG<{@9h;RZg!WZM<%PMSW$YnpxVg`@PE_9W;0rK*GK|>pRA!>kbG=m>7Q1yoeNa zix%N6dqtty!^In`gJt&ClT3B8rI+!gBUp7B@dZUD{&g+qM_v%g^v49rHkjD{(Tn>1 z%zW_vAD~n8&z~btGpK&wGdKt)FUuNd2#qsa7NU_*yBue{$h~EeKvWHd# zgVubTf@!_pymUuHOKPP&y~?^tL(b1^RgohU+iWgevbWw$io*MtMeG|4yaLD620tviB~~d-q+GbkJiUK5yVI z)j<2%;C6Ui%I*i0+J$Em4^4_LYClZ`dZvy1Xt<^f^ZW{{5r!Cx8f5QBesy z|NR?Bsj8vjt;I+h%ik)w`Lux>wUgc6RPkw$#GTXwfRYp)9FC%G?(&O^6TB}MwIjtY zbdrT#-u1Ys7wJ~Ym$W{71oFpGMZYGX;PZ_3ZUw{q=6pxyaJkMg=WdO(H9E=gqf$d- zV~{@9!xd1OWp{CLY1c$u&U9bHyatjXD8S>A36kD%JFdwJJzTACuK3~MX4EVT*v`-` zU-by&=H)T1Q!w>J(KUD4Qs>B!84Uzziy1Ay100F>K4#jh1+`G;JQexAW&^@hm(1jDro)pXdi}=b!(w) zwnkV{cxzg3-ppQzAGe_biamAA<&0kf?g%lL^G&(twv7%f&Uiq1HQVGz{(jl$;gr_fg@ff0`qzOZ0rLdpK2K(5`k7 z8YOmttX*2+Hy?O%OQi=y<)XA&Kp`e^-Tz{rhjo`+rs3%GpIh^jweA|cE@iz|LCkd_@QM_;CguJdg!n(C)Fts_MmCY(~OLor>dD>TicO%!#rthZ!QJc+zY|@Py#w(%qK8V4>k}R)_1)*Mmj_j8UQ{XghE>=`0|t_~q8T zXFz_L7>AH@#W%EX*nx6dXO%U*zg+Tk@BsGMW-sQI4?|iofH_{P3$B7aeis^1izwW5 z0@5B!-9}ftr|r4k91Xu1lDSOf_dj?O`~l>QZ`&*C>u1@p8J$Z<2|>EaIdzm6tdg z*D|2LIWPkg@qdK?{vfWfwB_wD$` zKhq{4WsDwCXJifnk#QSWdR;r|*4QQssQ*f&m)J4lY`Mz50~C&@;!I?DB}1yp@0hWD zl$qdL#dP=hoRg*T2pqdTC!(^$Lz*4_xbMuSR}#CB8Nbwzn=2w}!@_Ta7>rO_Uw&-1 zpK`xmU;WKJOHihuPH5ful^athVf>EQ04`3NfZYt##?Yi!8UY26`Q$gXrPC7==_|3n za@-O|_@_-aqZqsS8gmFqyoXcR$DYeFN|~@6g1Tv4wW{`T5^Ek$;^HPbE!}<>j~H$cA7@Gg0V(8AfM<3T;oxN|f8EP~lB0H5w~kwg89DLVXBHsSX>=PtSjT=VoAbV58l^Py zj3(RIzB?POox70@=?z{OA2+U6D%2{j@aA0j^K05)>~cYKMD%P(Cr*qp9l^D~W-cgCL1dWEkMz~T22stx|TRaWsnlR!n+66tLss$6&+sG2V zwXo1JO=E}B$mq;=jvPn2$6S+>Qk5hmFNPd`B5>XfXrz?KqZj4Xj#{;bcRx{!zG1AE zN9A|pwQh??5brn!qZf5xl5y4mbvzxP#mhCHM{wbup?!`C%#hWMQzDkk za$(I+aDyxSi%x~3z>*#XB=;%0g}EIv46-OH^**q{sE~%;12E25t-#9;hR<~z;N*wd zD|Rs>lgMdge`^*W!dk2G$1=l1zNGo$ZRsObsvALXKx8~xvn-^o*j6=_92Br8Kf7au zR2px+qQN$eK{THZuxXj9h+N;`BfnhBQbv%IISMARA)as5A$3hz4^&cl-Nl>l4;*Ue zUi9gdgRZ}LcRo!x4ZHzyA6X=XvLTE7b(>|@P-9)zV zGteB!()uHeYl^?X!15pzzxO!NWrAjd3O}T~1{7+%w&M}zgk^?j91hFl=0h@S5W=#M zK*V#Zcr~oO*k*pU8ZOGxMUtDJgiz+jcdT6THm9?5cHB2OBk!~YZqO^ z48nnO+EGW)c@AWTa_Jb|W`x+yK=<|5hEH?|I^#QPN^cZ32B=p1quDHK{KzxRDk6() zd~!(qi>vI1QSsX%edl35T}-kLPH+)0IzXT{kWG}Inejk5nci5rtxJ6)D@LB@V6U`9 z&Ff&V#9SnBo{lPMo7g`iB=Y#}&-V*;tsdeg8CWM#44>5VjqIU>?pi%KIX;MI)DFn= z?EVi#l#b=BTB6fh%59;3R+|K6OhXi~%ESf81wO;sG7Zk}#1_^m#Z;p2D3uXL97J6; z7t|9r8*grDvV=6)Ro^8bW?jh>CEocWF`en5!MTCoHWVaoVtzik@+Y=nCwQq-6xpUo zr8o~bPdl3_qL!d5K!{UW8DQK?TXGKEKVhz|x*#2yAO-?*ST(7R+mNOJCa%(ed|Itp zwV;7_1OBE0nXV3`CzRhx1vT2uMzyE(6TWh&cLr+V4f#r8>O786cIl8x#lW;FI|w`z zx&H;I_{wmou7nR0H}p^zV{LZoQByPmwX?y;UuRXr z>zK&$v8?InUNKcEOH~dy5tL!jxVNbwSW1B#)r+ z5K%a8kGw@|^6&=0X6T0&A97&27p+*=j<3ofHCsC3i=*_JKl=CAUtWW;oh2bS6tGMs z(gR&pfWYy%J*c$=N)FSA0ImT4auSFd#W%g^cxD{KE5lDjw1k2EY+K$O@qUQ=ErC`* z97{xO4BGFBO`-et7Gn3@oA{KtXP|oZJ=Kng)m}2M^4gMwKL2jJ8A%-7Dk6( zm$JB?J~PT05o|7c8$mqQfup(NFab4K`s}{`<0To0F#ARM>Lk8`Q)Q{Vx=-BnJB|$8Re{f$rtyj~>E#M#^klVY=s-s)Dj@ z`Z37{B+nHBfKW{Pa2(Xp!rdZia8l75Ugv#zu@{`uX_0nihmw$YOO&<76K8#n*+i zN~t+7jk;INT>HZPYxqWQi`7tW5ZZCMY}-u3qqEL@vB}4FLAjTWYNJV%PHATPV|iBE zP~2npD*$CEsLMxVc(R^`W2X#2S!_5!J(Y9T$7hZVUFe7VI3Zed0)_)pZSEF4$so69ZCn-y=p>QB)Per!rh{|*Jn}yB?7+6t(Q)CVUC3sn zy0sunp6#Nf-m(~Kv%va`8b~0@f9ZDZwyXsRm+jcV!<(;yv7t-^S^K zLfdJk)hq!&@SL2_h6VK8mRp+IV#rOYa0H8A$KD->Z$l&$Ajk{uMBhEcHFWLrV=iu`aqhl){5i>G^@+ilHGCaqPFOiSt^m;164 zx4%8~b=`z;drqgH?FBz;P?<&~KxSn7BeVG6C5A{kZngs+qn!0KCk4a_rYc0m-j0BC z$My@*yfciSahso4N)w;jPpoloKw(Wob?LO9ituDa$WNf;njEbE7F5F z?7y6tC>|U45Ao)1Ax$G=fX==d_v^ba!*oMclr&q}{#K_l!954f&RNp+E$3f3J*EXT zNOoU*?q;Ok3JU=HoAinCT(od=2f}Xu^6l1YDIFdW#Gsz1eR!XaQRfq1E%CIYPv9n( zaW2AiFh5Q9M4L9*aUXhlCv4zv?4T+wbU4%EhUkp;I8Q3*_t6sZ^R}N4O7C|1`_2;$ zCXrfC0-$WQn3mb51R=!bO_t{Mg$f*A?%(qy?o9^Ts${yg=A3=~IQ(6{?O&H*XUO>G zAhigN_l5h<@a6fqOxyky-?V2qlzp!O_7l+!h3n~wn5h(wH|YJEd>R%AsR^))JFn(N zNfq@DRm~JB%oc7UEK|0MBv5R_*MLojPB_W6ha!AljxxCND%4900a)2twQKA`4%0-P z*>Z6LXdTQf6!tLSBu2@>(H*UQ_mj1>Oxl=$7f6+X=P;a9hp)F7;`fNm`lx~fti%e62D%VWU8NI&EHVV_P z&c+*gj3|Tq{&H@TCbx29N1d5T=X#|mIlpzWbe6mx!#^V>o39Yt*1*Z@q54$TI%QC* zEgyAjON`bG*?(!YoMIcG>!F|Bgb{uu?fpFevXnPeNCiAj}7 z;&bpYA>a(2!WVmflzC_tE}A88=gOrq{+U#u=rOG5J+J=IsG7m`=G!of*A8O1PVqC4 zd0_VW#*+Jh!*3X5D`v>s`PgOUSKF~NUF4dMXHnU;nVC>>Y$3`3K~+HfC}%)9{e6#* zkRJV87+4jO?parNr!3c|NP9qIznJ6Cy!J8!kb^l(YIfB>MWK&4fGpgwFE`^eOlci7 z9<`t*?Pz&|_;|w{(%kM>ht5QhA_ITe7SZwA)&0@u z<%{RE1@Ch+xCp-*vyh?yb7Tp(CZX4Gm)}3N^%%OETQ0I3PO1KCjWf9HPy3@htvstl z&S&!-rT!QXFSvR=MD{xXNM}_!+bKHs_IRqO=NzC$3p1Aq5}D2$q@O-*$3-s1NyB*wU_4C` zQ{U#I%R=NS6J5vJmBf|XDhOe`hLrrZvx2DpgIN~6DFM+E7qXAl{j87QR$ni|dEv@! z8tdOTKD*%PK)bs2QRR1Ydk51=GhRdwu}i%(cm(AXlnf>s0O)#sAl1`iiOcP44EN9l-#vVoI?)?p(J{Yn!P%sF^RKyl0N!--!;fpJx_XCw_~2^3_U_AwuQSE1V6H@tM%lM8vLrk1ZAD=KUwTW0*>$=dTfagY~z#E2Yl;y zfz0gH-qUYn9u0RMhgm3{@jn$Ff)!fLRabh%Qu#B>(Tw{o91*#i7B8jG`SgSvENh`afXAu_x zUEKU$>kKYI4{D*3n}jg-H)F0T6jI*>p>*&IbY~(%!tvnWVafVWWBe^bMAVY$Y&Z?m zo=h2se126~4uu`ndtIQ+j|1&M{Puh{&2x6T&s(;lyn9gN#A3u7maBXs)+4VN@_|&! z{3VE=eK=!47Qj0*U+Lg%T192{p9yLzF=yigNyTo>%j<0yNDYCF+x%w8zUwO6ftjq2 zg+YV;BhE#xXkAk95^VzRO`cjVO-QE;0cT!yF>&jsCB-6M@t;}-ifdD92rQJ!#3P?a zIkiW$g@+L0KEn5}Sd~lH-Sd}>(tQa7U!FU9tg}D5To~fD#8Q3iwJow75-v?C^^~Ax zhLerVDrqm`n!&~@+uvbL6RJoyw_rY)Xr8-1@e~IZs0#mtv`drxkR0=;4MRNICrBmA zv;YDO;;qX5@%;Ou6;E1HnIWelNj~Wk$G9X|P04Rl{gj$pQ4c?R0CXbs=k6@-DJ2_6 z3ae!cM)D=vd&wD#O#Yhe?@3wq#Zry!`o6Die3UN70@HNHV)t?Ad?s7^ zRFz%h@@+Gtd&D^>9i3lrjQ86D{*YvzkKf~V2YCJb5uWr=l_&QM&Y~E!SxQ)@id2zm z!!JwzX<50Juj{N$=&v$GSdPwapAQDf>v9E|$S07NzKDK26%>T(BKJrN*^`ECOsh%j zPd2oBJf@HW4@7JqvS6U(sN2Vx`EN6~4~U)TlWu88Tk(GSfujl|HboKr%}8yT@g#u; zNq@Xzm0eI^z4B$ZOxE4Zg8X!?>Xnr!{(CyLAw$y&MIkz~XhN{-XxDnJdId~tl_qUhP{$7TbY4JTll9MLakqD4Lmjz zV$8EXt+WYeGuv%ePaBGqk(#_V`rtkhl(W{=PB;Mx>3BM6U0@yMdDJ}pF1At)8ZB;0 zplQ^@YZ}%-@GA*9Gy#pq>5)lua{BY$q01I4?SV)EOaAroc74Z8cll%g@cVIJv+$#H z$0pO$5>&k752Jz^m$nS0VD=eMz~|BrAo=Bj?}t3zeHXbuVw}@fKHv1Awan#2P+W=O z2mLm7k+%U8m@ZZ(W0y@Y#DEtre>hg*mmM6WpAH0)%$fx!dE6!Fq+)cGG@DIhcp{I;?+R)?oAPUEvflj^wJbNUp{DjZ@nI7P2O|@tzMZk6g zw8T_PRjoF7Ynq3fgK?fev9@K5%w!BEKHRgA1$m8$XE^qdU(^#eX%!tIv8B6cy^h=a zYI2$hX2v0bOo^}q7ifHoFnDn1=H;>e#8EujsjP0wkbfYS>IFRTS5LGEt+)odczi;+ zTw{ZzgzJ6#&wx7c<$SkGuM-h$7wh5NQkzq|=6L+KB{Y$&HGc8uX!q9#QOZRi(Qf3z zx%iIatVn#MvjfJClTsxp#KH9Ao1u@PQBcA}9ynMNjrXLFN#JdVC~)tB+12zo#kR5vI1C3v#cK;-3% z7M>BVZROo5sv>=$KNj_X_GjcqK;pJ3?Jcsg_?H6MJ;ToZM_7k%O%9%Mq|!VAGtV3_ zCNhhUyhKvyJv#wE<3{q3GuCr~w(Zr|z`3*J~(l;-Fu+lAg zwy#RSQp>2??u6djSpI95tf|K>NT#l3B@4_RuC>~#07Bux6F*yyF8f{u9ePlY!I+Qg zcnZ?7rE&`owwb}86uRtty2DS~7&XH@hA1z=>ZPcQ@2zg?v|7=5gu)on(12;d0OR{o z04_S_LTW!&ZsRrv$RrsZ1+2gVvP!>}ws2O%MdWjJLRLUmFKwB#Ol)yLxx5bHb==dl z2L-la&ej1H-Tk*T0+W=rclB#0?`7Mh+>LR_ziG^p+*>lj>rYP&+&YM%rdF*m@?7?d z_M^u3w9cXtArSpzkiO1UXdT~_^<3IH^Q2RbkhC8G6R_AZfa-YJPE3)zBnSH1%N)Ec zjY)Q8vKx3QRXHLb$|FFz{@gr~ba1cB zpY*K7(jx#Nb{h1weA}o->~L-4pv-bV>x8j6A7>QMC%$5WYNRn~-B@v`!KtV^9P`4pujT(ep?658%N!U|4YT7igbSui~KUusG>;jYx?h=NFh{ z>BZQ8UDYpu4B7A>8&Sdac`iEGC)vS*maz|`RQ|i(uUrjR1V`a^Xf_~xugA|!Am~Vz z49~-Q@)6Q8WdvvCjJU7L1K^}*|K*D5)50mS%O}mZcTJb`&d>{PAd&;^}vA9Wr7;n z#p4`O8s6(Zdz<>GTf4&qOiyih52#pPxfvzLv)1;EEFZ6DOK8nAB7QQ|FGK?VT#X zzQ12f#&!5KWE*58-Xu$>Ftk>o#bzz3i6|E9Eh`(6gpcL|{eXHt97=Qeuqgva>^w@< zZ9t~c^bFSSd?@0}!_iOh&C5sEX2>;r3ibMMb-{U5%yK#iUJ`)sTlTmFciz^Q6pvDT zMSaDvZ<5?XO$CWuX+kLmKV=U^@bU5K66M!XJV~`qlt9wQ(z=+A3%Ou^&bF_`({PT- zAzC4LIm=@MjFy@@hwUz{cnsC*V8{wl)wFYi*8^KcY=tIhhGr_;Xh!2_tL#@lEI3r9 zL*BbXWTWK}&Y&W;xUfAD4P0&L+GI}^u|NKSHesdyM9@>0v@K?@rA@4gKmmf}={@Tnc8%o!1Jsa(VS!$b=DmCHw=zX3?dw+2Z7?M%Rv)2s4v}5%>qz>eT7TNr%%nh4VH#Pg zu3)1MhM0gw8M$LRJn@Tl-0uSSXh$ZES0fij$xPS4FG}36HfK9r0AvZzC4ikx@f_H>n~Ut2lP2!PmBXG|F|@tPjE;cb|xq6hM#>lt#}rp)Yv5 zlK6~zl)Ia90QRFY;Y?8lFnFsbm~Lwq$kYETd?LpSV# zs3--fP9Pw3R@{E%e3gnzKySOcd`k)TkbGq%YW5};K98tQIXaWI>&0)E~p(18GM-UeYPruX-Gc@&G|S+s?=Z28`U+zNGGsg@2CTw4=UrmkRl1{4*cEyb9!ca{9uhsMH!e>4@oQ{4@tJ>*59P7~t82+0&B z(q9yFbE&S~%<51(R+R2C;rSqY~Bl(k|Q$eREOs{}?(ZxJfB`Dj*=hyiIVFOWfs<+(D~c2kD0#?S`VOno-;#rg!F&RO`nHBTLr(%n z8~0`-;}f_wFKjOv>0}MImze2&nh1*AljRAjY&WqCJG(`Fg=pWe$Us_tT&s%@y_UfS zSPcGIg(CgAcs$$oc5Q_TuxXmEY|QHy7biVr(ky9j#R!?Ni%fG+g4wYxhIlVk1)HyXLK zY$*Sh!OGlEOBxkw52(~#hqv!X4Vrcy}eW2 z3PLkk1FLd-EKt!TzNA`f#TRv^6{05wl ziJtudU`3@SLxnH$i z??39Bvs&kSTDZU0ET!_w+YzNMP9`1nlE>6Zrj)GI{^y;)00Y>j+1Ng+$m6T7p?)pb z8%CKTI?Vz+-0CYDZ`|i(Pq8ay?Ntc44p(h`zRSyODdD1J>peugLM64`up8)3)KM`nSG2vb0x$=+C`D^H?rIlp=q zuQ>QWKlMK^z-ah542TF7ge$tM%qqsy=-#qCpNY0X0cqJaiCnn23|<^c z_39|M>6cOm=A_W!qV}Z({GWaO`(vL;W&z@`Hziyh57`E8iI&qfily`@v#R)=VD{gs zZ(j7+9Mq|sW(3z-#&wbXKz!Ns{V<%u)om-IabUEa;D`84xza<+3dXOpBG7pXj7zv?U{$po|+Bc6bFKGbzkcjBXg%B%9k(+`K>anGz7NU z=_`BV6K&zeiH#(t!-;A^9SxqMJ2<(NjAE1mjABU-V@}dsn$fwDCD=tfDg0jzEk@JW zC-Z*BrO+GN;yfuIVT(nCv==G!+t~<+Gu=yJB59Li(|{Wz)Zu&ee=Ov$p(q3D5C%AI z_&1Nr+~Qh!{;HISJtD%gtc#+#vAUCW*Id;n7#D6HTF>Atl?{R_=B+tYpaVp?a2=2+T4IWlldwOh<*|vI%-<~HOK#0r4Jz^j1Uv) zXO_9>n(#AK#N3mKl1sr;UX_cT)~B-tUXMWP4f2Bz(vV(fSNmo5m+he2F@>Jk7L+eX`3B zX19I`N_a7~LHfNv@lDVDTC0^(OI}%@rE3DhL7K~>fNCz* zx;d`td$mk&>MT@(ik2ogIBO20)ea1{CZDGYYh+#=8t!m|`#xcR;Zo*J{Sd)Lng(lm z`)+uy=&f^+z+6#s+`A!5-yx(9W99JWwFS;}M}bQPTsd8p+tF(^+k%Axg-4ikw$7!| zmZxO%3`e=`RE{I+HXgBwlCqTjUpM?;--Jd7n}d)=XY0;=c8n8k{Hi@C90Be9o`OE@ z`4vLK`h8)03?WBQ<|JTL4w<>Qz}2-(vwcDV;LK3C?`;C&*&~%4)_?f+mr{^$dC=C1 z9a4v_k?(nQ!f?8UH`$iA7u62MJUE=sSa3#Xa>8OdRA}h2P^2*EqU{@v&_>1y!@>OH z_ODl$6EP9RzX~m1_a8XCi|*(9U_nG9E@jqR{H>`VllaUnjYVnMET#ubj>P+$N$6L! zSO4($SyYg43((eanuKM8YKpi*#uA(#PYVQX7Hh8fs2R3jW~f4?96+l;jpFHLlS$># z%bzSNuJ-gs>oXMRw#G-DBx(+@76W(KmrIo4E@h6J~| zZZY5oPfbm7{#jaJTQA13(I-=;#rthuT`sjyP@+sSRT(5LJbF+l+rW<;i5MvGm2NFZ zrLlBH$*hyiwXi@VRt@{-*0mio!V)25zak4u63taylbC8>E9q&^vB{GZ&*am=1Kq1_ zZQ_1D?_U^TI*7=LL_9;wYC0JY6M||j#abQyZ+Q574#pwje4wppr2WP4oL#Nl>2U+i zdiq#jv8y-PX`votqHv@cC@?#>Q*g%J$vdoo@zlfGkFacFt+0UYADf>A2?v3DSW%qS zYOR)R3sQw%WX!-53v^T}$EDgnhKpRk+2dDEbqtUI$kUnk^u^czLUIxj%DSaDw{OGwWmsZUx9h)CKN{hFgX-C_z-;- z*tV>n35gSfXV?Hd;-o;nrjoXNJUHShQCEcC+l_u4z2U@xO-$vs0l&tr@Bc6a1Ov<$ zA28=xoyt7EzC+J_mdoP3r206v&x~8tcJrHGwE2~_OC9;Odw_T!zG5@=?*(K;MR^7v zKd5qB7ft5*{H5q>jAlG$zB+ZXf;pnG;)P)jQ?3ScY#W#Q#6K`s>bns6Y}P zb#mg@c@~udS}){&+?S;{ZjRj276(_b8wjd!h`A(FHGaqoWqwhIFY&41P07bkmHW(< zTZ0LOv5=V$>nfY)EDVE84HI&-h2f2TPRVxiNy?@F*V?`X&o$g^#I`y_4<61wO}99j zbqZ9bgYz&=_jfZLa&FU9=Y`YGY}BOX%Wg+Rb%tf?aDKM4XPckn)NTO&kI#b1XMHHK zl}R8NX%}jW_6%MQpHTew8g$FA)TTXWm#B#HZPNeQ+8p0Dmu}Kk;YdIe= zKh2otV5Xe<+IPiW$-lqNX-_=oSl98MsO)3q$lhzyckV@8LaO=a6rd2oGWz$w@cs!2 zp7=O1lsS5qdfjjiI}M}inF*R*uQI@Kh-@~RYWJB)sTz}1OL$o0Uy;3SxZTKR66ixs zoi`U;P{k%iF}0q46(_sIqiYsQZybRB3?9IcfBA1qdqVA_Fm)L1>|ns=R%*}rajqS# zqSiLFG~je<;~J-;zGUQ@Y5If7luopvSVg?qDZOdp)!P?IolnPfAw- zKaQuOrt~i>%IbsM-AU+eO0U;EbQdqmsS73OvtZ6t$T{x|m*yl6u_(>5iH#c-*~J}+ zR<_p_b4KWz0PnM#nqGa%Ir%7q4VdRVKsjo3@wWUkXot3yF^t)(&bNHrmcO1eNX_l^ z;gFGsmelaV_qC_pT@y(p#lIyA`3EwmYm^=J)N`MJZGFdeGOVWD z)6L=&s=0uNChVpk0KzfbU%&YNz3ibYOv)LKzthsiY@V29Bo%Kl%&=X2Rpm>ZifA6GOOWV9QjTzRb;^g&u>iB-W99!D zWF!glslZyItp?&3jV`CZ8ae{5O$f?zE{*8^c++$b5QK9yU~H&xMI z-RlgMYoi#x;aC_rvYGP4Q2?sFRLnLs|27^uxvc3r#k=-Km>&9Zvc*H^Z z8SnKe%iu=5-!^IWryQ~Jqhk9Q+R|BuMYOsG_IQLEKMl^Z-INElohTJad%f{KR1-u( z$r_RWZ}YK+*zWvF7$qmXxc_WNpr|_$&54rAU7*DwXfGjjgzVOk_|nC1qr}E1y;l4C zqQ9F>pie@;E@|U=(jN*~-&E?baOvcbaB1MGncD-gf5a6XCVzm5$Zg->s)$mV*h z5!+{PSI-YmM-y_vMRQjPpD!uhk~o{!A6cjAf=E3wxFat#3+Ea(vlE6-r9HK?zi;KB z=)FtaGPbYF3fC)VK~ecJM4|hy@6L)Ps53V&yla)Kdz|#stoHG9H9E)f^rlbM6ik>?Yq@9{oHD2g*KqJsuHE(bPWPMY<%k(c=-(TurV){oq#l0Zr5(5Oe1B`uK5kASbQ$!hp6Du+aU*Ip&)G_Oh&? z;&kuR0FkM|%}e{l!=+D-VB3!}>0Z13U!4wPJe3X9$i3o7s}pm0%GK9X*Cz|7219?_ zP1!Xw!ga`6eioew|BNnGBCZ%=)58MfErF4S|GofO0z|a>i{{8}r|{0q6hqjq$R?J9 z5$jo=HX^L)Rfwx2+i!i(T3y;Hc5gmDrFkpmd< zD@}?OK@qQ_8IuG+C{S)l}PdN9%1_KQmlG#lE%bxrXi2?)~91!pf zIlsbh|Hd5u#o*|`d)##6ME~B3|NIq?4&aKf?Qb;S{A)%3OU?Yn9OTizF#mZf{^#1t tehA<`SH2hg6P*9&Y6ymCpSC|3EDzM{@jBzrfQL{%Qj$}bEs=)%{(tO1$~*u7 literal 0 HcmV?d00001 diff --git a/hello-arc-windows/src/app/views/home.handlebars b/hello-arc-windows/src/app/views/home.handlebars new file mode 100644 index 00000000..88daf470 --- /dev/null +++ b/hello-arc-windows/src/app/views/home.handlebars @@ -0,0 +1,16 @@ +
+ {{ message }} +
+
+ + + + + + + + + +
pod:{{ hostName }}
node:{{ platform }} ({{ release }})
+ +
diff --git a/hello-arc-windows/src/app/views/layouts/main.handlebars b/hello-arc-windows/src/app/views/layouts/main.handlebars new file mode 100644 index 00000000..b9a714fc --- /dev/null +++ b/hello-arc-windows/src/app/views/layouts/main.handlebars @@ -0,0 +1,18 @@ + + + + Hello Kubernetes! + + + + + +
+ +
+ {{{body}}} +
+
+ + + diff --git a/hello-arc-windows/src/node/Dockerfile b/hello-arc-windows/src/node/Dockerfile new file mode 100644 index 00000000..e28bb38c --- /dev/null +++ b/hello-arc-windows/src/node/Dockerfile @@ -0,0 +1,48 @@ +FROM mcr.microsoft.com/windows/servercore:ltsc2019 + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + +# PATH isn't actually set in the Docker image, so we have to set it from within the container +RUN $newPath = ('C:\nodejs;{0}\Yarn\bin;{1}' -f $env:LOCALAPPDATA, $env:PATH); \ + Write-Host ('Updating PATH: {0}' -f $newPath); \ + [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine) +# doing this first to share cache across versions more aggressively + +ENV NODE_VERSION 18.14.0 +ENV NODE_SHA256 2e8f00da72f6bd993e3b980ff844b948baf936e1e67e3694a7a3e5f6f7c9beb4 + +RUN $url = ('https://nodejs.org/dist/v{0}/node-v{0}-win-x64.zip' -f $env:NODE_VERSION); \ + Write-Host ('Downloading {0} ...' -f $url); \ + Invoke-WebRequest -Uri $url -OutFile 'node.zip'; \ + \ + Write-Host ('Verifying sha256 ({0}) ...' -f $env:NODE_SHA256); \ + if ((Get-FileHash node.zip -Algorithm sha256).Hash -ne $env:NODE_SHA256) { throw 'SHA256 mismatch' }; \ + \ + Write-Host 'Expanding ...'; \ + Expand-Archive node.zip -DestinationPath C:\; \ + \ + Write-Host 'Renaming ...'; \ + Rename-Item -Path ('C:\node-v{0}-win-x64' -f $env:NODE_VERSION) -NewName 'C:\nodejs'; \ + \ + Write-Host 'Removing ...'; \ + Remove-Item node.zip -Force; \ + \ + Write-Host 'Verifying ("node --version") ...'; \ + node --version; \ + Write-Host 'Verifying ("npm --version") ...'; \ + npm --version; \ + \ + Write-Host 'Complete.' + +ENV YARN_VERSION 1.22.17 + +# "It is recommended to install Yarn through the npm package manager" (https://classic.yarnpkg.com/en/docs/install) +RUN Write-Host 'Installing "yarn" ...'; \ + npm install --global ('yarn@{0}' -f $env:YARN_VERSION); \ + \ + Write-Host 'Verifying ("yarn --version") ...'; \ + yarn --version; \ + \ + Write-Host 'Complete.' + +CMD [ "node" ] \ No newline at end of file diff --git a/hello-arc-windows/src/test.ps1 b/hello-arc-windows/src/test.ps1 new file mode 100644 index 00000000..8304f39a --- /dev/null +++ b/hello-arc-windows/src/test.ps1 @@ -0,0 +1,33 @@ +cd /workspaces +git clone git@github.com:janegilring/azure-arc-jumpstart-apps.git + +cd /workspaces/azure-arc-jumpstart-apps/hello-arc-windows/src + +# Build Windows Server container image with Node installed, needed as Node does not have an official Windows image per 2023-02-08: https://github.com/nodejs/docker-node/pull/362 +docker build ./node -t janegilring/node-windows/servercore:ltsc2019 + +docker push janegilring/node-windows-servercore:ltsc2019 + +# Build node application +docker build ./app -t janegilring/hello-arc-windows + +docker push janegilring/hello-arc-windows + +# Test locally +docker run -d -p 8080:8080 janegilring/hello-arc-windows + +# AKS +az login +az aks get-credentials --resource-group aks-demo-rg --name aks-demo + +# Test Linux image on AKS Linux node +kubectl run hello-arc-linux --image liorkamrat/hello-arc --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": { "kubernetes.io/os": "linux" }}}' + +# Verify app is working +kubectl port-forward hello-arc-linux 8080:8080 + +# Test Windows image on AKS Windows node +kubectl run hello-arc-windows --image janegilring/hello-arc-windows --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": { "kubernetes.io/os": "windows" }}}' + +# Verify app is working +kubectl port-forward hello-arc-windows 8080:8080 From 1623c9f45e8e4de6ec3857815962ba3f983ef32f Mon Sep 17 00:00:00 2001 From: Jan Egil Ring Date: Wed, 8 Feb 2023 21:58:44 +0000 Subject: [PATCH 2/3] Changed registry for application Signed-off-by: Jan Egil Ring --- hello-arc-windows/src/app/Dockerfile | 4 ++-- hello-arc-windows/src/test.ps1 | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hello-arc-windows/src/app/Dockerfile b/hello-arc-windows/src/app/Dockerfile index 56acc6cb..9f6800ea 100644 --- a/hello-arc-windows/src/app/Dockerfile +++ b/hello-arc-windows/src/app/Dockerfile @@ -10,8 +10,8 @@ LABEL org.opencontainers.image.title="Hello Arc!" \ org.opencontainers.image.created=$IMAGE_CREATE_DATE \ org.opencontainers.image.version=$IMAGE_VERSION \ org.opencontainers.image.authors="Jan Egil Ring" \ - org.opencontainers.image.url="https://hub.docker.com/r/janegilring/hello-arc-windows/" \ - org.opencontainers.image.documentation="https://github.com/microsoft/azure-arc-jumpstart-apps/tree/main/hello-arc/README.md" \ + org.opencontainers.image.url="azurearcjumpstart.azurecr.io/hello-arc:windows" \ + org.opencontainers.image.documentation="https://github.com/microsoft/azure-arc-jumpstart-apps/tree/main/hello-arc-windows" \ org.opencontainers.image.vendor="Microsoft" \ org.opencontainers.image.licenses="MIT" \ org.opencontainers.image.source="https://github.com/microsoft/azure-arc-jumpstart-apps.git" \ diff --git a/hello-arc-windows/src/test.ps1 b/hello-arc-windows/src/test.ps1 index 8304f39a..ac8e98b0 100644 --- a/hello-arc-windows/src/test.ps1 +++ b/hello-arc-windows/src/test.ps1 @@ -1,5 +1,5 @@ cd /workspaces -git clone git@github.com:janegilring/azure-arc-jumpstart-apps.git +git clone https://github.com/microsoft/azure-arc-jumpstart-apps.git cd /workspaces/azure-arc-jumpstart-apps/hello-arc-windows/src @@ -9,12 +9,12 @@ docker build ./node -t janegilring/node-windows/servercore:ltsc2019 docker push janegilring/node-windows-servercore:ltsc2019 # Build node application -docker build ./app -t janegilring/hello-arc-windows +docker build ./app -t azurearcjumpstart.azurecr.io/hello-arc:windows -docker push janegilring/hello-arc-windows +docker push azurearcjumpstart.azurecr.io/hello-arc:windows # Test locally -docker run -d -p 8080:8080 janegilring/hello-arc-windows +docker run -d -p 8080:8080 azurearcjumpstart.azurecr.io/hello-arc:windows # AKS az login @@ -27,7 +27,7 @@ kubectl run hello-arc-linux --image liorkamrat/hello-arc --overrides='{"apiVersi kubectl port-forward hello-arc-linux 8080:8080 # Test Windows image on AKS Windows node -kubectl run hello-arc-windows --image janegilring/hello-arc-windows --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": { "kubernetes.io/os": "windows" }}}' +kubectl run hello-arc-windows --image azurearcjumpstart.azurecr.io/hello-arc:windows --overrides='{"apiVersion": "v1", "spec": {"nodeSelector": { "kubernetes.io/os": "windows" }}}' # Verify app is working kubectl port-forward hello-arc-windows 8080:8080 From eac081d9ff7be7eb8edf1720d347eefd6a8fbe10 Mon Sep 17 00:00:00 2001 From: Jan Egil Ring Date: Wed, 8 Feb 2023 22:05:34 +0000 Subject: [PATCH 3/3] Updated registry for node-image Signed-off-by: Jan Egil Ring --- hello-arc-windows/src/app/Dockerfile | 2 +- hello-arc-windows/src/test.ps1 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hello-arc-windows/src/app/Dockerfile b/hello-arc-windows/src/app/Dockerfile index 9f6800ea..b73ef84e 100644 --- a/hello-arc-windows/src/app/Dockerfile +++ b/hello-arc-windows/src/app/Dockerfile @@ -1,4 +1,4 @@ -FROM janegilring/node-windows-servercore:ltsc2019 +FROM azurearcjumpstart.azurecr.io/node-windows-servercore:ltsc2019 ARG IMAGE_CREATE_DATE ARG IMAGE_VERSION diff --git a/hello-arc-windows/src/test.ps1 b/hello-arc-windows/src/test.ps1 index ac8e98b0..7d447ea8 100644 --- a/hello-arc-windows/src/test.ps1 +++ b/hello-arc-windows/src/test.ps1 @@ -4,9 +4,9 @@ git clone https://github.com/microsoft/azure-arc-jumpstart-apps.git cd /workspaces/azure-arc-jumpstart-apps/hello-arc-windows/src # Build Windows Server container image with Node installed, needed as Node does not have an official Windows image per 2023-02-08: https://github.com/nodejs/docker-node/pull/362 -docker build ./node -t janegilring/node-windows/servercore:ltsc2019 +docker build ./node -t azurearcjumpstart.azurecr.io/node-windows-servercore:ltsc2019 -docker push janegilring/node-windows-servercore:ltsc2019 +docker push azurearcjumpstart.azurecr.io/node-windows-servercore:ltsc2019 # Build node application docker build ./app -t azurearcjumpstart.azurecr.io/hello-arc:windows