cdk8s library
Project description
cdk8s-flux
Manage your kubernetes cluster in a GitOps fashion with Flux, construct library for cdk8s project🚀
Overview
cdk8s-flux is a cdk8s library which allows you to deploy define a installation of a Flux daemon in your kubernetes cluster with just a few lines of code.
This could be used as an alternative to the Flux Helm Chart or the fluxctl install
command.
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
Flux(self, "flux",
ns="flux",
name="flux",
image="fluxcd/flux",
tag="1.19.0",
replicas=1,
arguments=["--memcached-service=", "--ssh-keygen-dir=/etc/fluxd/keygen", "--git-url=git@github.com:rafaribe/cdk8s-k3s-gitops.git", "--git-branch=master", "--git-path=cluster", "--git-label=flux", "--git-user=flux", "--git-email=flux@rafaribe.com", "--git-poll-interval=5m", "--sync-garbage-collection"
]
)
flux.k8s.yaml
apiVersion: v1
kind: Namespace
metadata:
labels:
name: flux
name: flux
---
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
name: flux
name: flux
namespace: flux
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
name: flux
name: flux
rules:
- apiGroups:
- "*"
resources:
- "*"
verbs:
- "*"
- nonResourceURLs:
- "*"
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
name: flux
name: flux
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: flux
subjects:
- kind: ServiceAccount
name: flux
namespace: flux
---
apiVersion: v1
kind: Secret
metadata:
name: flux-git-deploy
namespace: flux
type: Opaque
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: flux
namespace: flux
spec:
replicas: 1
selector:
matchLabels:
name: flux
strategy:
type: Recreate
template:
metadata:
labels:
name: flux
spec:
containers:
- args:
- --memcached-service=
- --ssh-keygen-dir=/etc/fluxd/keygen
- --git-url=git@github.com:rafaribe/cdk8s-k3s-gitops.git
- --git-branch=master
- --git-path=cluster
- --git-label=flux
- --git-user=flux
- --git-email=flux@rafaribe.com
- --git-poll-interval=5m
- --sync-garbage-collection
image: raspbernetes/flux:1.19.0
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: api/flux/v6/identity.pub
port: 3030
initialDelaySeconds: 5
timeoutSeconds: 5
name: flux
ports:
- containerPort: 3030
readinessProbe:
httpGet:
path: api/flux/v6/identity.pub
port: 3030
initialDelaySeconds: 5
timeoutSeconds: 5
resources:
limits:
cpu: 150m
memory: 256Mi
volumeMounts:
- mountPath: /etc/fluxd/ssh
name: git-key
readOnly: true
- mountPath: /etc/fluxd/keygen
name: git-keygen
serviceAccountName: flux
volumes:
- name: git-key
secret:
defaultMode: 256
secretName: flux-git-deploy
- emptyDir:
medium: Memory
name: git-keygen
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: memcached
namespace: flux
spec:
replicas: 1
selector:
matchLabels:
name: memcached
template:
metadata:
labels:
name: memcached
spec:
containers:
- args:
- -m 512
- -I 5m
- -p 11211
image: memcached:1.5.20
name: memcached
ports:
- containerPort: 11211
name: clients
securityContext:
allowPrivilegeEscalation: false
runAsGroup: 11211
runAsUser: 11211
---
apiVersion: v1
kind: Service
metadata:
name: memcached
namespace: flux
spec:
ports:
- name: memcached
port: 11211
selector:
name: memcached
Installation
cdk8s supports TypeScript and Python at this point, so as cdk8s-flux.
We'd recommend to walk through the cdk8s Getting Started guide before using this library, if you're very new to cdk8s world.
TypeScript
Use npm
or yarn
to install.
$ npm install -s cdk8s-flux
or
$ yarn add cdk8s-flux
Python
$ pip install cdk8s-flux
Contribution
-
Bootstrap the repo:
yarn install # installs dependencies
-
Development scripts:
Command | Description |
---|---|
yarn compile |
Compiles jsii |
yarn watch |
Watch & compile |
yarn test |
Runs the jest unit tests |
yarn test -u |
Updates jest snapshots |
yarn run package |
Outputs the jsii generated packages in TS and Python |
yarn build |
Compile + Test + Package |
yarn bump |
Bumps version |
yarn release |
Bump + push to master |
yarn rmist |
Deletes node_modules and runs installs dependencies |
yarn lint |
Lint with eslinter |
yarn prettier |
Runs prettier and updates the files in place |
yarn run import |
cdk8s imports k8s and crds into the imports directory |
- Create a feature branch
- Commit your changes
- Rebase your local changes against the master branch
- Create a new Pull Request (use conventional commits for the title please)
License
Author
Thank you:
Thank you to the devs
of the following projects, from where I got some inspiration to create this library:
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cdk8s-flux-0.1.3.tar.gz
.
File metadata
- Download URL: cdk8s-flux-0.1.3.tar.gz
- Upload date:
- Size: 275.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6894e0ad7379a7a155c8edb27eced0bae6ec39fd40512dd09e94c1ed19e300b9 |
|
MD5 | d65fafb5e3c6304bda51afa72649914e |
|
BLAKE2b-256 | f2c1b7f73f039f039e71e1d240b176aa5ac72713f20f36b9c1af55f9d6df794a |
File details
Details for the file cdk8s_flux-0.1.3-py3-none-any.whl
.
File metadata
- Download URL: cdk8s_flux-0.1.3-py3-none-any.whl
- Upload date:
- Size: 273.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e3487530adaa97d708dbb0d266d63aae52dbc3483e070c829425bdb1eebadee5 |
|
MD5 | f65be014a50bef6c74170180276d14e0 |
|
BLAKE2b-256 | be60505c2959f340b986c63322b5c0788345b468a3831e5406ede59540712185 |