Enforcing policies (#317)
Enforcing policies and governance for Kubernetes workloads blog post
2
package-lock.json
generated
@@ -6022,4 +6022,4 @@
|
||||
"integrity": "sha512-aynRpmJDw7JIq6X4NDWJoiK1yVSiG57ArWSg4HLC1SFupX5/bo0Cf4jpX0ifwuzBfxpYBuNSyvMlWNNRuy3cVA=="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1
src/gatekeeper/assets/api-server-1.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 1200 900" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><g transform="translate(0.000000, 413.000000)" fill="#B8E986"><path d="M88.38 36.5l-66.3 36.72V-.22z"></path><path d="M0 45.686v-20.4h69v20.4z"></path></g><g transform="translate(93.000000, 256.000000)"><path d="M10 0h1012c5.523 0 10 4.477 10 10v367.6c0 5.523-4.477 10-10 10H10c-5.523 0-10-4.477-10-10V10C0 4.477 4.477 0 10 0z" fill="#53777A"></path><path d="M214.16 164.36L191.473 232H175.02l29.956-85.09h19.03L254.003 232H237.55l-22.727-67.64h-.665zm-22.146 46.658v-12.381h44.872v12.381h-44.872zM280.637 232h-15.415v-85.09h31.91q9.805 0 16.473 3.655 6.669 3.657 10.096 10.034 3.428 6.378 3.428 14.48 0 8.185-3.448 14.542-3.449 6.357-10.18 9.992-6.73 3.636-16.577 3.636h-21.149v-12.673h19.071q5.734 0 9.39-1.994 3.656-1.994 5.422-5.484 1.766-3.49 1.766-8.02 0-4.528-1.766-7.976-1.766-3.449-5.443-5.38-3.677-1.933-9.452-1.933h-14.126V232zm59.87-85.09h15.415V232h-15.414v-85.09zm122.277 23.39h-14.832q-.582-5.442-4.882-8.475-4.3-3.033-11.156-3.033-4.82 0-8.268 1.454-3.449 1.454-5.277 3.947-1.828 2.493-1.87 5.692 0 2.66 1.226 4.612 1.226 1.953 3.345 3.303 2.119 1.35 4.695 2.265 2.576.914 5.193 1.537l7.978 1.994q4.82 1.122 9.286 3.033 4.466 1.911 8.018 4.82 3.553 2.908 5.63 7.022 2.078 4.113 2.078 9.639 0 7.478-3.823 13.15-3.822 5.671-11.03 8.85-7.21 3.178-17.43 3.178-9.93 0-17.222-3.075-7.292-3.074-11.384-8.974-4.093-5.9-4.425-14.376h15.165q.332 4.446 2.742 7.396t6.295 4.404q3.884 1.454 8.704 1.454 5.027 0 8.829-1.516 3.802-1.517 5.962-4.238 2.16-2.722 2.202-6.378-.041-3.324-1.953-5.505-1.91-2.181-5.338-3.656t-7.999-2.639l-9.68-2.493q-10.512-2.7-16.599-8.205t-6.087-14.646q0-7.52 4.093-13.17 4.092-5.651 11.156-8.788 7.063-3.137 15.996-3.137 9.057 0 15.892 3.137 6.835 3.137 10.74 8.683 3.906 5.547 4.03 12.735zm70.55 61.7h-55.675v-85.09H533v12.92h-39.928v23.101h37.061v12.922h-37.061v23.225h40.26V232zm30.828 0h-15.414v-85.09h31.909q9.805 0 16.474 3.406 6.668 3.407 10.096 9.535 3.428 6.129 3.428 14.272 0 8.185-3.47 14.189-3.469 6.004-10.2 9.265-6.73 3.262-16.536 3.262h-22.727v-12.797h20.65q5.733 0 9.39-1.6 3.656-1.6 5.422-4.695 1.765-3.095 1.765-7.624t-1.786-7.749q-1.787-3.22-5.443-4.902-3.656-1.683-9.431-1.683h-14.127V232zm11.717-38.557h16.827L613.77 232h-17.2l-20.691-38.557zm41.216-46.534h16.91l22.145 66.976h.873l22.103-66.976h16.952L666.08 232h-19.029l-29.956-85.09zM762.97 232h-55.675v-85.09h55.342v12.92H722.71v23.101h37.062v12.922H722.71v23.225h40.26V232zm30.829 0h-15.415v-85.09h31.91q9.805 0 16.473 3.406 6.669 3.407 10.096 9.535 3.428 6.129 3.428 14.272 0 8.185-3.47 14.189-3.468 6.004-10.2 9.265-6.73 3.262-16.535 3.262H787.36v-12.797h20.65q5.733 0 9.389-1.6 3.656-1.6 5.422-4.695 1.766-3.095 1.766-7.624t-1.787-7.749q-1.786-3.22-5.443-4.902-3.656-1.683-9.431-1.683H793.8V232zm11.716-38.557h16.827L843.408 232h-17.2l-20.692-38.557z" fill="#FFF" fill-rule="nonzero"></path></g><g transform="translate(1125.000000, 424.000000)" fill="#B8E986"><path d="M74.566 25.5l-46.41 25.704V-.204z"></path><path d="M0 31.932v-14.28h61v14.28z"></path></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
1
src/gatekeeper/assets/api-server-10.svg
Normal file
|
After Width: | Height: | Size: 78 KiB |
1
src/gatekeeper/assets/api-server-2.svg
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
1
src/gatekeeper/assets/api-server-3.svg
Normal file
|
After Width: | Height: | Size: 11 KiB |
1
src/gatekeeper/assets/api-server-4.svg
Normal file
|
After Width: | Height: | Size: 17 KiB |
1
src/gatekeeper/assets/api-server-5.svg
Normal file
|
After Width: | Height: | Size: 25 KiB |
1
src/gatekeeper/assets/api-server-6.svg
Normal file
|
After Width: | Height: | Size: 27 KiB |
1
src/gatekeeper/assets/api-server-7.svg
Normal file
|
After Width: | Height: | Size: 34 KiB |
1
src/gatekeeper/assets/api-server-8.svg
Normal file
|
After Width: | Height: | Size: 44 KiB |
1
src/gatekeeper/assets/api-server-9.svg
Normal file
|
After Width: | Height: | Size: 77 KiB |
1
src/gatekeeper/assets/control-plane-1.svg
Normal file
|
After Width: | Height: | Size: 29 KiB |
1
src/gatekeeper/assets/control-plane-2.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg viewBox="0 0 1200 900" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M596.87 23.327a58.347 58.347 0 0 0-22.3 5.67L270.265 175.106c-15.955 7.656-27.543 22.137-31.485 39.342l-75.073 328.196a57.834 57.834 0 0 0 7.9 44.466 57.999 57.999 0 0 0 3.309 4.615l210.626 263.16c11.045 13.793 27.79 21.821 45.496 21.821l337.773-.078c17.7.013 34.444-8.004 45.496-21.783l210.549-263.198a57.848 57.848 0 0 0 11.247-49.08l-75.19-328.197c-3.942-17.206-15.53-31.686-31.485-39.343L625.085 28.997a58.357 58.357 0 0 0-28.215-5.67z" fill="#326CE5" fill-rule="nonzero" opacity=".1" stroke="#FFF" stroke-width=".5"></path><g transform="translate(0.000000, 414.000000)" fill="#B8E986"><path d="M484 36l-65 36V0z"></path><path d="M0 45V25h465v20z"></path></g><g transform="translate(490.000000, 336.000000)"><path fill="#53777A" d="M0 0h220v228H0z"></path><path d="M38.185 76.813L32.755 93h-3.937l7.17-20.364h4.553L47.721 93h-3.938l-5.44-16.188h-.158zm-5.3 11.166v-2.963h10.738v2.963H32.885zM54.094 93h-3.69V72.636h7.637q2.347 0 3.943.875 1.595.875 2.416 2.402.82 1.526.82 3.465 0 1.959-.825 3.48t-2.436 2.391q-1.611.87-3.968.87h-5.06v-3.032h4.563q1.372 0 2.247-.478.875-.477 1.298-1.312.423-.835.423-1.92 0-1.083-.423-1.908-.423-.826-1.303-1.288-.88-.462-2.262-.462h-3.38V93zm14.328-20.364h3.689V93h-3.69V72.636zm29.263 5.598h-3.55q-.14-1.302-1.168-2.028-1.03-.726-2.67-.726-1.154 0-1.979.348-.825.348-1.263.945-.437.596-.447 1.362 0 .636.293 1.104.294.467.8.79.508.323 1.124.542.617.219 1.243.368l1.91.477q1.153.269 2.221.726 1.07.457 1.92 1.153.85.696 1.347 1.68.497.985.497 2.308 0 1.79-.915 3.147-.915 1.357-2.64 2.118-1.725.76-4.17.76-2.377 0-4.122-.736-1.745-.735-2.725-2.147t-1.059-3.44h3.63q.08 1.063.656 1.77.577.705 1.506 1.053.93.348 2.083.348 1.203 0 2.113-.363.91-.363 1.427-1.014t.527-1.526q-.01-.796-.467-1.318-.458-.522-1.278-.875-.82-.353-1.914-.631l-2.317-.597q-2.515-.646-3.972-1.963-1.457-1.318-1.457-3.505 0-1.8.98-3.152.979-1.353 2.67-2.103 1.69-.751 3.827-.751 2.168 0 3.804.75 1.635.751 2.57 2.079.935 1.327.965 3.047zM114.568 93h-13.324V72.636h13.245v3.093h-9.556v5.528h8.87v3.092h-8.87v5.559h9.635V93zm7.378 0h-3.689V72.636h7.636q2.347 0 3.943.816 1.596.815 2.416 2.282.82 1.466.82 3.415 0 1.959-.83 3.396-.83 1.437-2.441 2.217-1.61.78-3.957.78h-5.44V82.48h4.942q1.373 0 2.248-.383.875-.383 1.297-1.123.423-.741.423-1.825t-.428-1.854q-.427-.77-1.302-1.174-.875-.402-2.257-.402h-3.381V93zm2.804-9.227h4.027L133.818 93h-4.116l-4.952-9.227zm9.864-11.137h4.046l5.3 16.029h.209l5.29-16.029h4.057L146.336 93h-4.553l-7.17-20.364zM169.524 93H156.2V72.636h13.245v3.093h-9.556v5.528h8.87v3.092h-8.87v5.559h9.635V93zm7.378 0h-3.689V72.636h7.636q2.347 0 3.943.816 1.596.815 2.416 2.282.82 1.466.82 3.415 0 1.959-.83 3.396-.83 1.437-2.441 2.217-1.61.78-3.957.78h-5.44V82.48h4.942q1.373 0 2.248-.383.875-.383 1.297-1.123.423-.741.423-1.825t-.428-1.854q-.427-.77-1.302-1.174-.875-.402-2.257-.402h-3.381V93zm2.804-9.227h4.027L188.774 93h-4.116l-4.952-9.227z" fill="#FFF" fill-rule="nonzero"></path></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
1
src/gatekeeper/assets/control-plane-3.svg
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
1
src/gatekeeper/assets/control-plane-4.svg
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
1181
src/gatekeeper/content.md
Normal file
BIN
src/gatekeeper/gatekeeper.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
src/gatekeeper/gatekeeper.sketch
Normal file
1
src/gatekeeper/gatekeeper.svg
Normal file
|
After Width: | Height: | Size: 44 KiB |
50
src/gatekeeper/gatekeeper.tsx
Normal file
@@ -0,0 +1,50 @@
|
||||
import { Action, Store } from '../store'
|
||||
import { Authors } from '../aboutUs'
|
||||
import { join } from 'path'
|
||||
import { toVFile } from '../files'
|
||||
|
||||
export const Gatekeeper = {
|
||||
id: 'gatekeeper',
|
||||
url: '/kubernetes-policies',
|
||||
title: 'Enforcing policies and governance for Kubernetes workloads',
|
||||
description: `In this article, you will learn about enforcing policies for your Kubernetes workloads using both out-of-cluster and in-cluster solutions.`,
|
||||
}
|
||||
|
||||
export function Register(store: Store) {
|
||||
store.dispatch(Action.pages.add(Gatekeeper))
|
||||
store.dispatch(
|
||||
Action.openGraphs.add({
|
||||
id: 'og-gatekeeper',
|
||||
pageId: Gatekeeper.id,
|
||||
imagePath: 'src/gatekeeper/gatekeeper.png',
|
||||
title: Gatekeeper.title,
|
||||
description: Gatekeeper.description,
|
||||
}),
|
||||
)
|
||||
store.dispatch(
|
||||
Action.blogPosts.add({
|
||||
id: 'bp-gatekeeper',
|
||||
pageId: Gatekeeper.id,
|
||||
authorId: Authors.amitSaha.id,
|
||||
description: Gatekeeper.description,
|
||||
title: Gatekeeper.title,
|
||||
publishedDate: '2020-07-15',
|
||||
|
||||
content: toVFile({ path: join(__dirname, 'content.md') }),
|
||||
}),
|
||||
)
|
||||
store.dispatch(
|
||||
Action.tags.add({
|
||||
id: Gatekeeper.id + '-general-post',
|
||||
tag: 'general-post',
|
||||
pageId: Gatekeeper.id,
|
||||
}),
|
||||
)
|
||||
store.dispatch(
|
||||
Action.previewPictures.add({
|
||||
id: 'gatekeeper-picture',
|
||||
pageId: Gatekeeper.id,
|
||||
imagePath: 'src/gatekeeper/gatekeeper.svg',
|
||||
}),
|
||||
)
|
||||
}
|
||||
@@ -40,6 +40,7 @@ import * as CustomAuthentication from './custom-authentication/index'
|
||||
import * as K8Bit from './k8bit/k8bit'
|
||||
import * as AllocatableResources from './allocatable-resources/allocatable-resources'
|
||||
import * as YAMLValidation from './yaml-validation/yaml-validation'
|
||||
import * as Gatekeeper from './gatekeeper/gatekeeper'
|
||||
|
||||
import * as BiteSizedListing from './biteSized'
|
||||
import * as BiteSizedArticles from './bite-sized-articles'
|
||||
@@ -109,4 +110,5 @@ export function register(store: Store) {
|
||||
AllocatableResources.Register(store)
|
||||
TrainingLandingPage.Register(store)
|
||||
YAMLValidation.Register(store)
|
||||
Gatekeeper.Register(store)
|
||||
}
|
||||
|
||||