From f2feaef243fe81cb437d430d449cd4b2d1037db3 Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Wed, 1 Sep 2021 12:25:49 -0700 Subject: [PATCH 01/10] added pipeline root doc --- .../components/pipelines/pipeline-root.md | 65 ++++++++++++++++++ .../v2/pipelines-ui-pipelineroot.png | Bin 0 -> 30034 bytes 2 files changed, 65 insertions(+) create mode 100644 content/en/docs/components/pipelines/pipeline-root.md create mode 100644 content/en/docs/images/pipelines/v2/pipelines-ui-pipelineroot.png diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md new file mode 100644 index 0000000000..efda5509f0 --- /dev/null +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -0,0 +1,65 @@ ++++ +title = "Pipeline Root" +description = "Getting started with Kubeflow Pipelines pipeline root" +weight = 50 + ++++ +{{% beta-status +feedbacklink="https://github.com/kubeflow/pipelines/issues" %}} + +Starting from [Kubeflow Pipelines SDK v2](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/) and Kubeflow Pipelines 1.7.0, Kubeflow Pipelines supports a new intermediate artifact repository feature -- pipeline root in both [standalone deployment](https://www.kubeflow.org/docs/components/pipelines/installation/standalone-deployment/) and [AI platform Pipelines](https://cloud.google.com/ai-platform/pipelines/docs). + +## Before you start +This guide tells you the basic concepts of Kubeflow Pipelines pipeline root and how to use it. +This guide assumes that you already have Kubeflow Pipelines installed or want to use standalone or AI platform Pipelines options in the [Kubeflow Pipelines deployment +guide](/docs/components/pipelines/installation/) to deploy Kubeflow Pipelines. + +## What is pipeline root? + +Pipeline root represents an artifact repository in which kubeflow pipelines will store pipeline's artifacts. +It supports MinIO, S3, GCS natively using [Go CDK](https://github.com/google/go-cloud). Artifacts can be more accessible in S3 and GCS when integrating Kubeflow Pipelines with other systems. +Note: For MinIO, you can't change the MinIO instance. Kubeflow Pipelines can only use the Minio instance deployed with itself. + +## How to configure pipeline root authentication +### MinIO +You don't need to pass the authentication for MinIO + +### GCS +If you want to specify the `pipeline root` to GCS +### Set up pipeline root authentication in pipeline level via sdk +`dsl.get_pipeline_conf().add_op_transformer(aws.use_gcp_secret('xxx', ‘xxx’, ‘xxx’))` +(references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.gcp.use_gcp_secret)) +### Set up pipeline root authentication via service account key +Check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) + +### S3 +If you want to specify the `pipeline root` to S3 +### Set up pipeline root authentication in pipeline level via sdk +`dsl.get_pipeline_conf().add_op_transformer(aws.use_aws_secret('xxx', ‘xxx’, ‘xxx’))` +(references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret)) + +## How to configure pipeline root + +### Via ConfigMaps in Kubernetes Cluster + +You can configure default `pipeline root` for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes Cluster. + +```shell +kubectl edit configMap kfp-launcher -n ${your-namespace} +``` +This `pipeline root` will be the default `pipeline root` for all pipelines running in the Kubernetes Cluster unless you override it through the following methods + +### Via Building Pipelines +You can configure `pipeline root` through `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) + +### Via Submitting a Pipeline through SDK +You can configure `pipeline root` via `pipeline_root` argument when you submit a Pipeline using [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) or [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) +or [run_pipeline](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.run_pipeline). + +### Via Submitting a Pipeline Run through UI +You can configure `pipeline root` via `pipeline_root` run parameters when you submit a pipeline run through UI. + + +## How to configure pipeline root authentication diff --git a/content/en/docs/images/pipelines/v2/pipelines-ui-pipelineroot.png b/content/en/docs/images/pipelines/v2/pipelines-ui-pipelineroot.png new file mode 100644 index 0000000000000000000000000000000000000000..40f2306fbc3a9810439bb1f963b44c3c84f05152 GIT binary patch literal 30034 zcmeFZbyQVb94-ooA}E4{C`gEO3P^W}G)Q-MH=C3a0SW0&>Fx%lL%O@Wy9Dms=Ny&s z?tSmiH|`ks>No>jd(FMpnscuC`)VFPDG4EDBy1!Y7#L*X_W~baVBo4?U|>H!d;pHT zgMDfZ1A{ba#Lq7!%+F6CWo@BvWU2=P^WHBa3PDz8;@PLZ`i)nwcwk`3Qqh|ueDX9`6yn?Pzo(Tx9sLems zU(G+8b-Gn1T~lGd+Acj)I-4%1h0(Q$l!|^p2@^uof#Guj8PwKZGOW_#fk7pJGe~aL z4)FQX-%s$-(EcWuYg*9d=}bwq|HTW#zUAG?>C$Wl5}CWXx!4zl3GO~55&}l znw*bXo8HRz-a_8qs%#jAPH=t+;a&9m)f}RP$J*$e{lbI(84=Bs7(Fh7N%vR?+HHrD zen9=AeoXV>lkj|Tm6vb3g3Mgail9O0^kax)rxZf5$xDx_ z#FT!istX)b862cN>nmYlS_DDzG7)J-zW1O_co6uNO&==#3sPXIL4D!A@Dj_Ox}iVSmhaWpS{m=I5`eY7v0D4KAd1TO_XWreVPyZ3@`H3V6}cbWj7>>-ku zb_zV%3p5@yL*%j-6y74qB3TcNz1==Z@ED|YOX1t%V|%|#uIx8>em_i8Pw^3xCsvbf zG%P~X(|vlD7wU*>O^|*2s+R>mC_nP|mCh+#5F(ps7w9l}I#Xn&Ysem9;I8-}@wTRf zN)ZmT$-?G5mJ2X`XO~YPdkI61^K7AQziPnjy6BBz(@}d+eESS7`yZvRm>i6j%k9D{-ixuVa=tiGz1qZff zXe#JbYMp7S6eWyvZKK*h_HE8y`e{{Ah5GVQlwWtd-29V;-g)!IPgeK`){eM!$g^1Z zzF70j3*Gw&2bl-V2YvhK@b^7m{fI&3n@6>NDCq6Php@n=75#=+mIxbN&F^Uo#^O6| z*5VjPkModo3GhdR|rG~keYW4KfYEf%1>!kN0L=2%=_T_LX1{jo zzAiyv4T=|@l`tntdd*GZ9-i5y(#5dCdbqWcyR5Qe(bbrNO7;okfgUSy)Q5Mh@2Vvr z={!k_ zKE<@512W!`{rHu3gm2gss~@Wso6ETM*72yWaJ>O zmTrh;tg7=o1#zNfMmJqJztc=6k9_9sh;8r&GQ;@K*)In2diFCfnH=7%#qH7UseDwL zFXJgnw&!iU-|4CKRc}C-&M@2fg>H3cNzdU4pO=r-qW~;>+F$y577_Y#7L1zty11J4 zoi)vu`GGOWQyE>W71R@>WA^oCwL3WMHtYp6>b1_NvR9f{)Te5v8n`cU1)lUgc^&j1 z2r+0R=-O7#iOdz}IuyOFbI7QENH|ln_epO|uTa9RWwE8O9qam`%hvlYoS%ys8Om|P1LeY^99%0dOtdJm2;0j_s-H7%lyLvzp6p)i&Mgzrsn0|&bnoT8(FgG; zME5@-$Uophq<@5V-wwX{2kZ}aFMJv%RVu~lXK;Mcuh{wVe6W2B9$(ub+6%9T<`7FZ z=QWRd+xf~gD|q8SzC~SlA&o(YYJ^7ax9y)Q&??0EE>Or>C`v$7=UH1`U^RB`)9zri z;O17r)}3G+mCaJyvB3q$tMgyywcTH$^k{4ARCOSehcc98l!}x=#F}WS=ub#ow0w$; zm2~`mwrsXYS713aUlF%^$#lI~sIeBU>I+p36A4WuttHtL!&|66>T)bRSN|n)6Nhmd z?n=It{VE&b1L;uekn-Tc2I2-OyojglkBi4UU$(z+rBuJsAXD3@vmWb`mQFToe2zwo zUTHw_8u>$Ti@;%m?wfAvT#BuwoGiKa63o*36P&F2tSUB%E0?P`W!Uwx^))7eyRm^L z560+6NAtW!i3_%r3mdsCuJ<1_A|vDY;m9znPwAFt>keJ@48*Y?mK`!JBfGAhsmV0B zG>|pA2Xsfe&ZRZ3xzE*(*qgMDTHKHKr1X*Z(eu%$D6Uky_;Klbh)+^UYPLshO*UD3 zua>`P$-LOvir-IL*u1m9cRnFMy=>5P@T^vTyGB)Cp~8aMs#3SIj3cYAzA0H-s5MGN zeI~*+f=F-Z#HH$5|O)ZtfcW zI`|8n|J0}4Pf!RY7mbvxuaYv~mO=R_+XLI#jZTJYgElswgu-5uB-~Bq0Y*!j)#;rh(cUxlhjo@4se7$9GhcQY zqEu-U>b6}jS}-poDsrDFs5oys2WgZx+SiSxRG!oNhku*WH%0GKWJY25f!UNmCr$tc&c{ORa-g&9pwWr0OfT{0I0W zh2rYBhraFjoN07v%@zU{By;A@nK!%Noomn3bW(JJxxcwbKc_v$Tkq>5 zk$3&!N`7m6S-zw)U+EjR5f;W5`I&JBDLDj|lo)pZ6lM^s9ge3S7RG8rOoNl!a8*S! z_PhIH%&fEW6PV$Xd#J_OACpaBWMv8SsnC)S6XlACjq=7~{G5NEFu=;g= zXIf{c!~4EK$_Mi%2g}O>Gt0|kY(x{VFl;vZmlxzpjQ74{$E3ne9U#wJ#BQA2$}Y_r zyovC@J-_-T`8?-^m8)A56#%>1dWypO;^HtA;P;0xaIk1F_rPzk;4h4?5e)o4zr(3o{xmT?=hJ8b>orXcHI?M>g=QnVzi{fuotJxec2mC*eP5uz}y9 zhiM53{yD|ggp*KFT#A6-!dj1jiRKN>8$vE50s;aKYh8V|4+8K0YYzU!NoZ(mYsp4S z>)_x(?TO$i| z0_gW@Xb< zVfnA|-4Fkt4ga~M;@?X$u`=Dg=L z9sciV{&N%zCl?Y2?VqW^g|s3wKnVlG10yWJE9(fmoq*sdJ2LtStKNZ^hbMLrgIDnW z{YQ;t$*HO1?DmCDJM|yc3e}1!{gJmZAKAA)AoKi~^*(IYxyQW$`O1=Bj6UpDm~K;T zqJi~f!5)`zLuv1%vxx3}{paumFt87KVBkGAHBYa^+*Vq$w2& z;x}aaEA)G?Rf@F*n~Wdjx+3DdgZtf)pbK1Hhm?HBeQOxvde})C$M{XDRKH>^(Rnh( z7tfejBz%0^iB00mbGoM8#@icj!6fT0^3i(dGw+S}e}{u0q#FLivnp1*i^9emdRP6P zSUuOPQ|dQg<7Av!Q2usXk=@e{EDz^qWM;+AP-3&*cvdFcbtzIyUt}D8wOae~4Dq;( z1jDV-{GH9*!Y5mh1s^Qa$ucAPd}T)Vy}F~Oqm#{%M`sfre?}9PED`=taK6HLqzhuK zQekQ|WnP;vyx;XM7;guDH{=z6{JiOSQ3|fzu=J}=+Qwgl?}A=#v>XUxsV(<%A9lR1 za5^z&pZ|EzwC&4_(~~icDe#OYf!K^CT&|ajaZF}SzuYp7M{+8Ln^N{c!rWd8 z=C0@rBdxu3m@;FYvS_?!I+Dn3GKFnAH51(yd2-{{73o$+}T=^yFGeaTQI&wz%y#=v16Sk zZ^Y3?clTN_l6kyd4;C(T9f&;T8oR!B)~Z&Tt5wok6ms;H)Spgvi$qXhRw$)1vU!N_ z3<}wz`6amDTL=&WYOi){#kG*TBdJRndRdw=(~Ep$&CX^V9IUF*`tV(k zzn<*QO!>SxA0b$NAs;Q6r)D=Ix7vE?fq?h?ljg6>t-=g?%*gqjX`8 z1###~zWH=jv1Hq`ze@{&ICR>zRZx$-@ib&T^cI=!qL9ncrB*JpT(~b9MH5KUJ=DO5 zvfS!=u@aTAF8j-3V=$ec)~qj)lQ|$)Zo3exGRL$X*P$%IVRpjpYKIxCE!jq=J!qtD z0#iYC!J*WwyaXPO83*mjp9khqez+|9x#_#dy;47()~UAAldUlWc20}gI@9(6FI@Za zS5Ag{-H|=^@tZ$xuJ-Wt<*J$ul3Z7VR?J4dixiKv9t<4G<;Yt3ibhgdO;y{heTu@A zc)FJ+NAl+Gj6?6hLMdoji!n$vic+(WIr_wP^pnB-J}kFicYsW5&ZbIxS2+1nMYAtT zU$O7TW#~h3rm&9dUq^ijSfk85DF_D*KH`bWh)T4^nCA1G6^E-`Wy+rN&LQvR6#;~! zr0i~86UocW)^Wz527+ zeO2DQ_dnZWBZ<2^F@$oNM8`$GUm{u}#f4l{srk*3COS6V++0}<8KX&Zo`eUC)$i79 zQEjgDWaIVn|6PYoSv_11<}dYaHwIf9Zf~4%7>&aNqOSLwQFcQ3pA#1Wun5?92mXIU378PMz?Fr zMWthot3R&>4BUkz!5l}GajbeXrRK)M>BX0S%GrB-4;N(V_rqf1 z!-rwzXzAi>cKI5)7PMjH-h?ln#+pva$y3agMfTo&VEWT$Joe$T$!ETdkIvu~Y|hxk z>AE}97WtETII9F<2ECw$%e1!LiG{DrJ6*(b2J(Tj+yTDhdbq57Zud+2guLFeg2k>_hK*}anVo7?_T6H zXzBGJAcODkY#}1~_+9+xXN)^T`a%G-hlaedKun5Q=`k=78*-rY!(V_`UcFcW1Tn0+@usu*i_&PE&2Thtn-z z-oxH`c3#l(#aqREb;0lW9*Z64}XD`?i7?@C{Wnqs*!DUb3HQ}$_U)> z;{82sJW>Uc1>`mFPb8=4$WMsxQ59z&jjbq~HOHoJXEf)q6vvtH(Pa31A1~I~0n2~! z{YTH1mE8d7*e+^*!oR*M;ur9H(qIsIz+qM~H`KQzUOH88X?S6$=UGJgk7g?=g{{ex zNbWkg=T~GlD4P#GGe!MwU|(R!e3G+RaFnL`@cp>kQ4ezgJ>t0Q=|nrIW~+4-Y~&WZ z8t&ICgO0G%)iws~$Nl_|GCYRi{!Ah3S5lgA%oOItio~imrKI;>xyTTF)^qhLV}5OI z(;Q(jmbxhKDc8ivdA&b*N8_8jSSTzx5%3zQDyz|;()lEFW4+K zs5@WU`feX=L%0}b#JOB`4eeW3yW*Lv1A3gBF>IObe6A8U zIT7U%B;uU_#9XuCaK_%St)o@F+&4?yx4(wC&gbtrgKjYc=u^Jl$u3v5+FISe^QaGvk@tO3x!oAh!wyS&GE>^Ivmct}XkJkrI0ot25T{BmAQotlTX;z2>{AEGo7ii>zxAAO2{F8?C_A`+HOqE zfO*cPG!UPAcC|Ob1cmE7SH^GJm8-1X=zO+oJ{`om8Z8?aMth;|v_VWMohr}}F8J!t8}-MgVO?wD>f|j<1yF3Lj1sS2~5;~~k)0=3$jR8q-A)3aIULh!;Fm z%gN^vnIvz_qM@EL^((m}h{4b3uf|Vl=9s2Tb!vBOa&b@+-nZPWL}@T_QjrO0&$*tJ zAN6t1DVH1Tjj7rM?tqoae%=G2##*jdFG_877s1Dq%vA8~bDMgiE#kzu&1L|fkS*=B zbvHGQEH9&zgH|kwWs~W*c-6&Y z&D~%|nYdmaTcIGNi$+z1Npej*qfs>k9aFpUsyVJr>CAhxzv}%Li6pL>-MS+QlYvyh zX&bbxp$u^w!S_61i97*Jr?&cvM{nBoY-V?|}GJxK#mHq(nCs+z*#LYt$B=}m} zGmHq-XNj?fobslAot0U%RB{=U^ON{?a;+~szyE0>j6&)jnDgP4LQmp=?8{^UT z{VH$ytJ9rk6Ph3Lhx}nbW0}mbPvsNM@tG6QukbjX#u@rJmg)+*!g&)N0+r}zEdtX8 z%qL24W-$yqOUG@ryqI=79?`y{99kCS+&26Wzw7flh^5J=em%BL+5+C6?`84i?;=(~ z0(TIh!G&gs>*D8CSEYQ|?W~Qdf^*W}mP>OfSAUc1A}6mdR#;6OgfWyoHe1YOJWRI6 zXx5+XQTuId(rvXtUNK}og6Au#ls$MCYV&WU3)MN#lvVKRvy9|m^B*K%me+i&9L-m$ zRTFOtJ*y&%xg?}5s4JXBj~hFM^yPPT|vLzym}twXjS4Hcwy7*fk2_#UE_G5y>>10 z{$ph*@sg0KAtJ5oCuE$}u$rO=ehRH-Z2_%vPOXr4J-)E(%F+ye%H@(_Js&Wu+)|Y( zE>5J9-*|x4t=aEZLBn+7n#y(N<^62#6+eKhqJl7vn$I*JT|3>Y^+t z9{9!w8OFq)N*Bc%VlK^o>8B!oE*eF?EYR%-rT+!y;ia1VahgdgbdYrpRdrFg2` zQ`j2c+;XVj$aTa`jr+Z!If&cXpcy7(H3!;pPa%!&pZWS}l&0 z(8q2N?GtK4r|X2g&bX}fj8tv5iMsnS1zGNL7UtXKldbWrHb2{2-&OlHj+;Cl1Qeax zX09beQ5&+IE0?<}-`vk!LcR@mXRXEPP&i>Kl$m^1*irKJ$JkE88y6qBM-6TcV>>p% znGtKJU)G+np&=Q3Zd=aq7eenK;`o4BnWIpg8ru<$HRN4xy~5-wXr+GmOjp^DPCR;$ z(v>=igg2Tjo-a`)pXpUt6kCJ^uV_VZb#asfM<&9-qz6m`^*$e-k1p7udOR9oqaRi8&N#$QL2?iOCXq#CIKuV&LxBG^R|P? z9JBW$=1bVt{7XmW+mU+Zrfx~RFwzr%?wIf+lOu(vjSVO2F0qt#rl=ek^1CKx5CP~Rt!4k$YLhU7q*!mj`Gc_os!#;VxX zbXQ!iu-e0^CR}`D-~Y;-rVX4Ai6yfIlEEK53qC1YfgfxT8;@lEigx#K2nQfmhk5T2 z|A1$L5LhVxdh`D6(?55_LjVC}Ygy?l+MPr9plnVv#E|d~n>z$eJ4*?P?;Lu73b^5S zf&qcw_z-Bd%YZ_L83>BpIrNwSFwKv=seZp94xqlBP(s@0AAaZ13m(8*VZ8*<@9@@8 zQb2DLG0E>7q6fM)^SuXtB)81aZIxg9^;v2PyF8lItatQi?p!uO#M_18a$ zx+>vg(~%sx49VfH2ug!X%{wy#m5d6G{LwUk^b@2>E+tB}af~MV0E%SdI<2S3r^0s! znLYT7ey4#EF)$2zvgH6wirQc>8Kv5qs-z`kCY3VcxSe(0i^1d3?c+H5BA2H~7g#R+ z_RnLGDMLlmS<7Z*`4U~>I0l0tWWa+Er?r|tDUB7V(TI5*O7myJ zd7S@$tNc)tV6;e!pM5hcttrw4Xs%4w%kN2pXlvF99d5n~;T4bMDonv5ywqgS|5*e) zipiVnGYymBtgj~+JY`Q9!@UP#F3-m zx&fZ_yok1=j$-7SL+n0)co6)K4t{mmHRoT?*?C z{h=hWywYxK)ZElIp&vu?>!11O!%Lt6Z(g=AlqrdVLTs;x76L`m=zP*1lqtkdDUSYi zAGBqfgbBOiT6Au2u6IC9wc;C23O09DLh}Pei%9CEdNU_CK6(h^HwZ{wC#ltxA3A9) z7g90H*|g0}^+c(Gui3Ai$~n`UUl&?0*JuM{k_NwvLW}}5iuQjN-4stZT+(cPWML2byh35)o$j}#n(hL93WKVwcaJida z%cA}ya^p41Ch&3aPWcmm$o2$G0ZDoaBIwHcud!i8c|a1p4vd6#j&EEGxDL}#kz^4? zVmPv*G~B8a03+@zipzlMo?Wo0Ep$at4H-fjdf$5zI5x9 zQ3V2ogSw~UqI~fml(ka|%__unMRPz(`Zg;X>JJzFGrL{@+Dv8+n6epQi{j_=$x@h* zdAdKVij*S!VXM~_@Mg?MZywQ95nx!xsfiu70I_GM37hC=FU!*7C{b;iuflc09U}#5 zQ^bK1HK9Tu7Lb7Yz<^l0Ig(o|x-JvV9xcJCoK}m?Xz<$`HQP0yI8>NbOtksDKfkn9LwN}GE40v&s6#qmPu4+f z93#56Z8Dly3~aCq(Z8MqPYNp3dz(6( zZhELav}#NBBRg6xMnDFv2Vz=CXtI7{>Qc1k5%PFqjX57%GT{rlpl+oql}X)UB$ZOh zgi!Hqy4Og1_T6=8Ex0ZY{bxjMjKD0{u)_te2k8<&aSlwvn1_^eN zjqzr=CR1jWY85sE_xzkK)OoIS8s$E>{XoFqMwzh(M8D^m0;LvpO8zBaDX-54ikl?a z?6=oj94g@cFdZ1U`|k-f_%I$kdHK8{RemZBufb45+u*Dn{UevF?DB?cUeWQ!q8Zc| z-YHX`xw3?zRV8j>R1zf#E`(Pm3@{5LiR;|jTv8(La^+-=z*Lhb!`!BtlkW>?ic1Sc@~u70Qu#z_d|Is$+?8kSZ)DW+}(za&ZiDJuPgu5ewQi zR8c<3RP{0Erxagvsy^)X41dr!t`*yX0FA?%O6ee7`Ut(sR$@^?UB}O{wOwStwRD`` zC3gBU*P6I##2n&;$*?WHfa8yRI&1DeYcXPhpGpv1OfuE^Hk+0rXJta((6f!ixLA8i zL&kY!V6^KQ_Sl$)`%FGfitmF~+V)Ql=Pq|%5SSm^!Xdjk1C@gq^S#V zK+GvIVuZ_o6G9_H=CwIiA`f+Vp<z{4RvY4?R>ITZ zT@GgTS4mM>G8jXrrlhF`+)t9e9 zO%Tg9&>)a0uNq>cM7O6W9!?vvMH+AEiJq-&#hWUZlqIa`WMT3)yonap{^nwhJ$TEi z9oN9ALrToT)-$dv^bIgkt;)u$t_I!~>yZiYZ@tp_yUZ3nT#iFfzzxZiF1&JmnL}bP z973+T(D6F>=ctfh5zt}TrmBCjg@gpUb$U(?r3s-_HhtWbivCy^>`xm3vBFVH8&iAe zCcuxN-TVkB4)|LWrJ0hOUDA!vw`O0}oPD4qZ6kH_x*Bhcb=0`gGRWm`1=%4zjYmc;ZwR`Gbp56$|A0#Q~G;-?}u6 zhbN&F;W?Z~UQx+2Vy110aa)SINEG(i`Sil0kwMh~i}fzw)R`>^gjEkM=kmQO~u7P%6+kv2M7E&wglJ{&7M{M3lhl2^zC!*Du{H=o^l_ttNHTMO{^QoY zhaiLUMj1Y?IgL?mOcmM{j)dL2ulI07b>u;q7T;L%fIs6#gcR(!$0^kvg zZ~Tw%qHa6g2_(w5qVVuuHatXsu7uKqZ09 zA1M-wgaGDbjicA|2bwckz8#kR0u;3Y7-``%^Tj3G9pG;!!~SGb6iOB4qFpaQHuNa< zK?3RYCqthudsLUlE-hyVBuq*cL?e1nG6zdWymXGieT4>dU3P$Ykj}<@qH$aY!oN)R zJ*mfFHU^i`AW_^KEl+63MIKmzVWe`}GV0U7ZOize`vGEJweZPwW4XL`JvAT?q&p^h zvD&?!zJ90J>W^s#!bH92y8z*ILIrZ*BDuUf7CbuvevOVnywy983g%O{xxp@mz^lm9 zs9*mql|?6L?}g``o>B(Kz?;X=>urOeiX8@K4Z)uI+3w5^7z*3j5oiesV&7$nlJ^6T zw^7%K#4L3Kg}tTMXLH;y@B45;#q!?Ql_1kJ{#59t7Le8IkLDvO6?*Mw>=bZ7Jrkv+ zJp^W#u@D~QTm8-D7KvoZU& zdJqJ-$LXXA?N}wCSyiV&c$|~7u4igjz}LtZ40yI1TTwadlq(+3G62m;fyhO^noSQQ z%{6epjG+K9f<|pJ!tN(syJGf-^u-F9ou~MIjO7==OQh2%q@+4O0M4EY02*e?9bbbI zHs!eJf|%vCF9tzW9g^@kfjS6 zg3`xDBFVafl@>mq*4#?di4rZ&Vs`A@$~m_wfcX}86VN3&20-mg`nHR8fVqZADL)RJ zg7sa5nL_#*4egA%dkIj_H6N_nyRnz42ybS#YBb~w08pN0yj=n|MR98Y)>MgJ_jHwf z_J`Kf83zr8purBWTxX@TpWtI7_U$4s@@Y*#D|gRQ6bjWx8(f_g;-i;sxz8`l0#^#0 zRq$p3lTwMIQG=Sv4CVZhV)&|jZvQQ%{?9$a`7nqqPx@5xRQ-|-RrA#6Ht~VeIcEVv zEJ^6`Y!2PjmEN~Mi9fEK)Nhw`$2+?GI%rRLkA`zSG{$X%sP6X~kttoH#x@)M(WOwH z`}fOC+Ax@iqCswVNMz&HF1v#|_c4mH*@>sZ8d|v|pX>t6rBLCeT;U|C%)?Iw!slSB zPe>e#gyaOGC7@NH4Ljjdp(E6H0olGX!R>P66hPha`&g>;En5JVFA79XlF5Aeb~%x! z#6a3XyiS}&6ar#kt1VeA4VU?sMEi2V0u^16sA2t)trexfBRT~Pbm1i-rwL;F7e9&FJiH0J8Q>x zXQ`M}U^@}gDL_b>RwQ$+bFz6PJrMm8Fb62GnF98Zp2M7L35>%l53ohh3>PPu%Y z#-$+k8rN&7XrEn9&gqRG{3wF-oCLzAn{HK${*3b=7MmPi3vSOEZy6yajH^yX{d+td zL#~$Kb*P<-0qM}H%KJ`3uSooMeH~Xe;=5$3FW23EZDb~?4%QvN$}D01FZBx5)_lm$ z+eBD|IXd_!Kq7Okb&%U$>1egbl^&}p*?soBkfuf_MUi+xl4cH31onH$SO1*ACEkVj42K~yuwrX+sy3`kqGOkDxFQZNwF zKDMpAqUWvOoWh=mXks8h@bvsUO;f6a9}uZiD9 zH52~g@??wu0M{(@5WE#A-zGt6DxA2zIpfCCCR~*cSPe7mHp)9DAPmc#uH@B%LldG8 zEImDOnw2Dx!GpvvDV5EFb;DaAQl|c(D{@{ohQ3^QC!CZWbl;vr*)PMmYY3vtOf$9+ zCeOq{^crFRuJ8t_B?aJb%!Y$BWrZF%7qa8?b-$}|N zeIws%l7Hjj6P_gzcaq-DRqu3?;mG3nh{hs9>XC~Hb3DLpEbchS?dlgCXI|3@QIAl7 zQ)1YTP#7bYKbahLCUL!BHNy-|9xF$4ak7gKTN&m;d^AG&ln8cfNqH$^iPJ)vMx;BP zoP;TJtoz_ls4qJ|cKdZ<(qh<(kGyFviAv`(1j7K4@L-I;71X?iN%FoF`Qnf>1+9n0 zr&oK8wM8i6Fk$U-TCdSQqqS5knd=ZQIE z5lVxel6_phsCH6BsDGGoiIAnci-o8ab52_NHkt%`^M}y&NIlU5Y*9LY#+ln#7gE^# z#w=u|C9?h%rFJ8ii=OQst{3P^z|6 z(ouvQ&%bKu+7n+QMX?)hVT!egGpp#d$_tkWOTcKDSLl~|oIOb$cFujV95(aZgg$Z- ztF}d{tiX^Rt@yJ-;cjufnB7$+GMd+znuD671(8i78J-GV8&dNCQDc|{n^9>_s_Q`9 zJH!<{6pKB_apYd;3y_?#k zxA^sxGbxHopj#9FUr|Ad=pnqPZP?E9bs5*tvhOA_n2tK7aJoQgzeI5@@okVG3ZuA9U(;CNwsP*EKyXP$=<5T`QhXm?>#T`U#rh$o%I zY)@%kyd6#g7LC!%o&a(;HucALb@ay>gfGIP7%QErY0voSPgc@VI>Uvq|Km!$sPD-i zFjs!sz%SCzzd9eD9$YPp+!=`z6zoF`IA9OH;>o=0Qyzn;Yeq0N@gM!$BIn3(`S$?ED-8u$je>h(43Hz2l`?{Minfe(b9d>Daw_Y;3622fa_MD>zL#2W&NZ)?;Zglls9 z>nJ!^#x9ChV^$AvP5*09SPR@n(%f7?n!Cbw;{!AUY6kWQ6oW|Hy8wg#76oXgpCAw( zY1oS$a;OV1bGzy3_JqX82CyLp8WX~b-3K7Q%G{XUabJ^Ej94JaJDZW~ax-Z82VzZ%M#TPL z$AuY%q_&*4!{%@{l+aflwguuC(AMpHnw9o26-4{uyN#C%^Qo;??tc91?f|Wv4;n(> zlm@oMPCq}2T|%x>X$Ek1oJYY!nI`N2UUIYuHWCy_%y-#PNM?IypAB~Lv%CE|H@!$j zsCPQC_LRkw8yWZ}j819}`b8s3Z09+hwzudJfDArLC?J_xIah9?0FAE1hv2eUCIc_g zt~Zx5cpHeCo0G2xoT020ph2}nVBE2zSb?rL8!yrt1&)j4Bxn2-aVU;Z4dsYX|>@F8J zi~4w);fi=Lod-0NYPD7D-&0-%5!Q!&7s%Q6fHzD^up#Dsp2sM;CI42E)a zsQ$WQWF4h`+s&RMtcQdjA{EF8kp~HCcTz&kcl{uS%nU2O0eaj5i)nwtAZaCAz4b&S zufk-km&k3z7i@A-0byO6z^`)3tq;3Zs0s_=OSElk0SjF8bw6J~*n$cO$2TB^NwSyU zgbhs?dY7N3g{@hm-4s7&`Sd%&=!hOd0|C+Bgp3c4B!tYjZS2GzlzsUvJAR~z(QA<% z3>4B-16h7rKznJ^*CQiZ02+#=XBqIxdSz5!4{9tsWkcKGVeC$fL#ILXah0Qz!lFN!*M2L%auP6D zG4w@@rsQ9fjR09f-_26!Y^6;4yY(x1B&jYkv;yj2eGHX^2m2qNMS?|`UJaco0jW^X zUb)iT>`;EyPN@LoYG!?iUb^i6kf`elz%c>dMLl}oVF3jd4_<#3d9U2qFNy~PCY{@q zh4M1{lng{+?U@5k^_!(FR>MS2BNE~w0kM-5uY!LEoM1fSA9jRIrSKzEQpiXcg|a1m z3lh!Adn_5Q#z`{qqIG&zZu(t7B+nO8^E4xC3U|@_X`2#)(>Z3WGRnGbHlOBkJm6!!NFgf{hO0<~rU4`2B|WezH0h6n*YmjmuK>)#W3 z2Ebkp>d7Vkt>5FbpE$H392DgIe@%7~&(}gG55JYjF?Hr`o-DwK}(sj@4H=%b+p&7X2R8Fq4Cx6=# z1cO_Fz`wJ;QzufzLFA*X-FNiQc)>ng{>syaG!68Naj@aBY1i$1!S@u%7~btMbw^-d z;3P=KZPmQ7-&S-6@&!W)duLE5Fz`*nNF`}PxM&oMzT-ibpQ?aJhTc!7V`U+|J1bTMgEJ6(ORNj05>4 z>4WrZp`bDlC$6dkQg88$?T|RwYq=TT)kQAjcE((hsN1Fs1Y~=_r>CGIA|MToP>GPp z{%8oAaj4xYsBIzyYnuZ|P2U(mqbBUkR*M2qW5*TDjf}EvhDKq?KU*B!Cu( z&cGquUQY|Q*UL%-m#uy~33T}l^SRq9umv(9>l%#v_O~zz>r7&@l}>0>g;Hp-Bgz2; z%s(YIPIm#Gsy3p&65-g@)9~w1bgdI345Wt{;;=4&q*?;yBzlc2kt(KO%__hbp^S7Y zFJ#&}2kKhivx*cksL{EUw*}qjx?$&1cSDgcZ~+zMaoKDwXNRF_4G`_k6n&;rS@&}@ zuI9T)&Wx?$g52qh3arrWH~3lCc|0i%%iUTaJx%px3CeEk6y1lYq^HQ zy8Wg{ukJCD(Q=$b@}3oU4ORh#h|xTW<#$ex=LU^T$|Lt&2(go1uWKA=cLpGe5wB+5 zNqh=c@EG_mpipfu8X`P-X$ai_$$2`ilc8|k9YyQlsSCuVf-^K%FcIRQwGnX%)UmlI zEb}nVAg-*+g~%B(2U19+yF{CjG-{ihev5H$jY7pi%G{5V)-srFlZ>=%7!QI;j6`e; zZ15KfQG-26+}vY_(B&K&#gP*h+W}x>z_@fr^l>7HG>`1~cEo@$Kt z7mKQe2PU(1)ty61;GJb(371hl_pD0+8z58Bvu1V3wWzJ8GbQoc(}2@!54LpIx)fi_ ziRJVP!*GEfE_itmJ|3)a27D0<0RP?wMliP`LnYvhn=3kLcb6)kLE+_WwM`2sjfloxQAUFPX3G$Y5Yd zEusG}00rOO0Dy#9rE8&90{~R2Y%`*0NjVn2xb_e6v0J2f1{K$D!XMtO##yMU95%_k zgl>^wqq_mRyb`c$)VBBZ6BglrufrD-$+itq(V`yeWYb__ASovPNFUyQ(}_Vp;{+)P+Gl!1B0ow*Q@^eFJP-tfZii<(So0}>k3VaxNF)wV`(CCF=)D;1|4h-tlmZoa4`3QnsFM*D_l1>J~llFJcsm?#pSdwuBk4@?Jp zkV>JMv5Ev&43;T3+h!&85RarwInJ0D~A-FYK ztoS}_6P8a~#w@ab*u?cj_#~SetqlnmtRsQ7z{46NcQ!uo$$?L?xThwgPmMth$C^=6|@1m%CU_oeYr^>O`NkRl(O$zvM<@!=XbiJxnKNW{og&G=i}Ys z%vt7~-}if6-|M;@b9sCGpR$8>N7VB5thq)Hwkwe7q2Lw!j@4FWgOFAg>zf&NHQE+@ zJY_q$!4UZ}JBFv*o2!m^I^J0rPz4n)-gePEn#6N>Laa;$h}UJgZ->G-JT}Ny>C9S&J?}v{JG8>^3!<+ zf5v+8)#UjPbE?@N8B&J@*!;f+E(V*5@Sky$#3p2UrmQn_+o`e;bZXN^(sP@0KvipV zMlCDpn}C=3ba=A>3*7SoUchOtB*WZU$a#tRG5s+$-&JYOI6>RZniKkkuF~rXCKJ~- z=HHK$zU4Wo)XTr}z)CS~T&SrEyt54hJ)8K7y=i zf#!YG)XeefWMywUsxMIUm7zO~c@lBs4|s&*_HAe?7m z0$XBTF>Ep>-!8D;xs#?wBk-m3Cv#ahq!2C1qPVF(YP{1{?wxGp^srWLooi`nKK|0t z#08{LK6vA2ZO55uV;8xm(Cd3x#mcYcOqg*+@y2kG3m`K&csIAmW+Y0g3K>!(V57%RA>Xn;`=mhq1i zreti$@pS6Ah&}FfJJ(b37Fz1;zvXxReuGZN_u6& znICke-Uv*my<+uw-;QIMe0qa=$8r@m@gX0)WMG&01XP42hlK;+1ts)b>aN?@s$co3 zF*;f36=4+mVj5_827T(EA|`d{8}UYeUdzfyUz)ds`hI!&Pgv%fNmcw8a%Y%VM6>f7 zO+Ga|BQF={X@xU{mN~rp;w1~R2UffuY9T!^XJ8^_d#*3{&0_4pGQya+%>pGPmkz9>0vtTUqMS>=oOh`tN+1c~uV>0=*g-gv+keXF5&%s?r?c56a@1 z=Hof_=OwE?ADl*PfWh8~3+Y4~xv0mA6#DOemt$4^(yB!1VlRYYWsT5Iz8m$~W}KU- zAiR>qul9&K5>T07Ib zSV{i(?_*W)$e$r6ly9eRE>Vj&Hr)z2{G_Y?qIfzQsfo%3J!Y z3FK1np!XTQ#vPF+4ZnAXc<=q*%JLiTr2+Vp`sO_Q-ths&_8K53!8ade6G%Xu1~+gq zV9%_RZ1U#%9_yj{Mj6;0JVYCPjeZIImw6r6Iv^T43A#`qy-SH^tsz0FbcW zFzy}+Bus^r9btfL3lr1{vxpicxe=Xrq~9rZ(=LH5FV-9mCS4!6S?sEcZ2Du**LDz<<@IbxEUlUBZe|)Qa^3ft}Vc86^$7+7?gO1<} zJG)ZgS2z41sASa{l{InSN$?S%A^*cOy)0@tNAfkG$(h19S_o%e0M17ftr$`gMtK&e ziwTe5H^D>{=_QTrUs>!)aIw$5-f0{~zm51WM=S!}tt%X&e@{)?pplA+8dG9i&)~Y; z21kK*+j;hLi`1?aaAxKLXEtO|cr(6b41IYJ(Fh(Bz%UHg4zgrQwzBSjiCN3^cZ{+< zhJnb-$tK{2@dgPspl(B+<7)FwcMi1f*4Cv9&+TV>yC9F*CeUHdK+1opvjvo+1t{zV zQ<)Y0KznZvKvgEx$M0;y`DQ(*kI9ikGKvg*79k*W~e%amaQ zs2gqIUerAWsb7F*Sq%uJ{(<*<96Xc`3=i!o_s-)o0hntCnMa>pZW`CovtC6vhxVx)Y?DNw$>qSNy*=q5zMIRM1ci7uIW1pHY~eISq(e5*eTJ-;#xS zs*_!{_>E2Nzz8WH-0@aG8?Zylsy2d72iHjxz{wRXjMOURn)J-I;c<+)K>cH5FKXUe z4Q$Rc-Wd#OXV2e$X=9EAsOVBAd4YB4`>NRCnPXm%Ss#0qM zkfGg>I*5@+#YPtH%qnVT0Er?9h}=)VWkon6UR59{Qngo-o;peLZq$L7;z%#x#m*aRwCE>Z5c=>=xoCAnx5{fEKff#dS|D}h< z$v`(Un*!YDcMZ~xVyAvJHfjUQ21o|Tfl{Lk?O90#2z)!D>+HQRttYaPwH|0?bt$=c({qd+ z5^Ge?09yEm1Qr-Y6R`YR{1YsJK>1YcFk=A;-_IRpNXzDFNkc9uhk{PH-A6Q(_g+;Z z&PGVDI1j7?rp_Dw20q+B1s1sOa!W6(S~2`6F5+?s$p*%X?$qSy$ytgjV(zJX8v_9I~@=HrDBasOm*mYHkCt5(prOwylrZr7kp{a<44=* z>oVZEh`b78YX+H04|6%0-ozHds9S+%=Y|@g^gW=F90ocr$`F#Hz=^%}wob2M>`jB8 zJ4h!n?~(d1FM9I|{>CeKl8_yMT0Sa2&6VTmoJFWdK$F$Hl>c-R9wX_t_$DfEZ`EM> zhpbfqsjR3|^W2Ihcb3J>QRAKQm8WYqS3mGa2R9Lx-x((bdqY|jKM7~shpHh>8AU%% zkLzifd6eeg`zG+r8OhD0DKe&2C!Ll_cE2LJkn4@62w@#x{Dk3aYN#UH-b!&9=V4a^ z!UN3C-f(E@y~~sxW(p5dymFUQBy;$Rc3x@nLNzeD1J8NhrNGj?Gd5;BXwGjgaB-Ik;y4LNJf)dDrZ*jU#?cyZw0Ys4DfV|ciG&c9>Z8jY z0E5S9>g-8HelKbmZ}JD;V&^y+NM2H722iwc^wkh9|KsVdF13sQ{hyg0Gsz;;|V0YQiIaS z$jM1Uze@8!0XD5>UtxQ<6qHNIf<}G(HB`g@tkWDJkmb=l&rD!{-S&`%G`HTq|4ETk z1bc>yYUhy#*qp;~a@#-yDNqNVR^7g!G!J;lF2HY2zk%#yl7NSlL%b=LeE8`o>t*9R z8s>`Rf1oQkxcW76|IkV-ZyDsk0^xBwawA}GC|05#y8t3Ox?^R$h$#{=>%e(LTeAqp zL}t*?s3LT61<;^k`6o!%8g?>yr9q_KS9zW}OJKYDmFy_P$54ET;%FUiar7882GB!* zQ~-#2Gz@42nD{Li6q*M##vLHJImgIp?hn2?E!NO{b5++B;1GgkM@BoK+e^U8fZ zhM2zFGFA_)o#+6? zxIEM-T#*N@!QX`ucW1(HIA&~*OYPc@r49T}xyvjLg(G#bBi9Q9w)VbK@a^9DP1b|O zw_AbT?RN$TG~99kW3V2;RhUBbpyd`69!CkM^mi-+rn4x=UyvCOP>tVa3rA=*>o6*Y zl)(QL1le-#UJ}wFHUWk~6dDJX%(|;YOLT$i_=9$LZG`SZ3Y499A>QjUrs4HaYUK ze?F?Gow^M)OyXbH!NXBF#W2tS$HN3KG=tNC15Z!5A{CglN_DJAfE>G|Vr~!NlIhF8 zN0J~N&jASK9wgijOa~Prih2x`A2HwUWTzM|f4 zO_1D(yB&7|JPKKxP!YhM%gigSFF%6|CLLz-G4e8D1m;o-fJhd^jbkGfzQz3N0k!J7 zE$hu_;4b`CcQ^cU4HA&)Hu>aHG`azYMk6TxtL`~wJ9dC6F6=xJaI zO>Peez@Vs;mq?n`vG8WXO)wyP&ZioLAst7h>qBwp zWdo$xr4jyuccE@d0SaCb7c-ix!6*Ac`x2=R(YgdE5%6?PR)bC&y+@=<^f#v@n?uwV zgyF%@xC^%U6~&hdP+6bN0(3+XQ2{TzG&eBdqwo|kn?fowvK<9_(Z)wfmKt{|CbOd% z){9zjy)ho|&*A^nW)u$7SONwuz;wA|8-~1BQ>S!5;E|Rm%#ey96`J9Ol!+>;ustAz zWr2$Hu0f@S=~=9p6SF^u%m$!@ixx!}RLD94?&&*#l*VbC{xjR`{39$E>+)}c_bqKI z*?Ssvf#cO#5?`S)b=UmRN4@KyS@~77Ut^({<+XI2lg(J!OlNk2Wlj~d=(c=9y^ z!cUutM4Y&cpjx(({VMRgK)AC+yM}8uCR4B^#hoHp$K7zl9g(wK^xIg1ld|kX9-ul0$RvL5{H>z}bT7 z;sqg0Gk*^kXV(WYffXopX}DTLG?b3K$O&|Uv>&95iMF;4@(2m=p?nvKSu0F z5((;YvgLj{SmAqkrygUFIG$3d72VsNkoDY&CsSc{Pc)c5q*-xm@rWRlaEF#D8Vd9$=%v!L%R3{+Hv z1}Q47qXJdy5?d-DWnskjL0bI$uaBq$^JIH+W&L{vmceg6ostFhv1(h1*rs4g14 zHRB?wi#cG|`Zt`U^T*pz6hQT*uXjiai7_a~A>8ufB%5ABQ2@S%@vliPq8=*k%KmmF zn@-7q4&eAlx$`6)z#H!1HLl4}>2~OoAk_-2d z1vs9!GnI*Cx%j_7``>s&l#;dQf0|oP@2KH=aE!371~Eh`OUUu{1{|N^CXv_l#IC-) zWlyZi?Y!{Y`|UD@fR*-3uUzbQ_Uk#%hESjOL0vpS-FLMm6H^y>_~X7Pj-FSRT!ZFb z@Hny16*Ut0dLzC3ua)rtnLG}XG#gUu;8CC52DEDMW)X6-uA&NO{oeGOgQu zx{cpNcsr|#r$q<;Ks63Yve+2O#j2Cf9wamXq^niX%DP>9;*5HIQj@;vX0Hes0AIyx z=D$B%pl~=M->Ix@al~KnQ(rFXx+O9>&rQMs8yJ!85YVV>dXQn`J zgePG28z7}|E(mE7<;XiF5xd>5H{6VZmxT(}IhVLp<;b=vtXnVql;8{1H zv5tNiXo+%)a^H$(ehM4UCg>1Cv7JA+FX|L~PiV%e9JhIawi+8Bf%^=vlvol)gg@CM z*rvs%a?)MsGcRsF-LfbVFj(HKuuPX74D3&KMwFB}YT@+~-v<~<3es=7iV0dyk+p68 zsKYi-xjwG-cTjC<5UO}qr+KlRKf$D|wcWLY#-Y8Om5tX znMMNb#)zQJ@t#QTDb$C><-1R}ms(DSUI} zyva=2Q<6s|O8+?_oVO~JKJkiMY1yy)e2j4J!xdiZ&z>*5lgp845b4QPD)DGToAn=7?u4#Fg)ASoz{oyOh*@rQx35WLKV{WJpn_KLU`K^;HBV3+j@?RN^oV>CV zCcZMkEvC245a&WazizkKY2ewPjBC$hIjGt70^^Hhb@JS#Jja@&DXx`gotZXPb(1TM znJowH7N&RBTd8ho@X}CN_sS?A>&ZsTGlKf&TOvJMMRbEy3ePgvN~#79?$FLVa_sKV zT4_9w*FKO`uW^Br%o1ndbD*Ye)^Sy$Bw0>f z!$Ef|H_m_Z3V$Uu5v1tzy!lxOP8m# zuFvm;_csK zQkzC>XbSsY4=coKbrn{>l^8nW_1IX}8b_>pdpL`F%Sdn>ov>~7Ir zBGZeK=tYbfs4XjVbm{fAEXqWCVTYM}<^xAh>*RknI z^l%95RpYi^(pA+Zn8(tfe73fgK#nG?izuPk{1;2 zW#3RwP(cP_&-IftYz3~X95afij4tQ<(N!RzUEXYardRj47o`Me!J!Iv)`6$aJX_D^ zH;3j9ql(xI*%vpTK_r0iaJl2>C((_sJ~tF*d36e3D_qR4LCgDCFe`f_Kfl7vYfPK> zS#aw`^S%s7x|kDyY-YPLnJKKD-LI{CqsQ%5cl;Ovt%0q8F%b!#W5xYDYR9HlXEin# z=Gx*4+d58J8X@NT8g7Wp9scPd9Cn>{af?6l*6vlK9Y^CSSbgAZ$2i&RZpT5+Z~Tnz z&HeNz;>EmT`mY&U51wMpaNpSEzpAL_bB4ZJUW(bt#)LJXYntwLNgdsOccCsv6-w2+ zVqLo{<6vD|B?7ZvqnQJxBHYm$G!^Mcz8VvETn^e)@}~Y9dM`gZx}de zWFyAlELt--iMu8~74p!@M#{>6{Kvnq)|%V=uJ*cX<$zb!nyUw8$1cSW!zp(}KGwE$ z2zP?5mu^dPe$}Jm#n#Qxw?n%Jcj;(0cMr1Z21>IDM&Wr!v-wD+s=ntuD6dl7x%^_M zUNkvRcVK>$CT5MiP^wUBc;FOk^J8}#@U!K<>F}~unu+{?T|}%Ch3kz>gAt5`KV{AW zjl)W`45zvA1IgoCCDiQarka#Bn z`pV;amP-f8$f@W#=7kSGr|3JEs^!<3se@{l*L;5sEs_z4eU%A4dFXr&t zlKT*zZuvOb#x3`yNrPG1s_aI&x8NkbU;!5u3Uz!f#?4Ky3Vx% literal 0 HcmV?d00001 From 4d2c0a219421308de11f766d2e817c927921c69b Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Wed, 1 Sep 2021 13:39:19 -0700 Subject: [PATCH 02/10] fixed format --- .../components/pipelines/pipeline-root.md | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index efda5509f0..08e63e202a 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -18,21 +18,21 @@ guide](/docs/components/pipelines/installation/) to deploy Kubeflow Pipelines. Pipeline root represents an artifact repository in which kubeflow pipelines will store pipeline's artifacts. It supports MinIO, S3, GCS natively using [Go CDK](https://github.com/google/go-cloud). Artifacts can be more accessible in S3 and GCS when integrating Kubeflow Pipelines with other systems. -Note: For MinIO, you can't change the MinIO instance. Kubeflow Pipelines can only use the Minio instance deployed with itself. +**Note:** For MinIO, you can't change the MinIO instance. Kubeflow Pipelines can only use the Minio instance deployed with itself. ## How to configure pipeline root authentication -### MinIO +1. MinIO You don't need to pass the authentication for MinIO -### GCS +1. GCS If you want to specify the `pipeline root` to GCS -### Set up pipeline root authentication in pipeline level via sdk +Set up pipeline root authentication in pipeline level via sdk: `dsl.get_pipeline_conf().add_op_transformer(aws.use_gcp_secret('xxx', ‘xxx’, ‘xxx’))` (references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.gcp.use_gcp_secret)) -### Set up pipeline root authentication via service account key +Set up pipeline root authentication via service account key: Check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) -### S3 +1. S3 If you want to specify the `pipeline root` to S3 ### Set up pipeline root authentication in pipeline level via sdk `dsl.get_pipeline_conf().add_op_transformer(aws.use_aws_secret('xxx', ‘xxx’, ‘xxx’))` @@ -40,7 +40,7 @@ If you want to specify the `pipeline root` to S3 ## How to configure pipeline root -### Via ConfigMaps in Kubernetes Cluster +1. Via ConfigMaps in Kubernetes Cluster You can configure default `pipeline root` for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes Cluster. @@ -49,17 +49,15 @@ kubectl edit configMap kfp-launcher -n ${your-namespace} ``` This `pipeline root` will be the default `pipeline root` for all pipelines running in the Kubernetes Cluster unless you override it through the following methods -### Via Building Pipelines +1. Via Building Pipelines You can configure `pipeline root` through `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) -### Via Submitting a Pipeline through SDK +1. Via Submitting a Pipeline through SDK You can configure `pipeline root` via `pipeline_root` argument when you submit a Pipeline using [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) or [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) or [run_pipeline](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.run_pipeline). -### Via Submitting a Pipeline Run through UI +1. Via Submitting a Pipeline Run through UI You can configure `pipeline root` via `pipeline_root` run parameters when you submit a pipeline run through UI. Configure pipeline root on the pipelines UI - -## How to configure pipeline root authentication From 32ea6bedecfb0bdf693277e958f337bc232eb667 Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Wed, 1 Sep 2021 13:42:36 -0700 Subject: [PATCH 03/10] chaned format --- .../components/pipelines/pipeline-root.md | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index 08e63e202a..26f54098b0 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -21,26 +21,28 @@ It supports MinIO, S3, GCS natively using [Go CDK](https://github.com/google/go- **Note:** For MinIO, you can't change the MinIO instance. Kubeflow Pipelines can only use the Minio instance deployed with itself. ## How to configure pipeline root authentication -1. MinIO +#### MinIO You don't need to pass the authentication for MinIO -1. GCS -If you want to specify the `pipeline root` to GCS -Set up pipeline root authentication in pipeline level via sdk: +#### GCS +If you want to specify the `pipeline root` to GCS : + +#####Set up pipeline root authentication in pipeline level via sdk: `dsl.get_pipeline_conf().add_op_transformer(aws.use_gcp_secret('xxx', ‘xxx’, ‘xxx’))` (references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.gcp.use_gcp_secret)) -Set up pipeline root authentication via service account key: +#####Set up pipeline root authentication via service account key: Check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) -1. S3 -If you want to specify the `pipeline root` to S3 -### Set up pipeline root authentication in pipeline level via sdk +#### S3 +If you want to specify the `pipeline root` to S3: + +##### Set up pipeline root authentication in pipeline level via sdk `dsl.get_pipeline_conf().add_op_transformer(aws.use_aws_secret('xxx', ‘xxx’, ‘xxx’))` (references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret)) ## How to configure pipeline root -1. Via ConfigMaps in Kubernetes Cluster +#### Via ConfigMaps in Kubernetes Cluster You can configure default `pipeline root` for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes Cluster. @@ -49,14 +51,14 @@ kubectl edit configMap kfp-launcher -n ${your-namespace} ``` This `pipeline root` will be the default `pipeline root` for all pipelines running in the Kubernetes Cluster unless you override it through the following methods -1. Via Building Pipelines +#### Via Building Pipelines You can configure `pipeline root` through `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) -1. Via Submitting a Pipeline through SDK +#### Via Submitting a Pipeline through SDK You can configure `pipeline root` via `pipeline_root` argument when you submit a Pipeline using [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) or [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) or [run_pipeline](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.run_pipeline). -1. Via Submitting a Pipeline Run through UI +#### Via Submitting a Pipeline Run through UI You can configure `pipeline root` via `pipeline_root` run parameters when you submit a pipeline run through UI. Configure pipeline root on the pipelines UI Date: Wed, 1 Sep 2021 13:48:09 -0700 Subject: [PATCH 04/10] fixed format --- .../en/docs/components/pipelines/pipeline-root.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index 26f54098b0..6ead6e5cff 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -27,18 +27,21 @@ You don't need to pass the authentication for MinIO #### GCS If you want to specify the `pipeline root` to GCS : -#####Set up pipeline root authentication in pipeline level via sdk: +* Set up pipeline root authentication in pipeline level via sdk: `dsl.get_pipeline_conf().add_op_transformer(aws.use_gcp_secret('xxx', ‘xxx’, ‘xxx’))` -(references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.gcp.use_gcp_secret)) -#####Set up pipeline root authentication via service account key: + +* Set up pipeline root authentication via service account key: Check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) #### S3 If you want to specify the `pipeline root` to S3: -##### Set up pipeline root authentication in pipeline level via sdk +* Set up pipeline root authentication in pipeline level via sdk: `dsl.get_pipeline_conf().add_op_transformer(aws.use_aws_secret('xxx', ‘xxx’, ‘xxx’))` -(references: [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) and [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret)) + +**references**: +* [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) +* [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret)) ## How to configure pipeline root From 3735e851695efd70b5e3823ac2e910a9e0518dac Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Wed, 1 Sep 2021 13:51:59 -0700 Subject: [PATCH 05/10] fixed typo --- .../docs/components/pipelines/pipeline-root.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index 6ead6e5cff..75576ea8d1 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -31,7 +31,7 @@ If you want to specify the `pipeline root` to GCS : `dsl.get_pipeline_conf().add_op_transformer(aws.use_gcp_secret('xxx', ‘xxx’, ‘xxx’))` * Set up pipeline root authentication via service account key: -Check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) +check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) #### S3 If you want to specify the `pipeline root` to S3: @@ -41,28 +41,28 @@ If you want to specify the `pipeline root` to S3: **references**: * [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) -* [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret)) +* [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret) ## How to configure pipeline root #### Via ConfigMaps in Kubernetes Cluster -You can configure default `pipeline root` for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes Cluster. +You can configure default pipeline root for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes Cluster. ```shell -kubectl edit configMap kfp-launcher -n ${your-namespace} +kubectl edit configMap kfp-launcher -n ${namespace} ``` -This `pipeline root` will be the default `pipeline root` for all pipelines running in the Kubernetes Cluster unless you override it through the following methods +This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes Cluster unless you override it through the following methods #### Via Building Pipelines -You can configure `pipeline root` through `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) +You can configure pipeline root through `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) #### Via Submitting a Pipeline through SDK -You can configure `pipeline root` via `pipeline_root` argument when you submit a Pipeline using [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) or [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) +You can configure pipeline root via `pipeline_root` argument when you submit a Pipeline using [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) or [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) or [run_pipeline](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.run_pipeline). #### Via Submitting a Pipeline Run through UI -You can configure `pipeline root` via `pipeline_root` run parameters when you submit a pipeline run through UI. +You can configure pipeline root via `pipeline_root` run parameters when you submit a pipeline run through UI. Configure pipeline root on the pipelines UI From 2408a4160f75c304a91caf4ca658c657f944b833 Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Wed, 1 Sep 2021 16:03:40 -0700 Subject: [PATCH 06/10] fixed comments --- .../components/pipelines/pipeline-root.md | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index 75576ea8d1..eee1684bd7 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -7,17 +7,18 @@ weight = 50 {{% beta-status feedbacklink="https://github.com/kubeflow/pipelines/issues" %}} -Starting from [Kubeflow Pipelines SDK v2](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/) and Kubeflow Pipelines 1.7.0, Kubeflow Pipelines supports a new intermediate artifact repository feature -- pipeline root in both [standalone deployment](https://www.kubeflow.org/docs/components/pipelines/installation/standalone-deployment/) and [AI platform Pipelines](https://cloud.google.com/ai-platform/pipelines/docs). +Starting from [Kubeflow Pipelines SDK v2](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/) and Kubeflow Pipelines 1.7.0, Kubeflow Pipelines supports a new intermediate artifact repository feature: pipeline root in both [standalone deployment](https://www.kubeflow.org/docs/components/pipelines/installation/standalone-deployment/) and [AI platform Pipelines](https://cloud.google.com/ai-platform/pipelines/docs). ## Before you start This guide tells you the basic concepts of Kubeflow Pipelines pipeline root and how to use it. -This guide assumes that you already have Kubeflow Pipelines installed or want to use standalone or AI platform Pipelines options in the [Kubeflow Pipelines deployment +This guide assumes that you already have Kubeflow Pipelines installed, or want to use standalone or AI platform Pipelines options in the [Kubeflow Pipelines deployment guide](/docs/components/pipelines/installation/) to deploy Kubeflow Pipelines. ## What is pipeline root? -Pipeline root represents an artifact repository in which kubeflow pipelines will store pipeline's artifacts. -It supports MinIO, S3, GCS natively using [Go CDK](https://github.com/google/go-cloud). Artifacts can be more accessible in S3 and GCS when integrating Kubeflow Pipelines with other systems. +Pipeline root represents an artifact repository where Kubeflow Pipelines stores a pipeline's artifacts. +This feature supports MinIO, S3, GCS natively using [Go CDK](https://github.com/google/go-cloud). Artifacts can be more accessible in S3 and GCS when integrating Kubeflow Pipelines with other systems. + **Note:** For MinIO, you can't change the MinIO instance. Kubeflow Pipelines can only use the Minio instance deployed with itself. ## How to configure pipeline root authentication @@ -52,17 +53,19 @@ You can configure default pipeline root for Kubeflow Pipelines via changing the ```shell kubectl edit configMap kfp-launcher -n ${namespace} ``` -This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes Cluster unless you override it through the following methods +This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes Cluster unless you override it through the following methods: #### Via Building Pipelines -You can configure pipeline root through `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) +You can configure a pipeline root through the `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) #### Via Submitting a Pipeline through SDK -You can configure pipeline root via `pipeline_root` argument when you submit a Pipeline using [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) or [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) -or [run_pipeline](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.run_pipeline). +You can configure pipeline root via `pipeline_root` argument when you submit a Pipeline using one of the following: +* [create_run_from_pipeline_func](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_func) +* [create_run_from_pipeline_package](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.create_run_from_pipeline_package) +* [run_pipeline](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.client.html#kfp.Client.run_pipeline). #### Via Submitting a Pipeline Run through UI -You can configure pipeline root via `pipeline_root` run parameters when you submit a pipeline run through UI. +You can configure a pipeline root via the `pipeline_root` run parameters when you submit a pipeline run in the UI Configure pipeline root on the pipelines UI From 79f75d8adbbc5f18dcb72618e3203767026a58c1 Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Tue, 7 Sep 2021 12:28:06 -0700 Subject: [PATCH 07/10] modified authentication docs --- .../en/docs/components/pipelines/pipeline-root.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index eee1684bd7..4493fad8d2 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -23,26 +23,25 @@ This feature supports MinIO, S3, GCS natively using [Go CDK](https://github.com/ ## How to configure pipeline root authentication #### MinIO -You don't need to pass the authentication for MinIO +You don't need to pass the authentication for MinIO. +Kubeflow Pipelines is configured with the authentication of the MinIO instance deployed with itself. #### GCS If you want to specify the `pipeline root` to GCS : -* Set up pipeline root authentication in pipeline level via sdk: -`dsl.get_pipeline_conf().add_op_transformer(aws.use_gcp_secret('xxx', ‘xxx’, ‘xxx’))` - -* Set up pipeline root authentication via service account key: check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) #### S3 If you want to specify the `pipeline root` to S3: -* Set up pipeline root authentication in pipeline level via sdk: +* Via [AWS IRSA][https://aws.amazon.com/blogs/containers/cross-account-iam-roles-for-kubernetes-service-accounts/]: + +* Via kfp sdk: `dsl.get_pipeline_conf().add_op_transformer(aws.use_aws_secret('xxx', ‘xxx’, ‘xxx’))` **references**: * [add-op-transformer](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.PipelineConf.add_op_transformer) -* [use-gcp-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret) +* [use-aws-secret](https://kubeflow-pipelines.readthedocs.io/en/latest/source/kfp.extensions.html#kfp.aws.use_aws_secret) ## How to configure pipeline root From 6af14afbe434a8e4384c691a5ab754d82226bb88 Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Tue, 7 Sep 2021 12:32:17 -0700 Subject: [PATCH 08/10] fixed link --- content/en/docs/components/pipelines/pipeline-root.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index 4493fad8d2..deb14a6de2 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -34,7 +34,7 @@ check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke #### S3 If you want to specify the `pipeline root` to S3: -* Via [AWS IRSA][https://aws.amazon.com/blogs/containers/cross-account-iam-roles-for-kubernetes-service-accounts/]: +* Via [AWS IRSA](https://aws.amazon.com/blogs/containers/cross-account-iam-roles-for-kubernetes-service-accounts/): * Via kfp sdk: `dsl.get_pipeline_conf().add_op_transformer(aws.use_aws_secret('xxx', ‘xxx’, ‘xxx’))` From 2dfe7d7190f8e8e82f5891389dfe9b6144b03cde Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Fri, 10 Sep 2021 10:32:44 -0700 Subject: [PATCH 09/10] modified docs --- content/en/docs/components/pipelines/pipeline-root.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index deb14a6de2..192c5ec321 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -20,6 +20,7 @@ Pipeline root represents an artifact repository where Kubeflow Pipelines stores This feature supports MinIO, S3, GCS natively using [Go CDK](https://github.com/google/go-cloud). Artifacts can be more accessible in S3 and GCS when integrating Kubeflow Pipelines with other systems. **Note:** For MinIO, you can't change the MinIO instance. Kubeflow Pipelines can only use the Minio instance deployed with itself. +(Please thumb ub this [GitHub Issue](https://github.com/kubeflow/pipelines/issues/6517) if you need to specify the Minio instance) ## How to configure pipeline root authentication #### MinIO @@ -32,7 +33,7 @@ If you want to specify the `pipeline root` to GCS : check [authentication-pipelines](https://www.kubeflow.org/docs/distributions/gke/pipelines/authentication-pipelines/) #### S3 -If you want to specify the `pipeline root` to S3: +If you want to specify the `pipeline root` to S3, please choose one of the following options: * Via [AWS IRSA](https://aws.amazon.com/blogs/containers/cross-account-iam-roles-for-kubernetes-service-accounts/): @@ -45,14 +46,14 @@ If you want to specify the `pipeline root` to S3: ## How to configure pipeline root -#### Via ConfigMaps in Kubernetes Cluster +#### Via ConfigMaps -You can configure default pipeline root for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes Cluster. +You can configure default pipeline root for Kubeflow Pipelines via changing the `defaultPipelineRoot` entry of ConfigMaps `kfp-launcher` in Kubernetes namespace. ```shell kubectl edit configMap kfp-launcher -n ${namespace} ``` -This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes Cluster unless you override it through the following methods: +This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes Cluster unless you override it using one of the following options: #### Via Building Pipelines You can configure a pipeline root through the `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline) From 25d8448be798ded0d2791634ac93801e3c1d60a0 Mon Sep 17 00:00:00 2001 From: XiyueYu Date: Mon, 13 Sep 2021 10:22:29 -0700 Subject: [PATCH 10/10] fixed comments --- content/en/docs/components/pipelines/pipeline-root.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/components/pipelines/pipeline-root.md b/content/en/docs/components/pipelines/pipeline-root.md index 192c5ec321..f699ba4da5 100644 --- a/content/en/docs/components/pipelines/pipeline-root.md +++ b/content/en/docs/components/pipelines/pipeline-root.md @@ -53,7 +53,7 @@ You can configure default pipeline root for Kubeflow Pipelines via changing the ```shell kubectl edit configMap kfp-launcher -n ${namespace} ``` -This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes Cluster unless you override it using one of the following options: +This pipeline root will be the default pipeline root for all pipelines running in the Kubernetes namespace unless you override it using one of the following options: #### Via Building Pipelines You can configure a pipeline root through the `kfp.dsl.pipeline` annotation when [building pipelines](https://www.kubeflow.org/docs/components/pipelines/sdk/v2/build-pipeline/#build-your-pipeline)