Skip to content

Instantly share code, notes, and snippets.

@TheHunter
Created January 21, 2021 23:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TheHunter/1aae94c66cd745b0aeca87588c054bef to your computer and use it in GitHub Desktop.
Save TheHunter/1aae94c66cd745b0aeca87588c054bef to your computer and use it in GitHub Desktop.
An sample about couchbase cluster installation with helm
# Select what to install
install:
# couchbaseOperator is the couchbase-operator deployment
couchbaseOperator: false
# admissionController enforces validation
admissionController: false
# couchbase cluster
couchbaseCluster: true
# sync gateway
syncGateway: false
# couchbaseOperator is the controller for couchbase cluster
couchbaseOperator:
# name of the couchbase operator
name: "couchbase-operator"
# image config
image:
repository: couchbase/operator
tag: 2.1.0
imagePullPolicy: IfNotPresent
# imagePullSecrets is an optional list of references to secrets to use for pulling images
imagePullSecrets: []
# additional command arguments will be translated to `--key=value`
commandArgs:
# pod creation timeout
pod-create-timeout: 10m
# resources of couchbase-operator
resources: {}
# nodeSelector for couchbase-operator pod assignment
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {
appTarget: couch.data.dev
}
# tolerations of pod match nodes with corresponding taints
tolerations: []
# admissionController is the controller for couchbase admission controller
# name is derived from chart
admissionController:
name: "couchbase-admission-controller-dev"
image:
repository: couchbase/admission-controller
tag: 2.1.0
imagePullPolicy: IfNotPresent
# imagePullSecrets is an optional list of references to secrets to use for pulling images
imagePullSecrets: []
verboseLogging: true
# nodeSelector for couchbase-operator pod assignment
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
nodeSelector: {
appTarget: couch.data.dev
}
# tolerations of pod match nodes with corresponding taints
tolerations: []
# admissionService exposes validation to cluster. This service
# is over https and certs are auto-generated based on serviceName.
admissionService:
# name of the service (auto-generated)
name:
# port service exposes
port: 443
targetPort: 8443
# admissionCA can be used to override the Certs that will be used
# to sign the keys used by the admsission operator.
admissionCA:
# A base64 encoded PEM format certificate
cert:
# A base64 encoded PEM format private key
key:
# Expiry time of CA in days for generated certs
expiration: 365
# secret with client certs mounted within the admission controller.
admissionSecret:
# name of the secret (auto-generated)
name:
# PEM format certificate (auto-generated)
# override via --set-file
cert:
# PEM format certificate (auto-generated)
# override via --set-file
key:
# Default values for couchbase-cluster
cluster:
# name of the cluster. defaults to name of chart release
name:
# image is the base couchbase image and version of the couchbase cluster
image: "couchbase/server:6.6.0"
# guarantees that the pods in the same cluster are unable to be scheduled on the same node
antiAffinity: false
upgradeStrategy: RollingUpgrade
hibernate: false
hibernationStrategy: Immediate
recoveryPolicy: PrioritizeDataIntegrity
security:
# username of the cluster admin.
username: Administrator
# password of the cluster admin.
# auto-generated when empty
password: my-password
# adminSecret is name of secret to use instead of using
# the default secret with username and password specified above
adminSecret:
rbac:
managed: true
ldap: {}
# networking options
networking:
# Option to expose admin console
exposeAdminConsole: true
# Option to expose admin console
adminConsoleServices:
- data
# Specific services to use when exposing ui
exposedFeatures:
- client
- xdcr
# Defines how the admin console service is exposed.
# Allowed values are NodePort and LoadBalancer.
# If this field is LoadBalancer then you must also define a spec.dns.domain.
adminConsoleServiceType: NodePort
# Defines how the per Couchbase node ports are exposed.
# Allowed values are NodePort and LoadBalancer.
# If this field is LoadBalancer then you must also define a spec.dns.domain.
exposedFeatureServiceType: NodePort
# This controls routing to external services.
exposedFeatureTrafficPolicy: Local
# This field allows the definition of a base Service resource.
# When set, the Operator will generate a service that exposes Couchbase services per-pod.
exposedFeatureServiceTemplate: {}
# The dynamic DNS configuration to use when exposing services
dns:
# Custom map of annotations to be added to console and per-pod (exposed feature) services
serviceAnnotations: {}
# The Couchbase cluster tls configuration (auto-generated)
tls:
# The underlying network platform in use (when set, must be 'Istio')
networkPlatform:
# The retention period that log volumes are kept for after their associated pods have been deleted.
logRetentionTime: 604800s
# The maximum number of log volumes that can be kept after their associated pods have been deleted.
logRetentionCount: 20
# xdcr defines remote clusters and replications to them.
xdcr:
# managed defines whether the Operator should manage XDCR remote clusters
managed: false
# remoteClusters contains references to any remote clusters to replicate to
remoteClusters:
# backup defines values for automated backup.
backup:
# managed determines whether Automated Backup is enabled
managed: true
# image used by the Operator to perform backup or restore
image: couchbase/operator-backup:6.6.0-100
# optional service account to use when performing backups
# service account will be created if it does not exist
serviceAccountName:
# defines integration with third party monitoring sofware
monitoring:
prometheus:
# defines whether Prometheus metric collection is enabled
enabled: false
# image used by the Operator to perform metric collection
# (injected as a "sidecar" in each Couchbase Server Pod)
image: couchbase/exporter:1.0.3
# Optional Kubernetes secret that clients use to access Prometheus metrics
authorizationSecret:
# Cluster wide settings for nodes and services
cluster:
# The amount of memory that should be allocated to the data service
dataServiceMemoryQuota: 1Gi
# The amount of memory that should be allocated to the index service
indexServiceMemoryQuota: 2Gi
# The amount of memory that should be allocated to the search service
searchServiceMemoryQuota: 512Mi
# The amount of memory that should be allocated to the eventing service
eventingServiceMemoryQuota: 256Mi
# The amount of memory that should be allocated to the analytics service
analyticsServiceMemoryQuota: 1Gi
# The index storage mode to use for secondary indexing
indexStorageSetting: memory_optimized
# Timeout that expires to trigger the auto failover.
autoFailoverTimeout: 120s
# The number of failover events we can tolerate
autoFailoverMaxCount: 3
# Whether to auto failover if disk issues are detected
autoFailoverOnDataDiskIssues: true
# How long to wait for transient errors before failing over a faulty disk
autoFailoverOnDataDiskIssuesTimePeriod: 120s
# configuration of global Couchbase auto-compaction settings.
autoCompaction:
# amount of fragmentation allowed in persistent database [2-100]
databaseFragmentationThreshold:
percent: 30
size: 1Gi
# amount of fragmentation allowed in persistent view files [2-100]
viewFragmentationThreshold:
percent: 30
size: 1Gi
# whether auto-compaction should be performed in parallel
parallelCompaction: false
# how frequently tombstones may be purged
tombstonePurgeInterval: 72h
# optional window when an auto-compaction may start (uncomment below)
timeWindow: {}
# start: 02:00
# end: 06:00
# abortCompactionOutsideWindow: true
# configuration of logging functionality
# for use in conjuction with logs persistent volume mount
logging:
# retention period that log volumes are kept after pods have been deleted
logRetentionTime: 604800s
# the maximum number of log volumes that can be kept after pods have been deleted
logRetentionCount: 20
# kubernetes security context applied to pods
securityContext:
# fsGroup of persistent volume mount
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
# cluster buckets
buckets:
# Managed defines whether buckets are managed by us or the clients.
managed: true
enablePreviewScaling: false
#serverGroups: []
servers:
# Name for the server configuration. It must be unique.
default:
size: 3
services:
- data
- index
# Defines whether Autoscale is permitted for this specific server configuration.
# Only `query` service is allowed to be defined unless `enablePreviewScaling` is set.
autoscaleEnabled: false
# volume claims to use for persistent storage
volumeMounts:
default: couchbase
data: couchbase
# ServerGroups define the set of availability zones we want to distribute pods over.
#serverGroups: []
# Pod defines the policy to create pod for the couchbase pod.
pod:
metadata:
labels:
target: couch.data
spec:
nodeSelector:
appTarget: couch.data.dev
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: target
operator: In
values:
- couch.data
topologyKey: kubernetes.io/hostname
query:
size: 1
services:
- query
## volume claims to use for persistent storage
volumeMounts: {}
## ServerGroups define the set of availability zones we want to distribute pods over.
#serverGroups: []
# Pod defines the policy to create pod for the couchbase pod.
pod:
metadata:
labels:
target: couch.query
spec:
nodeSelector:
appTarget: couch.data.dev
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: target
operator: In
values:
- couch.query
topologyKey: kubernetes.io/hostname
search:
size: 1
services:
- search
## volume claims to use for persistent storage
volumeMounts: {}
## Pod defines the policy to create pod for the couchbase pod.
pod:
metadata:
labels:
target: couch.query
spec:
nodeSelector:
appTarget: couch.data.dev
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: target
operator: In
values:
- couch.query
topologyKey: kubernetes.io/hostname
#analytics:
# size: 1
# services:
# - analytics
#
#eventing:
# size: 1
# services:
# - eventing
# VolumeClaimTemplates define the desired characteristics of a volume
# that can be requested and claimed by a pod.
volumeClaimTemplates:
- metadata:
name: couchbase
spec:
storageClassName: "default"
resources:
requests:
storage: 64Gi
- metadata:
name: store-data
spec:
storageClassName: "default"
resources:
requests:
storage: 64Gi
- metadata:
name: store-index
spec:
storageClassName: "default"
resources:
requests:
storage: 64Gi
# couchbase buckets to create
# disable default bucket creation by setting
# couchbaseBuckets.default: null
buckets:
# A bucket to create by default
default:
# Kind of bucket
kind: CouchbaseBucket
# Name of the bucket
name: semantic
# The amount of memory that should be allocated to the bucket
memoryQuota: 384Mi
# The number of bucket replicates
replicas: 1
# The priority when compared to other buckets
ioPriority: high
# The bucket eviction policy which determines behavior during expire and high mem usage
evictionPolicy: fullEviction
# The bucket's conflict resolution mechanism; which is to be used if a conflict occurs during Cross Data-Center Replication (XDCR). Sequence-based and timestamp-based mechanisms are supported.
conflictResolution: seqno
# The enable flush option denotes wether the data in the bucket can be flushed
enableFlush: true
# Enable Index replica specifies whether or not to enable view index replicas for this bucket.
enableIndexReplica: false
# data compression mode for the bucket to run in [off, passive, active]
compressionMode: "passive"
# CouchbaseBackups runs a job which preserves data into backups
backups: {}
#
# Uncomment to create an backup restore named 'my-restore'
#
# default-backup:
# name: my-backup
# strategy: full_incremental
# full:
# schedule: "0 3 * * 0"
# incremental:
# schedule: "0 3 * * 1-6"
# successfulJobsHistoryLimit: 1
# failedJobsHistoryLimit: 3
# backOffLimit: 2
# backupRetention: 24h
# logRetention: 24h
# size: 5Gi
# CouchbaseBackupRestore restores data from backups
backuprestores: {}
#
# Uncomment to create an backup restore named 'my-restore'
#
# default-restore:
# name: my-restore
# backup: my-backup
# repo: cb-example-2020-11-12T19_00_03
# start:
# int: 1
# str: oldest
# end:
# int: 1
# str: latest
# backOffLimit: 2
# logRetention: 24h
# RBAC users to create
# (requires couchbase server 6.5.0 and higher)
users: {}
#
# Uncomment to create an example user named 'developer'
#
# developer:
# # password to use for user authentication
# # (alternatively use authSecret)
# password: password
# # optional secret to use containing user password
# authSecret:
# # domain of user authentication
# authDomain: local
# # roles attributed to group
# roles:
# - name: bucket_admin
# bucket: default
# TLS Certs that will be used to encrypt traffic between operator and couchbase
tls:
# enable to auto create certs
generate: false
# Expiry time of CA in days for generated certs
expiration: 365
# This field defines whether node-to-node encryption is enabled.
# Must be either 'All' or 'ControlPlaneOnly'.
# If not specified, data between Couchbase Server nodes is not encrypted.
nodeToNodeEncryption:
# syncGateway configuration
syncGateway:
# name of the sync gatway pod.
# defaults to name of chart
name:
# database config
config:
logging:
console:
enabled: true
log_level: "debug"
log_keys:
- "*"
# databases is a list containing
# bucket replication configs
databases:
db:
# bucket replicated to sync gateway
bucket: default
# guest user config
users:
GUEST:
# disable creation of guest user
disabled: false
# channels guest user may access.
# defaults to all channels
admin_channels: ["*"]
# server to connect db to, defaults to cluster server
server:
# username of db admin, defaults to cluster admin username
username:
# password of db admin, defaults to cluster admin password
password:
allow_conflicts: false
revs_limit: 20
enable_shared_bucket_access: true
# optional ca.cert for tls connection
# (auto-generated when tls.generate true)
cacert:
# Type of service to use for exposing Sync Gateway
# Set as empty string to prevent service creation
exposeServiceType: ClusterIP
# image of the sync gateway container
image:
repository: couchbase/sync-gateway
tag: 2.8.0-enterprise
imagePullPolicy: IfNotPresent
# Optional secret to use with prepoulated database config
configSecret:
# coredns service config to be applied to
# pods for cross-cluster deployments
coredns:
# name kubernete service which exposes nameserver (ie coredns)
service:
# search list for host-name lookup
searches:
- default.svc.cluster.local
- svc.cluster.local
- cluster.local
@TheHunter
Copy link
Author

TheHunter commented Jan 21, 2021

In order to test this file, please change the nodeSelector value in accordance with the labels of your Node

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment