Completek8s Classroom notes 01/Nov/2023

Using Cert-Manager to encrypt communications

  • YAML file used
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kube-certs
  namespace: demo
spec:
  selector:
    matchLabels:
      app: kube-certs
  template:
    metadata:
      labels:
        app: kube-certs
    spec:
      terminationGracePeriodSeconds: 5
      containers:
      - name: server
        image: nginx
        imagePullPolicy: Always
        ports:
        - containerPort: 80
        env:
        - name: PORT
          value: "80"
---
apiVersion: v1
kind: Service
metadata:
  name: kube-certs
  namespace: demo
spec:
  selector:
    app: kube-certs
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: kubeissuer
  namespace: demo
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: qtkhajadevops@gmail.com
    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: kubeissuer
    # Enable the HTTP-01 challenge provider
    solvers:
    - http01:
        ingress:
          class: nginx          

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/issuer: kubeissuer
    cert-manager.io/issue-temporary-certificate: "true"
    acme.cert-manager.io/http01-edit-in-place: "true"
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
  name: kube-certs-ingress
  namespace: demo
spec:
  ingressClassName: nginx
  rules:
  - host: cert.qtaws.fun
    http:
      paths:
      - backend:
          service:
            name: kube-certs
            port:
              number: 80
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - cert.qtaws.fun
    secretName: demo


Pod Security Admission

  • Pod Security Admission Modes
    • enforce: Violations will cause the Pod to be rejected
    • audit: Pod creation will be allowed. Violations will be appended to audit log
    • warn: Pod creation will be allowed. Violations will be rendered as warnings on console
  • Pod Security Admission Levels
    • privilege: Fully unrestricted policy
    • baseline: Minimal restrictive policy that covers crucial standards
    • restricted: Heavily restricted
  • Refer Here for official docs
  • Refer Here for labels
  • Lets create a namespace enforing highest level of security standards
apiVersion: v1
kind: Namespace
metadata:
  name: psa-high
  labels:
    pod-security.kubernetes.io/enforce: restricted

  • Lets create some pod which runs with root credentials
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: psa-high
spec:
  containers:
    - image: busybox
      name: busybox
      command: ["sh","-c","sleep 1d"]
  • Apply to observe the following error
    Preview
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: psa-high
spec:
  containers:
    - image: busybox
      name: busybox
      command: ["sh","-c","sleep 1d"]
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          drop: ["ALL"]
        runAsNonRoot: true
        runAsUser: 2000
        runAsGroup: 3000
        seccompProfile:
          type: RuntimeDefault 

Preview

  • Using Distrless Container Images Refer Here
  • Optimize containers for usage in Production

    • slimtoolkit Refer Here: This will optimize and secure the container image by analysing your application and dependencies
    • Dive: Refer Here. This is a tool for exploring layers baked into container image

Published
Categorized as Uncategorized Tagged

By continuous learner

devops & cloud enthusiastic learner

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Animated Social Media Icons by Acurax Responsive Web Designing Company

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube